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