1. Mysql数据库中,设置id为自动增加,向数据库中插入数据时,SQL语句怎么写
在建立表的时候设置id为自动增长的 [id] [int] IDENTITY (1, 1)
SQL语句是insert into user(name,passwd) values (name ,passwd)。新增一条数据 id 就会自动加1
INSERT INTO是sql数据库中的语句,可以用于向表格中插入新的行。
(1)sql中分配id扩展阅读
(1) 数据记录筛选:
sql="select * from 数据表 where字段名=字段值 order by字段名[desc]"(按某个字段值降序排列。默认升序ASC)
sql="select * from 数据表 where字段名like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 数据表 where字段名=字段值 order by 字段名 [desc]"
sql="select top 10 * from 数据表 order by 字段名 [desc]"
sql="select * from 数据表 where字段名in ('值1','值2','值3')"
sql="select * from 数据表 where字段名between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 ?? 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 ?) values (值1,值2,值3 ?)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统计的值,其它函数运用同上。
查询去除重复值:select distinct * from table1
(6) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) ?? )
(7) 单列求和:
SELECT SUM(字段名) FROM 数据表
2. 请问一下:有一个表,根据它的id分组查询(分组后的每个id)前4条数据,怎样写sql语句
首先,按照id分组后的前4条数据是根据什么字段排序取的前4条数据,假设情况如下。表有两列,一列为id列,一列为排序列,假设为score。即表如下:
id score
1 99
1 98
1 97
1 96
1 95
2 100
2 87
2 96
……
你所要的结果应该是这样的?取按照课程号分组后,取每个课程号的前4个高分的情况。
select t.id,t.score from (select id,score,rank() over (partition by id order by score desc) ranks from 表) t where t.ranks<=4;
以上语句在比如数分数为第三名的有两个同学,那么就会显示两条数据,而不是一条。如果没有这样的要求,可以使用rownum实现。
3. SQL中用Group by 分组 假如有个字段ID,值1~10,想分成3组(1,3,7)(2,4,5,6)(8,9,10)
select id,sum(case when id in (1,3,7) then 1 else 0 end),
sum(case when id in (2,4,5,6) then 1 else 0 end),
sum(case when id in (8,9,10) then 1 else 0 end)
from tb group by id
这个意思?
-----补充-----
select num,sum(case when id in (1,3,7) then num else 0 end),
sum(case when num in (2,4,5,6) then num else 0 end),
sum(case when num in (8,9,10) then num else 0 end)
from tb group by num
试验下这个
4. SQL中如何平均分配,还请大家帮忙,万分感谢 SQL语句如何写,谢谢了
从cati_group表建立游标,条件是没有分配电话号码的人,并进行循环;
从telephone_GMI20110602表中取第一条没有分配的电话记录,修改状态和id字段;telephone_GMI20110602表成功后,根据projectid回写cati_group表。
代码中要有错误判断和事务处理,用存储过程实现。
5. 在sql中,自动生成ID号
CREATE SEQUENCE customer_sequence
START WITH 10000
INCREMENT BY 1;
INCREMENT BY 1;
CREATE TABLE customer(
customer_id NUMBER(5) PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR2(20),
major VARCHAR2(30),
current_credits NUMBER(3));
INSERT INTO students(customer_id,first_name,last_name,major,current_credits)
VALUES(student_sequence.NEXTVAL,'Scott','Smith','Computer Science',11);
6. sql根据id自动分表存储
我感觉你这个需求使用分区表来实现会更好一些
但如果你要使用你的方法也是可以的
create table x_a(id int,name varchar(200));
go
create procere changetablename
@oldtable as nvarchar(200),
@newtable as nvarchar(200)
as
declare @sqlstr varchar(2000),@cretri varchar(8000)
begin
exec sp_rename @oldtable,@newtable
set @sqlstr='create table '+@oldtable+'(id int,name varchar(200))'
exec(@sqlstr)
drop trigger t_x_a_id;
set @cretri='create trigger t_x_a_id
on x_a
for insert
as
declare @idnum int,@tbid int,@sqlstr varchar(200),@tbn varchar(200);
select @idnum=id%10,@tbid=round(id/10,0) from inserted;
set @sqlstr='+'''x_a'''+'+cast(@tbid as varchar(20));
set @tbn='+'''x_a'''+';
if @idnum=0
begin
exec dbo.changetablename @tbn,@sqlstr;
end'
exec(@cretri)
end
go
create trigger t_x_a_id
on x_a
for insert
as
declare @idnum int,@tbid int,@sqlstr varchar(200),@tbn varchar(200);
select @idnum=id%10,@tbid=round(id/10,0) from inserted;
set @sqlstr='x_a'+cast(@tbid as varchar(20));
set @tbn='x_a';
if @idnum=0
begin
exec dbo.changetablename @tbn,@sqlstr;
end
go