SQL语句的整理
文章目錄
- SQL語(yǔ)句
- 數(shù)據(jù)庫(kù)的操作
- 創(chuàng)建數(shù)據(jù)庫(kù)
- 使用數(shù)據(jù)庫(kù)
- 修改數(shù)據(jù)庫(kù)
- 刪除數(shù)據(jù)庫(kù)
- 基本表的操作
- 創(chuàng)建基本表
- 修改基本表
- 刪除基本表
- 索引的操作
- 創(chuàng)建索引
- 修改索引
- 刪除索引
- 查詢操作
- where字句中的條件
- 函數(shù)
- 文本處理函數(shù)
- 數(shù)值處理型函數(shù)
- 聚集函數(shù)
- 聯(lián)結(jié)表
- 內(nèi)聯(lián)結(jié)
- 自身聯(lián)結(jié)
- 外聯(lián)結(jié)
- 多表聯(lián)結(jié)
- 嵌套查詢
- 不相關(guān)子查詢
- 相關(guān)子查詢
- any和all的子查詢
- exists子查詢
- 集合查詢
- 數(shù)據(jù)更新操作
- 插入數(shù)據(jù)
- 修改數(shù)據(jù)
- 刪除數(shù)據(jù)
- 視圖的操作
- 建立視圖
- 刪除視圖
- 查詢視圖
- 更新視圖
- 授權(quán)操作
- 授予
- 收回
- 創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限
- 用戶定義完整性
- 屬性約束條件
- 元組約束約束條件
- 完整性約束命名句
- 修改完整性約束
SQL語(yǔ)句
注:參考書目:
數(shù)據(jù)庫(kù)的操作
創(chuàng)建數(shù)據(jù)庫(kù)
create {database|schema} 數(shù)據(jù)庫(kù)名;使用數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)名;修改數(shù)據(jù)庫(kù)
alter {database|schema} [數(shù)據(jù)庫(kù)名];刪除數(shù)據(jù)庫(kù)
drop database 數(shù)據(jù)庫(kù)名;基本表的操作
基本表:一張基本表代表一個(gè)關(guān)系。
創(chuàng)建基本表
create table 表名 (列名 數(shù)據(jù)類型 [列級(jí)完整性約束],列名 數(shù)據(jù)類型 [列級(jí)完整性約束],···[表級(jí)完整性約束條件]);- 列級(jí)完整性約束寫在對(duì)應(yīng)列的后面,表級(jí)完整性約束寫在最后面。
修改基本表
alter table 表名 [add [column] 新列名 數(shù)據(jù)類型 [完整性約束條件]] [add 表級(jí)完整性約束] [drop [column]] 列名 [cascade|restrict] [drop constraint] 完整性約束 [cascade|restrict] [alter column 列名 數(shù)據(jù)類型]作用:
- 添加新的列,新的完整性約束
- 添加新的表級(jí)完整性約束
- 刪除表中的列,cascade表示自動(dòng)刪除該列的其他對(duì)象,restrict表示如果有別人引用則拒絕刪除該列。
- 刪除指定的完整性約束
- 修改原有的列定義
刪除基本表
drop table 表名 [cascade|restrict];- restrict:級(jí)聯(lián):如果表下還有視圖,觸發(fā)器等,該表不能被刪除。
- cascade:限制:刪除基本表的同時(shí),連視圖等一起被刪除
索引的操作
索引:索引就一種特殊的查詢表,數(shù)據(jù)庫(kù)的搜索引擎可以利用它提高檢索效率。
創(chuàng)建索引
create [unique] [cluster] index 索引名 on 表名(列名 [次序],)(列名 [次序]···);;- 次序:asc:升序,desc:降序
- unique:每個(gè)索引值只對(duì)應(yīng)一個(gè)數(shù)據(jù)記錄
- cluster:建立的索引是聚簇索引
修改索引
alter index 舊索引 rename to 新索引名;刪除索引
drop index 索引名;查詢操作
select [all|distinct] 目標(biāo)列表達(dá)式 [別名],目標(biāo)列表達(dá)式 [別名]··· from 表名或者視圖,表名或者視圖··· [where 表達(dá)式] [group by 列名 [having 條件表達(dá)式]] [order by 列名 [asc|desc]]- 別名前面可以加as或者不加
- 目標(biāo)列表達(dá)式可以是*,表示該表中全部列。
- where子句從from中表或者視圖中找出滿足條件的元組
- group by子句將查詢結(jié)果按某一列或者多列進(jìn)行分組
- order by子句用來(lái)排序
where字句中的條件
| 比較運(yùn)算符 | =,>,<,>=,<=,!!=,<>,!>,!< |
| 確定范圍 | between and,not between and |
| 確定集合 | in ,not in |
| 字符匹配 | like,not like(%代表任意長(zhǎng)度,_代表單個(gè)字符) |
| 空值 | is null,is not null |
| 邏輯運(yùn)算符 | and,or,not |
- 字符匹配末尾有空格會(huì)影響查詢結(jié)果。
一些用法的實(shí)現(xiàn):
函數(shù)
使用內(nèi)置函數(shù)用來(lái)處理數(shù)據(jù)
文本處理函數(shù)
| length() | 返回字符串的長(zhǎng)度 |
| lower() | 將字符串轉(zhuǎn)換為小寫 |
| upper() | 將字符串轉(zhuǎn)換為大寫 |
| ltrim() | 去掉字符串左邊的空格 |
| rtrim() | 去掉字符串右邊的空格 |
| soundex() | 返回發(fā)音相同的字符串 |
數(shù)值處理型函數(shù)
| abs() | 返回?cái)?shù)值的絕對(duì)值 |
| cos() | 返回?cái)?shù)值的余弦值 |
| exp() | 返回?cái)?shù)值的指數(shù)值 |
| pi() | 返回圓周率的數(shù)值 |
| sin() | 返回?cái)?shù)值的正弦值 |
| sqrt() | 返回?cái)?shù)值的平方根 |
| tan() | 返回?cái)?shù)值的正切值 |
聚集函數(shù)
| count(*) | 統(tǒng)計(jì)元組個(gè)數(shù) |
| count([distinct|all] 列名) | 統(tǒng)計(jì)一列中值的個(gè)數(shù) |
| sum([distinct|all] 列名) | 計(jì)算一列值的總和 |
| avg([distinct|all] 列名) | 計(jì)算一列值的平均值 |
| max([dsitinct|all] 列名) | 計(jì)算一列值的最大值 |
| min([distinct|all] 列名) | 計(jì)算一列值的最小值 |
- 聚集函數(shù)用于匯總數(shù)據(jù)
- distinct用于取消同一列的相同值
- 💥💥聚集函數(shù)只能用于select子句和group by的having子句
聯(lián)結(jié)表
內(nèi)聯(lián)結(jié)
也就是等值連接。
selext student.*,sc.* from student,sc where student.sno=sc.sno;自身聯(lián)結(jié)
也就是自己連接自己。
外聯(lián)結(jié)
將懸空數(shù)組仍保存在關(guān)系中。
select student.sno,sno cno,grade from student left outer join sc on (student.sno=sc.sno);多表聯(lián)結(jié)
多個(gè)表聯(lián)結(jié)在一起
···student.sno=sc.sno and sc.cno=course.cno;嵌套查詢
不相關(guān)子查詢
子查詢的查詢條件不依賴于父查詢。
相關(guān)子查詢
子查詢的查詢條件依賴于父查詢。
select sno,cno from sc x where grade>=(selext avg(grade) from sc y where x.sno=y.sno);any和all的子查詢
any是任意,all是全部,>any,<any,>all,<all這些都非常容易理解,這就不一一列舉了。
exists子查詢
這個(gè)非常難。
它只返回邏輯值true和false,不返回任何數(shù)據(jù)。
例:查詢至少選修了學(xué)生201215122選修的全部課程的學(xué)生號(hào)碼。
select distinct sno from sc x where not exists(select *from sc ywhere y.sno='201215122' andnot exists(select *from sc zwhere z.sno=x.sno andz.cno=y.cno));集合查詢
union(并操作),intersect(交操作)和except(差操作)。
數(shù)據(jù)更新操作
插入數(shù)據(jù)
insert into 表名 [(屬性列···)] values (常量···)- into子句沒(méi)有列出屬性,values子句必須每個(gè)屬性列都有值(空值要寫null)
修改數(shù)據(jù)
update 表名 set 列名=表達(dá)式··· [where 條件]刪除數(shù)據(jù)
delete from 表名 [where 條件]視圖的操作
視圖:視圖是指計(jì)算機(jī)數(shù)據(jù)庫(kù)中的視圖,是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來(lái)自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。
建立視圖
create view 視圖名 [列名···] as 子查詢 [with check option];- with check option表示在對(duì)視圖進(jìn)行操作時(shí)要滿足視圖定義的謂詞條件(也就是子查詢中的where子句)
刪除視圖
drop view 視圖名 [cascade]查詢視圖
視圖消解:從數(shù)據(jù)字典中取出視圖的定義,把定義中的子查詢和用戶的查詢結(jié)合起來(lái),轉(zhuǎn)換成等價(jià)的對(duì)基本表的查詢,然后再執(zhí)行修正了的查詢。
更新視圖
視圖更新的規(guī)定:
授權(quán)操作
自主存取控制:
- 用戶對(duì)不同的數(shù)據(jù)對(duì)象有不同的存取權(quán)限。
- 不同的用戶對(duì)同一對(duì)象也有不同的權(quán)限。
- 用戶還可以將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。
授予
grant 權(quán)限··· on 對(duì)象類型 對(duì)象名··· to 用戶··· [with grant option];- with grant option 表示獲得某種權(quán)限的對(duì)象也可以將此權(quán)限授予其他對(duì)象,但不允許循環(huán)授權(quán)。
收回
revoke 權(quán)限··· on 對(duì)象類型 對(duì)象名··· from 用戶 [cascade|restrict];創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限
grant和revoke是對(duì)用戶授予和收回對(duì)數(shù)據(jù)的操作權(quán)限,對(duì)創(chuàng)建數(shù)據(jù)庫(kù)模式一類的數(shù)據(jù)庫(kù)對(duì)象的授權(quán)則由數(shù)據(jù)庫(kù)管理員在創(chuàng)建用戶時(shí)實(shí)現(xiàn)。
create user uername [with][dba|resourse|connect];- dba:擁有dba權(quán)限的用戶是系統(tǒng)中的超級(jí)用戶,可以創(chuàng)建新的用戶創(chuàng)建模式創(chuàng)建基本表和視圖等。
- resourse:擁有resource權(quán)限的用戶可以創(chuàng)建基本表和視圖,成為所創(chuàng)建對(duì)象的一種,但不能創(chuàng)建模式,不能創(chuàng)建新的用戶。
- connect(默認(rèn)):擁有connect權(quán)限的用戶,不能創(chuàng)建新用戶,不能創(chuàng)建模式,也不能創(chuàng)建基本表,只能登錄數(shù)據(jù)庫(kù)。
用戶定義完整性
屬性約束條件
- not null:列值非空
- unique:列值唯一
- check語(yǔ)句:檢查列值是否滿足一個(gè)條件表達(dá)式
元組約束約束條件
check (sex='男' or sname not like 'Ms.%');- 寫在最后
完整性約束命名句
constraint 完整性約束條件名 完整性約束條件- 完整性約束條件命名,可以靈活的增加和刪除一個(gè)完整性約束。
修改完整性約束
alter table 表名 [drop|add] constraint 完整性約束條件名 完整性約束條件總結(jié)
- 上一篇: 计算机系统怎么装到u盘启动不了,电脑开机
- 下一篇: untiy 重置动画