sql查詢語句大全
一、基礎 1、說明:創建數據庫 Create DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql server --- 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*' --- 開始 備份 BACKUP DATABASE pubs TO testBack 4、說明:創建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根據已有的表創建新表: A:create table tab_new like tab_old (使用舊表創建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、說明:刪除新表 drop table tabname 6、說明:增加一個列 Alter table tabname add column col type 注:列增加后將不能刪除。
DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。 7、說明:添加主鍵: Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col) 8、說明:創建索引:create [unique] index idxname on tabname(col….) 刪除索引:drop index idxname on tabname 注:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement 刪除視圖:drop view viewname 10、說明:幾個簡單的基本的sql語句 選擇:select * from table1 where 范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1 where 范圍 更新:update table1 set field1=value1 where 范圍 查找:select * from table1 where field1 like '%value1%' (所有包含'value1'這個模式的字符串)---like的語法很精妙,查資料! 排序:select * from table1 order by field1,field2 [desc] 總數:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1[separator] 11、說明:幾個高級查詢運算詞 A: UNION 運算符 UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。
兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。 B: EXCEPT 運算符 EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。 C: INTERSECT 運算符 INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。 注:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接 A、left outer join: 左外連接(左連接):結果集既包括連接表的匹配行,也包括左連接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。 [編輯本段]二、提升 1、說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a 2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用) insert into b(a, b, c) select d,e,f from b in '具體數據庫' where 條件 例子:..from b in '"&*h("."&"\*" &"' where.. 4、說明:子查詢(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3) 5、說明:顯示文章、提交人和最后回復時間 select *,*me,*e from table a,(select max(adddate) adddate from table where *=*) b 6、說明:外連接查詢(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7、說明:在線視圖查詢(表名1:a select * from (Select a,b,c FROM a) T where t.a > 1; 8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 數值1 and 數值2 9、說明:in 的使用方法 select * from table1 where a [not] in ('值1','值2','值4','值6') 10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息 delete from table1 where not exists ( select * from table2 where *1=*1 11、說明:四表聯查問題: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c 。
SQL數據庫查詢語句,包括增,刪,改,查等所有語句詳細
一、增:有4種方法 1.使用insert插入單行數據: 語法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性別,出生日期) values ('開心朋朋','男','1980/6/15') 注意:into可以省略;列名列值用逗號分開;列值用單引號因上;如果省略表名,將依次插入所有列 2.使用insert select語句將現有表中的數據添加到已有的新表中 語法:insert into <已有的新表> <列名> select <原表列名> from <原表名> 例:insert into tongxunlu ('姓名','地址','電子郵件') select name,address,email from Strdents 注意:into不可省略;查詢得到的數據個數、順序、數據類型等,必須與插入的項保持一致 3.使用select into語句將現有表中的數據添加到新建表中 語法:select <新建表列名> into <新建表名> from <源表名> 例:select name,address,email into tongxunlu from strdents 注意:新表是在執行查詢語句的時候創建的,不能夠預先存在 在新表中插入標識列(關鍵字'identity'): 語法:select identity (數據類型,標識種子,標識增長量) AS 列名 into 新表 from 原表名 例:select identity(int,1,1) as 標識列,dengluid,password into tongxunlu from Struents 注意:關鍵字'identity' 4.使用union關鍵字合并數據進行插入多行 語法:insert <表名> <列名> select <列值> tnion select <列值> 例:insert Students (姓名,性別,出生日期) select '開心朋朋','男','1980/6/15' union(union表示下一行) select '藍色小明','男','19**/**/**' 注意:插入的列值必須和插入的列名個數、順序、數據類型一致二、刪:有2中方法 1.使用delete刪除數據某些數據 語法:delete from <表名> [where <刪除條件>] 例:delete from a where name='開心朋朋'(刪除表a中列值為開心朋朋的行) 注意:刪除整行不是刪除單個字段,所以在delete后面不能出現字段名 2.使用truncate table 刪除整個表的數據 語法:truncate table <表名> 例:truncate table tongxunlu 注意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用語有外建約束引用的表三、改 使用update更新修改數據 語法:update <表名> set <列名=更新值> [where <更新條件>] 例:update tongxunlu set 年齡=18 where 姓名='藍色小名' 注意:set后面可以緊隨多個數據列的更新值;where子句是可選的,用來限制條件,如果不選則整個表的所有行都被更新四、查 1.普通查詢 語法:select <列名> from <表名> [where <查詢條件表達試>] [order by <排序的列名>[asc或desc]] 1).查詢所有數據行和列 例:select * from a 說明:查詢a表中所有行和列 2).查詢部分行列--條件查詢 例:select i,j,k from a where f=5 說明:查詢表a中f=5的所有行,并顯示i,j,k3列 3).在查詢中使用AS更改列名 例:select name as 姓名 from a whrer xingbie='男' 說明:查詢a表中性別為男的所有行,顯示name列,并將name列改名為(姓名)顯示 4).查詢空行 例:select name from a where email is null 說明:查詢表a中email為空的所有行,并顯示name列;SQL語句中用is null或者is not null來判斷是否為空行 5).在查詢中使用常量 例:select name '唐山' as 地址 from a 說明:查詢表a,顯示name列,并添加地址列,其列值都為'唐山' 6).查詢返回限制行數(關鍵字:top percent) 例1:select top 6 name from a 說明:查詢表a,顯示列name的前6行,top為關鍵字 例2:select top 60 percent name from a 說明:查詢表a,顯示列name的60%,percent為關鍵字 7).查詢排序(關鍵字:order by , asc , desc) 例:select name from a where chengji>=60 order by desc 說明:查詢表中chengji大于等于60的所有行,并按降序顯示name列;默認為ASC升序 2.模糊查詢 1).使用like進行模糊查詢 注意:like運算副只用語字符串,所以僅與char和varchar數據類型聯合使用 例:select * from a where name like '趙%' 說明:查詢顯示表a中,name字段第一個字為趙的記錄 2).使用between在某個范圍內進行查詢 例:select * from a where nianling between 18 and 20 說明:查詢顯示表a中nianling在18到20之間的記錄 3).使用in在列舉值內進行查詢 例:select name from a where address in ('北京','上海','唐山') 說明:查詢表a中address值為北京或者上海或者唐山的記錄,顯示name字段 3.分組查詢 1).使用group by進行分組查詢 例:select studentID as 學員編號, AVG(score) as 平均成績 (注釋:這里的score是列名) from score (注釋:這里的score是表名) group by studentID 說明:在表score中查詢,按strdentID字段分組,顯示strdentID字段和score字段的平均值;select語句中只允許被分組的列和為每個分組返回的一個值的表達試,例如用一個列名作為參數的聚合函數 2).使用having子句進行分組篩選 例:select studentID as 學員編號, AVG(score) as 平均成績 (注釋:這里的score是列名) from score (注釋:這里的score是表名) group by studentID having count(score)>1 說明:接上面例子,顯示分組后count(score)>1的行,由于where只能在沒有分組時使用,分組后只能使用having來限制條件,。
SQL語句查詢問題有三張表,結構分別是這樣的{服務名,A}{服務名,
TrySELECT t.服務名, COUNT(tab1.A),COUNT(tab2.B),COUNT(tab3.C)FROM (SELECT 服務名 FROM tab1 UNION SELECT 服務名 FROM tab2 UNION SELECT 服務名 FROM tab3) t, tab1, tab2, tab3WHERE t.服務名 = tab1.服務名AND t.服務名 = tab2.服務名AND t.服務名 = tab3.服務名 GROUP BY t.服務名 如果上面這個有問題,下面這個肯定可以,只是效率應該很惡心SELECT t.服務名, (SELECT COUNT(tab1.A) FROM tab1 WHERE t.服務名 = tab1.服務名),(SELECT COUNT(tab2.B) FROM tab2 WHERE t.服務名 = tab2.服務名),(SELECT COUNT(tab3.C) FROM tab3 WHERE t.服務名 = tab3.服務名)FROM (SELECT 服務名 FROM tab1 UNION SELECT 服務名 FROM tab2 UNION SELECT 服務名 FROM tab3) tGROUP BY t.服務名。
數據庫 SQL 查詢語句
以下語句 ,在SQL Server 中測試通過,如果你用的別的數據庫,可能需要做其他調整
查詢女職工平均工資不低于600元的車間名稱。
select DNAME
from DEPT
where * in ( select DNO from EMP where SEX = '女' group by DNO having avg(SALARY) >= 600 )
查詢各車間中平均工資最低的車間編號
select top 1 DNO
from EMP
group by DNO
order by avg(SALARY)