SQL基礎知識總結
1.database
儲存有組織的資料的容器,通常就是一個檔案或者一組檔案
2.table
某種特定型別資料的結構化清單
一個數據庫內的每個表都有唯一表名
3.column
每列儲存表的某一種的特定資訊
4.row
行可以稱為一條資料庫記錄
5.primary key
一列或者一組列,其值能夠唯一標識表中每一行
基礎語句:
建立表
CREATE TABLE table_name(column_name datatype, colume_name2 datatype,...,colume_nameN datatype)
- table_name:是表的名稱
-
column_name1, column_name2 ….:是列的名稱
-
datatype:是列的資料型別,比如char、date、number等
例如建立employee表,語句可以為:
CREATE TABLE employee ( id number(5), name char(20), dept char(10), age number(2), salary number(10), location char(10));
更新表
更新表使用alter table語句
例如:
如需在表中新增列,請使用下面的語法: ALTER TABLE table_name ADD column_name datatype 如需刪除表中的列,請使用下面的語法(請注意,某些資料庫系統不允許這種在資料庫表中刪除列的方式):ALTER TABLE table_name DROP COLUMN column_name 要改變表中列的資料型別,請使用下面的語法: ALTER TABLE table_name MODIFY COLUMN column_name datatype
重命名錶
ALTER TABLE old_name TO new_name
刪除表
DROP TABLE table_name
檢索單個列
SELECT column_name FROM table_name;
檢索多個列
SELECT column_1, column_2, column_3 FROM table_name;
檢索所有列
SELETE * FROM table_name;
限制結果
如果需要限制結果輸出的條數,可以使用limit<數字>來表示限制的行數
排序搜尋資料
如果需要對檢索出來的資料進行排序
order by <column_name> asc/desc; asc表示升序排序 desc表示降序排序
通常order by語句通常位於查詢語句的最後面。
過濾資料
使用where子句來對查詢出的結果進行過濾,得到我們所需要的資料
selete <column_name> from <table_name> where <過濾條件>;
彙總資料
聚合函式:用來資料彙總
- avg()
- min()
- max()
- count()
- sum()
分組資料
建立分組
select <column_name> from <table_name> where <過濾條件> group by <column_name> having <過濾條件> order by <column_name><排序方式>
where是行級過濾,having是組級過濾,where子句中不能使用聚合函式
內連線
內連線就是得出兩個表的交集部分
SELECT 查詢欄位 FROM 表1 [as] 別名 [INNER] JOIN 表2 [as] 別名 ON 表1.關係欄位 = 表2.關係欄位
左連線
左連線就是左邊表的記錄要全部顯示出來,右表只有和左表匹配到的記錄才進行顯示
SELECT 查詢欄位 FROM 表1 [as] 別名 LEFT JOIN 表2 [as] 別名 ON 表1.關係欄位 = 表2.關係欄位
插入資料
insert into <table_name>(column_name1,column_name2,...) values (data1...) #表名後的列名不是嚴格要求的,但這樣會更安全
插入檢索出的資料
insert into <table_name>(column_name) select <column_name> from <table_name>;
例:
#表A插入表B的語句 #若兩表字段一致: insert into table_b select * from table_a #若只匯入指定欄位: insert into table_b(word1,word2) select word1,word2 from table_a #欄位順序必須一致
複製表
create table copytable as select * from <table_name>;
更新表
update<table_name> set<column_name> = ... where <過濾條件>;
Update 和 Alter的區別
1、Alter:修改表結構
例如:增加表的欄位
Alter table test Add(id,int)
2、Update:修改表資料
例如:修改欄位id列的值
update test set id=2;
刪除資料
delete from <column_name> where <過濾條件>;
例子:
1.SQL查詢平均工資>2000的部門名稱並顯示平均工資
select [department_name],avg([salary]) from [tablename] group by [department_name] having avg([salary]) >2000 [department_name] 是列名 部門名稱 [salary] 是列名 工資 [tablename] 是表名 是查的那個表
2.SQL查詢一個表中重名的人
selete myname, count(*) from table_name group by myname having count(*)>2 table_name 是表名 myname 是人名 若不新增having子句,則是統計各名字的數量
概念理解
什麼是儲存過程?有哪些優缺點?
儲存過程就像我們程式語言中的函式一樣,封裝了我們的程式碼(PLSQL、T-SQL)
儲存過程的優點
- 能夠將程式碼封裝起來
- 儲存在資料庫之中
- 讓程式語言進行呼叫
- 儲存過程是一個預編譯的程式碼塊,執行效率比較高
- 一個儲存過程替代大量T_SQL語句 ,可以降低網路通訊量,提高通訊速率
儲存過程的缺點:
- 每個資料庫的儲存過程語法幾乎都不一樣,十分難以維護(不通用)
- 業務邏輯放在資料庫上,難以迭代
什麼是檢視?
從資料庫系統內部來看,檢視是由一張或多張表中的資料組成的,從資料庫系統外部來看,檢視就如同一張表一樣,對錶能夠進行的一般操作都可以應用於檢視。
例如查詢,插入,修改,刪除操作等,但插入、修改、刪除等的操作其實對於原始資料表的操作。
檢視的作用:
1、檢視隱藏了底層的表結構,簡化了資料訪問操作,客戶端不再需要知道底層表的結構及其之間的關係。
2、檢視提供了一個統一訪問資料的介面。(即可以允許使用者通過檢視訪問資料的安全機制,而不授予使用者直接訪問底層表的許可權)
3、從而加強了安全性,使使用者只能看到檢視所顯示的資料。
4、檢視還可以被巢狀,一個檢視中可以巢狀另一個檢視
什麼是索引【Index】
- 是一種快速查詢表中內容的機制,類似於新華字典的目錄
- 運用在表中某個些欄位上,但儲存時,獨立於表之外
索引優缺點:
- 索引加快資料庫的檢索速度
- 索引降低了插入、刪除、修改等維護任務的速度(雖然索引可以提高查詢速度,但是它們也會導致資料庫系統更新資料的效能下降,因為大部分資料更新需要同時更新索引)
- 唯一索引可以確保每一行資料的唯一性,通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能
- 索引需要佔物理和資料空間
索引分類:
- 唯一索引:唯一索引不允許兩行具有相同的索引值
- 主鍵索引:為表定義一個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別。主鍵索引要求主鍵中的每個值是唯一的,並且不能為空
- 聚集索引(Clustered):表中各行的物理順序與鍵值的邏輯(索引)順序相同,每個表只能有一個
- 非聚集索引(Non-clustered):非聚集索引指定表的邏輯順序。資料儲存在一個位置,索引儲存在另一個位置,索引中包含指向資料儲存位置的指標。可以有多個,小於249個
超鍵、候選鍵、主鍵、外來鍵分別是什麼?
- 超鍵:在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。
- 候選鍵(候選碼):是最小超鍵,即沒有冗餘元素的超鍵。
- 主鍵(主碼):資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。一個數據列只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。
- 外來鍵:在一個表中存在的另一個表的主鍵稱此表的外來鍵。
參考
https://www.cnblogs.com/numpycomcn/p/11802714.html