sql数据库常见命令总结
1.sql功能
數據庫查詢? select
數據庫定義? create, drop,alter
數據庫操縱? insert, update,delete
數據庫控制? grant,revoke
--語句??????????????????????????????? 功 能
1、數據操作
Select????? --從數據庫表中檢索數據行和列
Insert????? --向數據庫表添加新數據行
Delete????? --從數據庫表中刪除數據行
Update????? --更新數據庫表中的數據
2、數據定義
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???? --從數據庫中刪除一個域
3、數據控制
GRANT????? --授予用戶訪問權限
DENY????? --拒絕用戶訪問
REVOKE????? --解除用戶訪問權限
4、事務控制
COMMIT????? --結束當前事務
ROLLBACK???? --中止當前事務
SET TRANSACTION??? --定義當前事務數據訪問特征
5、程序化SQL
DECLARE????? --為查詢設定游標
EXPLAN????? --為查詢描述數據訪問計劃
OPEN????? --檢索查詢結果打開一個游標
FETCH????? --檢索一行查詢結果
CLOSE????? --關閉游標
PREPARE????? --為動態執行準備SQL 語句
EXECUTE????? --動態地執行SQL 語句
DESCRIBE???? --描述準備好的查詢
6、局部變量
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
7、全局變量
---必須以@@開頭
8、IF 語句
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'
9、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
10、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
11、WAITFOR語句
--例 等待1 小時2 分零3 秒后才執行Select 語句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 點零8 分后才執行Select 語句
waitfor time ’23:08:00’
select * from employee
?
12、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
13、insert 語句
? insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
????????????? value (select Stockname , Stocknumber from Stock_table2)---value為select語句
14、update語句
? update table_name set Stockname = "xxx" [where Stockid = 3]
???????? Stockname = default
???????? Stockname = null
???????? Stocknumber = Stockname + 4
15、delete語句
? delete from table_name where Stockid = 3
? truncate table_name ----------- 刪除表中所有行,仍保持表的完整性
? drop table table_name --------------- 完全刪除表
?
定義表的屬性時要指明數據類型和長度。不同的數據庫系統支持的數據類型都不一樣,例如ibm,db2,sql主要支持
smallint 半字長二進制整數
integer or int? 全字長二進制整數
decimal(p[,q])或dec (p[,q])壓縮十進制數,共p位,其中小數點后有q 位 0<=q<=p<=15,q=0時可以省略
float 雙字節浮點數。
charter(n)或char(n)長度為n的定長字符串
varchar(n)最大長度為n的變長字符串
graphic(n)長度為n的變長圖形字符串
vargraphic(n)最大長度為n的變長圖形字符串
date 日期型,格式為yyyy-mm-dd.
time 時間型,格式為hh.mm.ss.xx
timestamp? 日期加時間
2.修改基本表
建立索引 CREATE (UNIQUE or CLUSTER )INDEX (索引名) ON 表名 列名 次序
CREATE UNIQUE INDEX stusno ON student(Sno);
刪除索引
DROP INDEX (索引名)
DROP INDEX stusno
刪除索引時,系統會同時從數據字典中刪除有關該索引的描述
3.查詢
單表查詢: SELECT Sno,Sname
?????????? FROM Student;
查詢全部列:
SELECT *
FROM Student;
SELECT Sname, 1995-sage
FROM Student;
4.查詢滿足條件的元組
WHERE子句可包括各種條件運算符:?
比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<?
范圍運算符(表達式值是否在指定的范圍):BETWEEN...AND...?
NOT BETWEEN...AND...?
?列表運算符(判斷表達式是否為列表中的指定項):IN (項1,項2......)?
?NOT IN (項1,項2......)?
模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL
邏輯運算符(用于多條件的邏輯連接):NOT、AND、OR
?
范圍運算符例:age BETWEEN 10 AND 30相當于age>=10 AND age<=30?
?? 列表運算符例:country IN ('Germany','China')?
模式匹配符例:常用于模糊查找,它判斷列值是否與指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等類型查詢。?
可使用以下通配字符:?
? 百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%%。?
下劃線_:匹配單個任意字符,它常用來限制表達式的字符長度。?
方括號[]:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。[^]:其取值也[] 相同,但它要求所匹配對象為指定字符以外的任一個字符。?
例如:?
? 限制以Publishing結尾,使用LIKE '%Publishing'
? 限制以A開頭:LIKE '[A]%'
? 限制以A開頭外:LIKE '[^A]%'
???
空值判斷符例WHERE age IS NULL
???
邏輯運算符:優先級為NOT、AND、OR
?
轉載于:https://blog.51cto.com/zh888/409965
總結
以上是生活随笔為你收集整理的sql数据库常见命令总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GRUB2 管理器—Grub Custo
- 下一篇: 心理健康的秘方