1. sql語句大全
sql語句最精粹的是其查詢語句,基本語句就那麼幾個,但是要用得好得好好研究下了
http://ke..com/view/3146511.htm 看看網路的介紹吧
2. SQL語句大全
SQL語句大全
一、基礎
1、說明:創建資料庫
Create DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
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 '"&Server.MapPath("."&"\data.mdb" &"' 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 a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) 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 table1.field1=table2.field1
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
[編輯本段]三、技巧
1、1=1,1=2的使用,在SQL語句組合時用的較多
「where 1=1」 是表示選擇全部 「where 1=2」全部不選,
如:
if @strWhere !='
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
我們可以直接寫成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
2、收縮資料庫
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收縮數據和日誌
DBCC SHRINKDB
DBCC SHRINKFILE
3、壓縮資料庫
dbcc shrinkdatabase(dbname)
4、轉移資料庫給新用戶以已存在用戶許可權
exec sp_change_users_login 'update_one','newname','oldname'
go
5、檢查備份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修復資料庫
Alter DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
Alter DATABASE [dvbbs] SET MULTI_USER
GO
7、日誌清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的資料庫名
Select @LogicalFileName = 'tablename_log', -- 日誌文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想設定的日誌文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
Select @OriginalSize = size
FROM sysfiles
Where name = @LogicalFileName
Select 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Create TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
Select @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
Select @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
Insert DummyTrans VALUES ('Fill Log')
Delete DummyTrans
Select @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
Select 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Drop TABLE DummyTrans
SET NOCOUNT OFF
8、說明:更改某個表
exec sp_changeobjectowner 'tablename','dbo'
9、存儲更改全部表
Create PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
10、SQL SERVER中直接循環寫入數據
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
3. sql語句大全
sp_helpdb ----------查本伺服器中所有資料庫 可跟庫名
例:sp_helpdb 庫名
-------------------------------------------------------------
sp_databases -------------查看本伺服器中可用的資料庫
--------------------------------------------------------------------
sp_helpfile -------------------查看當前工作著的資料庫
-----------------------------------------------------------
sp_helpfilegroup ---------------查看當前工作著的組的信息。可加參數,跟組名
例:sp_helpdb 庫名
----------------------------------------------------------------
sp_renamedb -----------改資料庫名
例:sp_renamedb 舊庫名,新庫名
----------------------------------------------------------------
select groupname from sysfilegroups where status=24
---------查看文件組 =8是查只讀文件組 =16是查默認文件組 =24是查即只讀又默認
---------------------------------------------------------------------------
sp_dboption ----------修改資料庫選項值
例:sp_dboption 庫名 選項 值
值決定真假 一般用:true/faule 或off/on表示
選項一般常用為:use only(資料庫擁有者)single user(單一用戶)read only(只讀)
--------------------------------------------------------------------------
dbcc shrinkdatabase ---------收縮資料庫
例:dbcc shrinkdatabase (庫名,10)
收縮庫,剩餘空間保留10%,後面如果不加notruncate,則釋放空間操作系統,
加truncateonly,歸還空間給操作系統,但忽略所給的百分比數值。
----------------------------------------------------------------------
dbcc shrinkfile ---------收縮文件
用法與ddcc shrinkdatabase相同。
----------------------------------------------------------------------
alter database ---------------修改資料庫
用法:這是起始句,告訴要做的是修改資料庫,然後再接要做什麼工作。每次只做一項工作
alter database 庫名
add file 文件名....to filegroup 文件組名
----------------增加庫文件,格式與建庫時括弧里指定大小時的格式一樣
add log file 文件名 -------------增加日誌文件
remove file 文件名 ---------刪除庫內的文件
add filegroup 文件組名 -----------增加一個文件組
modify file 文件名 -------------修改文件屬性
modify filegroup 組名 ------------修改文件組屬性
---------------------------------------------------------------------------
drop database --------------刪除資料庫
例:drop database 庫名1,庫名2 ---------可同時刪除兩個庫
------------------------------------------------------------------------
create table 表名
(列名 類型,
列名 類型) -------------------建立表
--------------------------------------------------------------------
select * from 表名 ---------查詢表結構
--------------------------------------------------------------------
select @@dbts ----------查詢最後一次操作
--------------------------------------------------------------------
insert into 表名
(列名,列名)
values (變數,變數.....) ------------向表中插入數據
如省略列名,則必須把每列的變數填全,不可缺少。可以省略 into
--------------------------------------------------------------------
sp_addtype 自定義類型名 系統類型名 -------用戶自定義類型
--------------------------------------------------------------------
sp_droptype 自定義類型名 -----------刪除自定義類型
如有資料庫正在使用該自定義類型,則不能刪除
--------------------------------------------------------------------
alter table ---------修改表結構
用法: alter table 表名
alter column 列名 類型 ---------修改列的類型
drop column 列名 --------刪除列
add (column) 列名 --------增加列,實際用時不加 column
-----------------------------------------------------------------
sp_help -------------查看資料庫中對象信息
用法: sp_help 表名 ---------------查表的信息
或 sp_help 庫名 --------------查庫信息
後面可以跟庫名或者表名,是查資料庫或者表的信息
-----------------------------------------------------------------
sp_spaceused --------查看對象佔用的空間信息
用法: sp_spaceused ----------查當前庫佔用空間信息
或 sp_spaceused 表名 ----------查指定表佔用空間信息
後面可以加表名查看錶占空間信息。如不加,則查看當前資料庫。
------------------------------------------------------------------
sp_depends ------------查看對象的相關性
用法: sp_depends 表名 -----------後面加表名
------------------------------------------------------------------
sp_rename ---------------重新命名
用法: sp_rename 舊表名,新表名 ---------改表名
或 sp_rename '表名.舊列名','新列名' 'column' -------修改列名
--------------------------------------------------------------------
create index --------------創建索引
用法: create index 索引名 on 表名 (列名) ------創建索引
或: create unique clustered index 索引名 on 表名 (列名)
------創建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引
---非簇集索引用:nonclustered
----------------------------------------------------------------------
select top ---------查表中前幾行
用法: select top 3 * from 表名 -------查表中前三行
或: select top 10 percent * from 表名 -------顯示表中前10%數據
------------加入percent是百分比的意思。只以大於的最小整數,無小數
----------------------------------------------------------------------
select 列名,列名,列名 from 表名 -------顯示表中特定的列
----------------------------------------------------------------------
select *,列名 from 表名 ----------查詢表中所有,後面再加一列
----------------------------------------------------------------------
select distinct ----------查詢不重復數據 distinct用於去掉重復數據
用法: select distinct * from 表名 ---------查表中不重復數據
或: select distinct * into 新表名 from 舊表名 ------查舊表中不重復數據同時生成新表
-------------------------------------------------------------------------------------
select 列名+列名 from 表名 -------允許有計算式出現,顯示無列名的計算結果
如想加列名,則: select 列名+列名 as 新列名 from 表名
-------------------------------------------------------------------------
select 年齡,聯系電話,cast (年齡 as varchar(2))+聯系電話 from 表名
--------把整型數據年齡轉化為字元型與字元型數據聯系電話相加
----------------------------------------------------------------------------
ctrl+o(字母O) --------清空數據。空值與別的數據運算結果為空
----------------------------------------------------------------------------
select 原始列名 別名 from 表名
select 原始列名 as 別名 from 表名
select 別名=原始列名 from 表名
--------指定別名的三種方法。非法符號可''或[]引起來,不得直接使用。
----------------------------------------------------------------------------
select * from 表名
where 年齡 between 20 and 30 ---------顯示年齡在20到30之間的人
-------between是從條件一到條件二之間的限制
-----------------------------------------------------------------------
select * from 表名
where 年齡 in (20,21,22) ---------顯示年齡為20、21、22的人
--------in是限制在這些條件內的,是顯示一個取值范圍
-----------------------------------------------------------------------
select * from 表名
where 聯系電話 like '[1-3]%' --------查電話是1-3開頭的人
--------like是像這些條件的語句,能用通配符:%、_、[]、[^]
--------意思分別代表:所有字元、一個字元、一位上可取值、一位上不可取值
----------------------------------------------------------------------
select * from 表名
where 姓名 like '[e[]%'
or 姓名 like '%e]'
escape 'e' ------------顯示以『[』開頭或以『]』結尾的所有數據,中間有不顯示
----------escape ''是指定通配符
-----------------------------------------------------------------------------
order by ---------給數據排序
用法: select * from 表名
order by 年齡 -----------排序顯示年齡。默認為升序(asc)要降序必須加desc
------------------------------------------------------------------------
select distinct top 3 from 表名
order by 年齡 desc --------顯示最大的三種年齡
-------------------------------------------------------------------------
select * from 表名
where 年齡 in (select distinct top 3 年齡 from 表名 order by 年齡)
order by 年齡 -----------顯示年齡最小的所有人,並排序
-------------------------------------------------------------------------
select 姓名,
case
when MCSE成績 >=80 and MCSE成績<=100
then '考的不錯'
when MCSE成績 >=60 and MCSE成績<80
then '考的一般'
when MCSE成績 >=0 and MCSE成績<60
then '不及格'
when MCSE成績 is null
then '這小子沒考試'
else '異常數據'
end
MCSE成績
from 表名
-----------判斷語句 null是空值的意思,不能用等號連接,只能用is
-----------case到end為一列里的判斷,case在這里是取值,結果用於輸出,不顯示原值
-----------------------------------------------------------------------------
select 列名1,
case 列名2
when 1 then '男生'
when 0 then '女生'
else '未知'
end
from 表名
--------這里case取列名,是用於這一列每項取值比較,在這里列名2用的是bit型數據
-------------------------------------------------------------------------
select * into 庫1.表1 from 庫2.表2
-----------把庫2中表2移到庫1中
------------------------------------------------------------------------
數據維護三個命令:
insert ---------向表中插入數據
update ---------修改表中的數據
delete ---------刪除表中的數據
------------------------------------------------------------------------
insert into 表名 -----------(into可有可無)
(列1,列2,列3,列4) -----------表的原始列,用括弧括起來
values ----------有這條命令只能插入一條數據
(數1,數2,數3,數4) ----------插入的數值
---------可以省略原始列清單,但必須把所有列都賦值
------------------------------------------------------------------------
insert into 表1
(列1,列2,列3,列4)
select * from 表2 where sex=1
----------將表2中sex列等於1的數據信息插入表1中
-------------------------------------------------------------------------
update 表名
set 姓名='丁一'
where 姓名='李一' ----------把表中姓名叫李一的改為丁一。
------------where後面跟定位的列與值
-------------------------------------------------------------------------
update 表名
set 學號=14,
姓名=陳強
where 學號=1 ------------把學號為1的同學改為學號14,姓名陳強
-----------------------------------------------------------------------
update 表名
set 學號=年齡+7,
姓名='陳一強',
年齡=29
where 學號=14
-------把學號為14的同學資料改為年齡加七賦給學號姓名改為陳一強,年齡改為29
-------如果沒用where定位,則修改全部值
------------------------------------------------------------------------
delete 表名
where 學號>30 ---------把學號大於30的資料刪除
--------如不指定條件,則刪表內所有數據。這是記錄日誌文件的操作
----------------------------------------------------------------
truncate table 表名
-------清空表。不記錄日誌文件的操作。
--------------------------------------------------------------------
create view 圖名 -------------新建視圖
用法: create view 圖名
as
select 列名 from 表名
------------------------------------------------------------------------------
syscomments ------------這個表存著視圖代碼的信息
------------------------------------------------------------------------------
alter view 圖名
with encryption
as
select 列名 from 表名 -----------用with encyption語句給視圖原代碼加密
-------------不可恢復,除非保留源代碼
------------------------------------------------------------------------------
sp_helptext 圖名 -----------查看視圖源代碼
-----------------------------------------------------------------------------
select text from syscomments
where id =(select id from sysobjects where name ='圖名')
---------查視圖的代碼
-----------------------------------------------------------------------------
create view 圖名
as
select * from 源圖名 ------------基於源圖創建新視圖
-----------------------------------------------------------------------------
create view 圖名
as
select 列1 as 新列1,列2 新列2,列3=新列3 ---------起別名的三種方法
from 表名 -----------在新視圖中為列起別名,則所見的是新起的別名
-----------------------------------------------------------------------------
sp_depends 表名 -----------查該表的相關性,有多少表、圖與之相關。
-------------------------------------------------------------------------------
create view 圖名
select * from 表名
where 年齡<20
with check option ---------強制插入數據符合年齡小於20的條件,加在where後面
-----------是約束insert和update語句的
-------------------------------------------------------------------------------
select 男公民.姓名,女公民.姓名 from 男公民,女公民
where 男公民.配偶編號=女公民.編號
------------查結婚男女。較原始的語法,後被下列語法取代
或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶編號=女公民.編號
-------新的形式,在join之前省略了inner語句。
--可用左連接(*=或left outer join)右連接(=*或right outer join)全連接(full outer)
----where不能做全連接,但可以做連接的約束
select * from 男公民
where 配偶編號 in (select 編號 from 女公民)
--------嵌套查詢,查配偶編號在女公民表中編號列中出現過的
-------------------------------------------------------------------------------
select distinct 客戶表.*
from (select * from 訂單表 where 訂單年份=2004) as d,客戶表
where d.客戶號=客戶表.客戶號
-----子查詢放在from身後,也可以放在where身後
----------------------------------------------------------------------------
select (select 子查詢語句) from 表名
-------這種格式要求子查詢查出的必須是唯一的數據
----------------------------------------------------------------------------
select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a,員工表 as b
where a.部門領導編號=b.員工編號
select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a join 員工表 as b on a.部門領導編號=b.員工編號
select a.員工編號,a.員工姓名,
(select 員工姓名 from 員工表 as b where a.部門領導編號=b.員工編號) as 領導姓名
from 員工表 as a
---------三種查詢員工領導的方法
------如果裡面總經理領導編號是這空的,這種查詢方法不顯示空值。如要顯示,則用左連接
-----------------------------------------------------------------------------
sp_tables -----------查當前資料庫中的所有表
------------------------------------------------------------------------------
select * from 男公民
union ------------聯合。自動升序排序,並去掉重復語句
select * from 女公民
-----查詢結果是男公民和女公民表的總集。如果不去掉重復的,則用 union all
-----如果要降序排,則要在最後一個select語句後面加上order by 列名 desc
-----用union查詢時,結果集內列數必須相同,並且數據類型必須相互兼容
-----多表聯合查詢加order by時,後面必須跟第一個結果集的列名
------------------------------------------------------------------------------
select top 2 成績 from 表
order by 成績 desc ---------查前兩種最好成績
-------------------------------------------------------------------------------
select top 2 with ties 成績 from 表
order by 成績 desc ---------查前兩種最好成績所有人的信息
-------------------------------------------------------------------------------
select top 1 a.成績
from (select distinct top 3 成績 from 表 order by 成績 desc) as a
order by 成績 ---------嵌套查詢,查考成績第三名的值
-------------------------------------------------------------------------------
select max (SQL成績),min (MCSE成績) from 表
-----查SQL最高分和MCSE最低分
-----常用的函數:max(最大),min(最小),sum(總和),avg(平均值)
-----count(*)統計表內數據的行數。count(列名)統計表內列里非空值的行數
-------------------------------------------------------------------------------
select count(*) from 表名 --------查表內有多少行數據
-------------------------------------------------------------------------------
select count(列名) from 表名 ------------查表內列中有多少行非空數據
-------------------------------------------------------------------------------
select min(成績),max(成績),sum(成績),avg(成績),count(*),count(成績) from 表名
--------返回顯示數據只有一行。中間不能加列名,如想加,可以在後面加列。
-------------------------------------------------------------------------------
group by ---------分組統計,後面跟的是列名
---------上面select檢索多少原始列,後面group by就要跟多少原始列
例: select 性別,avg(年齡) from 表名
group by 性別 -------統計性別的平均年齡
-------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by 年齡 -------查年齡小於23歲的各年齡段平均年齡
-------或也可用如下方法:
select 年齡,avg(年齡) from 表名
group by 年齡
having<23 -------having是統計之後的條件,where是統計之前的條件
--------having是做為group by的子句出現的,不能單獨使用
------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by all 年齡 -------顯示所有年齡,但只統計年齡小於23的,大於23的顯示空值
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with cube -------多維統計,按不同品牌不同顏色統計,也是group by的子句
--------其結果出現把各品牌統計一下,最後再統計所有品牌、所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with rollup ------只按第一列統計,也是group by的子句
---------即統計品牌各顏色和所有品牌所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
compute sum(價格),avg(價格) ----------出現兩個結果集
------------查原始列,另外統計所有的總和與平均值
-------------------------------------------------------------------------------
select 品牌,sum(價格),avg(價格) from 汽車表
group by 品牌 ------只對汽車品牌進行統計。進行分組的列不一定用來統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
order by 品牌
compute sum(價格),avg(價格) by 品牌
--------按品牌分組統計。分別顯示品牌各款,然後再顯示函數計算值
------------------------------------------------------------------------------
exists --------存在。相當於一個判斷開關。說對了執行,說錯了放棄
用法: select * form 表名
where exists (select * from 表名 where 性別='男')
------如果存在性別為男的,執行查詢。如果不存在,則不執行命令。
-----------------------------------------------------------------------------
數據完整性:1.實體完整性----用unique(唯一)或主鍵控制,數據不能重復
2.值域完整性----用check控制。控制的是列中不能有非法數據
3.引用完整性----一列的取值完全依賴於前一列時,用這個。
4.用戶自定義完整性
------------------------------------------------------------------------------
create table 表名
(列1 int primary key, --------設置列級主鍵,緊跟在設置列的後面。
列2 int)
-------------------------------------------------------------------------------
create table 表名
(列1 int,
列2 int,
primary key (列1)) --------設置表級主鍵,放在建表語句的最後面。
-------------------------------------------------------------------------------
create table 表名
(列1 int constraint pk_表 primary key,
列2 int)
--------把列1設為主鍵,並且起名叫:pk_表。constraint是命名的命令
4. SQL資料庫語句大全
SQL資料庫語句大全:
1、選擇:select * from table1 where 范圍
2、插入:insert into table1(field1,field2) values(value1,value2)
3、刪除:delete from table1 where 范圍
4、更新:update table1 set field1=value1 where 范圍
5、排序:select * from table1 order by field1,field2 [desc]
6、總數:select count as totalcount from table1
7、求和:select sum(field1) as sumvalue from table1
5. 資料庫讀取前幾條記錄的SQL語句大全
取前10條記錄的sql語句寫法:
1、access:
select top (10) * from table1 where 1=1
2、db2:
select column from table where 1=1 fetch first 10 rows only
3、mysql:
select * from table1 where 1=1 limit 10
4、sql server:
讀取前10條:select top (10) * from table1 where 1=1
讀取後10條:select top (10) * from table1 order by id desc
5、oracle:
select * from table1 where rownum<=10
(5)sql代碼大全擴展閱讀
PL/SQL的流程式控制制語句,包括如下三類:
l 控制語句: IF語句
l 循環語句: LOOP語句, EXIT語句
l 順序語句: GOTO語句, NULL語句
條件語句:
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
END IF;
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
ELSE
其它語句
END IF;
IF <布爾表達式> THEN
PL/SQL 和 SQL語句
ELSIF < 其它布爾表達式> THEN
其它語句
ELSIF < 其它布爾表達式> THEN
其它語句
ELSE
其它語句
END IF;
6. sql 語句大全
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
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
註:索引是不可更改的,想更改必須刪除重新建。
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%』 ---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
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/cross (outer) join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
12、分組:Group by:
一張表,一旦分組 完成後,查詢後只能得到組相關的信息。
組相關的信息:(統計信息) count,sum,max,min,avg 分組的標准)
在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據
在selecte統計函數中的欄位,不能和普通的欄位放在一起;
13、對資料庫進行操作:
分離資料庫: sp_detach_db;附加資料庫:sp_attach_db 後接表明,附加需要完整的路徑名
14.如何修改資料庫的名稱:
sp_renamedb 'old_name', 'new_name'
7. SQL語句有哪幾種類型,各類型的主要作用是什麼
1、數據操縱語言(DML):用來操縱資料庫中數據的命令。包括:select、insert、update、delete。
2、數據定義語言(DDL):用來建立資料庫、資料庫對象和定義列的命令。包括:create、alter、drop。
3、數據控制語言(DCL):用來控制資料庫組件。
(7)sql代碼大全擴展閱讀:
SQL Server的特點如下:
1、具有真正的客戶機和伺服器體系結構。
2、圖形化用戶界面,使系統管理和資料庫管理更加直觀。
3、豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。
4、其完全集成,利用了NT的許多功能,如發送和接受消息等。
8. sql語句,有的全要
SELECT --從資料庫表中檢索數據行和列
INSERT --向資料庫表添加新數據行
DELETE --從資料庫表中刪除數據行
UPDATE --更新資料庫表中的數據
--數據定義
CREATE TABLE --創建一個資料庫表
DROP TABLE --從資料庫中刪除表
ALTER TABLE --修改資料庫表結構
CREATE VIEW --創建一個視圖
DROP VIEW --從資料庫中刪除視圖
CREATE INDEX --為資料庫表創建一個索引
DROP INDEX --從資料庫中刪除索引
CREATE PROCEDURE --創建一個存儲過程
DROP PROCEDURE --從資料庫中刪除存儲過程
CREATE TRIGGER --創建一個觸發器
DROP TRIGGER --從資料庫中刪除觸發器
CREATE SCHEMA --向資料庫添加一個新模式
DROP SCHEMA --從資料庫中刪除一個模式
CREATE DOMAIN --創建一個數據值域
ALTER DOMAIN --改變域定義
DROP DOMAIN --從資料庫中刪除一個域
--數據控制
GRANT --授予用戶訪問許可權
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問許可權
--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特徵
--程序化SQL
DECLARE --為查詢設定游標
EXPLAN --為查詢描述數據訪問計劃
OPEN --檢索查詢結果打開一個游標
FETCH --檢索一行查詢結果
CLOSE --關閉游標
PREPARE --為動態執行准備SQL 語句
EXECUTE --動態地執行SQL 語句
DESCRIBE --描述准備好的查詢
---局部變數
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局變數
---必須以@@開頭
--IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' --列印字元串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'
--CASE
use pangu
update employee
set e_wage =
case
when job_level = 』1』 then e_wage*1.08
when job_level = 』2』 then e_wage*1.07
when job_level = 』3』 then e_wage*1.06
else e_wage*1.05
end
--WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --列印變數x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --列印變數c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
--WAITFOR
--例 等待1 小時2 分零3 秒後才執行SELECT 語句
waitfor delay 』01:02:03』
select * from employee
--例 等到晚上11 點零8 分後才執行SELECT 語句
waitfor time 』23:08:00』
select * from employee
***SELECT***
select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范圍)
stockname like '[^F-M]%' --------- (^排除指定范圍)
--------- 只能在使用like關鍵字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
order by 1,2 --------- by列號
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查詢
--------- 除非能確保內層select只返回一個行的值,
--------- 否則應在外層where子句中用一個in限定符
select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重復
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 將表按行分組,指定列中有相同的值
having count(*) = 2 --------- having選定指定的組
select *
from table1, table2
where table1.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示
table1.id =* table2.id -------- 右外部連接
select stockname from table1
union [all] ----- union合並查詢結果集,all-保留重復行
select stockname from table2
***insert***
insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value為select語句
***update***
update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4
***delete***
delete from table_name where Stockid = 3
truncate table_name ----------- 刪除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全刪除表
***alter table*** --- 修改資料庫表結構
alter table database.owner.table_name add column_name char(2) null .....
sp_help table_name ---- 顯示表已有特徵
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ......... ----- 實現刪除列的方法(創建新表)
alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束
***function(/*常用函數*/)***
----統計函數----
AVG --求平均值
COUNT --統計數目
MAX --求最大值
MIN --求最小值
SUM --求和
--AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id
--MAX
--求工資最高的員工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)
--STDEV()
--STDEV()函數返回表達式中所有數據的標准差
--STDEVP()
--STDEVP()函數返回總體標准差
--VAR()
--VAR()函數返回表達式中所有值的統計變異數
--VARP()
--VARP()函數返回總體變異數
----算術函數----
/***三角函數***/
SIN(float_expression) --返回以弧度表示的角的正弦
COS(float_expression) --返回以弧度表示的角的餘弦
TAN(float_expression) --返回以弧度表示的角的正切
COT(float_expression) --返回以弧度表示的角的餘切
/***反三角函數***/
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回餘弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度轉換為角度返回與表達式相同的數據類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
RADIANS(numeric_expression) --把角度轉換為弧度返回與表達式相同的數據類型可為
--INTEGER/MONEY/REAL/FLOAT 類型
EXP(float_expression) --返回表達式的指數值
LOG(float_expression) --返回表達式的自然對數值
LOG10(float_expression)--返回表達式的以10 為底的對數值
SQRT(float_expression) --返回表達式的平方根
/***取近似值函數***/
CEILING(numeric_expression) --返回>=表達式的最小整數返回的數據類型與表達式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
FLOOR(numeric_expression) --返回<=表達式的最小整數返回的數據類型與表達式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
ROUND(numeric_expression) --返回以integer_expression 為精度的四捨五入值返回的數據
--類型與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
ABS(numeric_expression) --返回表達式的絕對值返回的數據類型與表達式相同可為
--INTEGER/MONEY/REAL/FLOAT 類型
SIGN(numeric_expression) --測試參數的正負號返回0 零值1 正數或-1 負數返回的數據類型
--與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
PI() --返回值為π 即3.1415926535897936
RAND([integer_expression]) --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數
----字元串函數----
ASCII() --函數返回字元表達式最左端字元的ASCII 碼值
CHAR() --函數用於將ASCII 碼轉換為字元
--如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數會返回一個NULL 值
LOWER() --函數把字元串全部轉換為小寫
UPPER() --函數把字元串全部轉換為大寫
STR() --函數把數值型數據轉換為字元型數據
LTRIM() --函數把字元串頭部的空格去掉
RTRIM() --函數把字元串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING() --函數返回部分字元串
CHARINDEX(),PATINDEX() --函數返回字元串中某個指定的子串出現的開始位置
SOUNDEX() --函數返回一個四位字元碼
--SOUNDEX函數可用來查找聲音相似的字元串但SOUNDEX函數對數字和漢字均只返回0 值
DIFFERENCE() --函數返回由SOUNDEX 函數返回的兩個字元表達式的值的差異
--0 兩個SOUNDEX 函數返回值的第一個字元不同
--1 兩個SOUNDEX 函數返回值的第一個字元相同
--2 兩個SOUNDEX 函數返回值的第一二個字元相同
--3 兩個SOUNDEX 函數返回值的第一二三個字元相同
--4 兩個SOUNDEX 函數返回值完全相同
QUOTENAME() --函數返回被特定字元括起來的字元串
/*select quotename('abc', '{') quotename('abc')
運行結果如下
----------------------------------{
{abc} [abc]*/
REPLICATE() --函數返回一個重復character_expression 指定次數的字元串
/*select replicate('abc', 3) replicate( 'abc', -2)
運行結果如下
----------- -----------
abcabcabc NULL*/
REVERSE() --函數將指定的字元串的字元排列順序顛倒
REPLACE() --函數返回被替換了指定子串的字元串
/*select replace('abc123g', '123', 'def')
運行結果如下
----------- -----------
abcdefg*/
SPACE() --函數返回一個有指定長度的空白字元串
STUFF() --函數用另一子串替換字元串指定位置長度的子串
----數據類型轉換函數----
CAST() 函數語法如下
CAST() (<expression> AS <data_ type>[ length ])
CONVERT() 函數語法如下
CONVERT() (<data_ type>[ length ], <expression> [, style])
select cast(100+99 as char) convert(varchar(12), getdate())
運行結果如下
------------------------------ ------------
199 Jan 15 2000
----日期函數----
DAY() --函數返回date_expression 中的日期值
MONTH() --函數返回date_expression 中的月份值
YEAR() --函數返回date_expression 中的年份值
DATEADD(<datepart> ,<number> ,<date>)
--函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期
DATEDIFF(<datepart> ,<number> ,<date>)
--函數返回兩個指定日期在datepart 方面的不同之處
DATENAME(<datepart> , <date>) --函數以字元串的形式返回日期的指定部分
DATEPART(<datepart> , <date>) --函數以整數值的形式返回日期的指定部分
GETDATE() --函數以DATETIME 的預設格式返回系統當前的日期和時間
----系統函數----
APP_NAME() --函數返回當前執行的應用程序的名稱
COALESCE() --函數返回眾多表達式中第一個非NULL 表達式的值
COL_LENGTH(<'table_name'>, <'column_name'>) --函數返回表中指定欄位的長度值
COL_NAME(<table_id>, <column_id>) --函數返回表中指定欄位的名稱即列名
DATALENGTH() --函數返回數據表達式的數據的實際長度
DB_ID(['database_name']) --函數返回資料庫的編號
DB_NAME(database_id) --函數返回資料庫的名稱
HOST_ID() --函數返回伺服器端計算機的名稱
HOST_NAME() --函數返回伺服器端計算機的名稱
IDENTITY(<data_type>[, seed increment]) [AS column_name])
--IDENTITY() 函數只在SELECT INTO 語句中使用用於插入一個identity column列到新表中
/*select identity(int, 1, 1) as column_name
into newtable
from oldtable*/
ISDATE() --函數判斷所給定的表達式是否為合理日期
ISNULL(<check_expression>, <replacement_value>) --函數將表達式中的NULL 值用指定值替換
ISNUMERIC() --函數判斷所給定的表達式是否為合理的數值
NEWID() --函數返回一個UNIQUEIDENTIFIER 類型的數值
NULLIF(<expression1>, <expression2>)
--NULLIF 函數在expression1 與expression2 相等時返回NULL 值若不相等時則返回expression1 的值
--------------------------------------------------------------------------------
sql中的保留字
action add aggregate all
alter after and as
asc avg avg_row_length auto_increment
between bigint bit binary
blob bool both by
cascade case char character
change check checksum column
columns comment constraint create
cross current_date current_time current_timestamp
data database databases date
datetime day day_hour day_minute
day_second dayofmonth dayofweek dayofyear
dec decimal default delayed
delay_key_write delete desc describe
distinct distinctrow double drop
end else escape escaped
enclosed enum explain exists
fields file first float
float4 float8 flush foreign
from for full function
global grant grants group
having heap high_priority hour
hour_minute hour_second hosts identified
ignore in index infile
inner insert insert_id int
integer interval int1 int2
int3 int4 int8 into
if is isam join
key keys kill last_insert_id
leading left length like
lines limit load local
lock logs long longblob
longtext low_priority max max_rows
match mediumblob mediumtext mediumint
middleint min_rows minute minute_second
modify month monthname myisam
natural numeric no not
null on optimize option
optionally or order outer
outfile pack_keys partial password
precision primary procere process
processlist privileges read real
references reload regexp rename
replace restrict returns revoke
rlike row rows second
select set show shutdown
smallint soname sql_big_tables sql_big_selects
sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
sql_small_result sql_big_result sql_warnings straight_join
starting status string table
tables temporary terminated text
then time timestamp tinyblob
tinytext tinyint trailing to
type use using unique
unlock unsigned update usage
values varchar variables varying
varbinary with write when
where year year_month zerofill
9. SQL 常用語句大全。要系統答案,不要粘貼的一大堆!
(1)數據記錄篩選:
select * from 數據表 where 欄位名=欄位值 orderby 欄位名 [desc]
select * from 數據表 where 欄位名 like'%欄位值%' orderby 欄位名 [desc]
select top 10 * from 數據表 where 欄位名 order by 欄位名 [desc]
select* from 數據表 where 欄位名 in ('值1','值2','值3')
select* from 數據表 where 欄位名 between 值1 and 值2
(2)更新數據記錄:
update 數據表 set 欄位名=欄位值 where 條件表達式
update 數據表 set 欄位1=值1,欄位2=值2……欄位n=值n where 條件表達式
(3)刪除數據記錄:
delete from 數據表 where 條件表達式
delete from 數據表 (將數據表所有記錄刪除)
(4)添加數據記錄:
insert into 數據表(欄位1,欄位2,欄位3…) values (值1,值2,值3…)
insert into 目標數據表 select * from 源數據表 (把源數據表的記錄添加到目標數據表)
(5)數據記錄統計函數:
AVG(欄位名)得出一個表格欄平均值
COUNT(*|欄位名)對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名)取得一個表格欄最大的值
MIN(欄位名)取得一個表格欄最小的值
SUM(欄位名)把數據欄的值相加
(5)數據表的建立和刪除:
CREATE TABLE 數據表名稱 (欄位1類型1(長度),欄位2類型2(長度)……)
例:CREATE TABLE tab01 (name varchar (50), datetimedefaultnow ())
DROP TABLE 數據表名稱 (永久性刪除一個數據表)
10. sql查詢語句大全
一、基礎
1、說明:創建資料庫
Create
DATABASE
database-name
2、說明:刪除資料庫
drop
database
dbname
3、說明:備份sql
server
---
創建
備份數據的
device
USE
master
EXEC
sp_admpdevice
'disk',
'testBack',
'c:\mssql7backup\MyNwind_1.dat'
---
開始
備份
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
註:索引是不可更改的,想更改必須刪除重新建。
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%』
---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