資料庫學習SQL知識再學習
技術標籤:資料庫
1.1 認識資料據庫
資料庫是將大量資料儲存起來,通過計算機加工而成的可以進行高效訪問的資料集合。該資料集合稱為資料庫(Database,DB)。用來管理資料庫的計算機系統稱為資料庫管理系統(Database Management System,DBMS)。
1.1.1 DBMS的分類
DBMS主要通過資料的儲存格式(資料庫的種類)進行分類,主要有五種型別。
- 層次資料庫(HDB)
- 關係資料庫(RDB)
這種DBMS稱為關係資料庫管理系統(RDBMS)如 MySql SQL Server Oracle等。
- 面向物件資料庫(OODB)
- 鍵值儲存系統(KVS)
如Redis MongDB等
- xml資料庫(XMLDB)
1.1.2 RDBMS常見系統結構
使用RDBMS,最常見的系統結構是client/serve(c/s)這種結構。
1.2 瞭解sql
在資料庫中行稱為記錄,對應表中一條記錄,列稱為欄位,代表表中資料的資料列。類似於excel表的行和列。
SQL(Structured Query Language:結構化查詢語言),其實sql只是用來操作資料庫的一種語言,對於不同的RDBMS編寫的sql規範也不同,類似於每個地方都有方言一樣。
SQL語句可以分為三類:
- DDL
DDL(Data Definition Language,資料定義語言) 用來建立或者刪除儲存資料用的資料庫以及資料庫中的表等物件。DDL 包含以下幾種指令。
- CREATE : 建立資料庫和表等物件
- DROP : 刪除資料庫和表等物件
- ALTER : 修改資料庫和表等物件的結構
- DML
DML(Data Manipulation Language,資料操縱語言) 用來查詢或者變更表中的記錄。DML 包含以下幾種指令。
- SELECT :查詢表中的資料
- INSERT :向表中插入新資料
- UPDATE :更新表中的資料
- DELETE :刪除表中的資料
- DCL
DCL(Data Control Language,資料控制語言) 用來確認或者取消對資料庫中的資料進行的變更。除此之外,還可以對 RDBMS 的使用者是否有許可權操作資料庫中的物件(資料庫表等)進行設定。DCL 包含以下幾種指令。
- COMMIT : 確認對資料庫中的資料進行的變更
- ROLLBACK : 取消對資料庫中的資料進行的變更
- GRANT : 賦予使用者操作許可權
- REVOKE : 取消使用者的操作許可權
1.2.1 SQL基本書寫規範
- SQL語句要以分號( ; )結尾。
- SQL 不區分關鍵字的大小寫,但是插入到表中的資料是區分大小寫的。
- 單詞需要用半形空格或者換行來分隔。
1.2.2 資料庫的建立
語法:
CREATE DATABASE DATABASENAME;
1.2.3 表的建立
語法:
CREATE TABLE TABLENAME
( 列名 1 資料型別 該列所需約束 ,
列名 2 資料型別 該列所需約束 ,
列名 3 資料型別 該列所需約束 ,
列名 4 資料型別 該列所需約束 ,
...
表約束1 , 表約束2 ,……);
1.2.4 命名規則
- 只能使用英文字母、數字、下劃線(_)作為資料庫、表和列的名稱
- 名稱必須以半形英文字母開頭
1.2.5 資料型別的指定
資料庫建立時,每一列都要指定相應的資料型別,儲存的資料必須和每一列指定的資料型別一致。
常見基本資料型別:
- INTEGER 型
用來指定儲存整數的列的資料型別(數字型),不能儲存小數。
- CHAR 型
用來儲存定長字串,當列中儲存的字串長度達不到最大長度的時候,使用半形空格進行補足,由於會浪費儲存空間,一般不使用。
- VARCHAR 型
用來儲存可變長度字串,定長字串在字元數未達到最大長度時會用半形空格補足,但可變長字串不同,即使字元數未達到最大長度,也不會用半形空格補足。
- DATE 型
用來指定儲存日期(年月日)的列的資料型別(日期型)。
1.2.6 約束的設定
約束實現的是對錶中儲存資料進行限制和追加條件的功能。
- NOT NULL是非空約束,即該列必須輸入資料。
- PRIMARY KEY是主鍵約束,代表該列是唯一值,可以通過該列取出特定的行的資料。
- UNIQUE是唯一性約束,表示該欄位具有唯一性,不可重複,但可以為null。
1.2.7表的刪除和更新
刪除表語法:
DROP TABLE TABLENAME;
- 新增列的ALTER TABLE語句
ALTER TABLE TABLENAME ADD COLUMN 列的定義 ;
- 刪除列的 ALTER TABLE 語句
ALTER TABLE TABLENAME DROP COLUMN 列名 ;
- 清空表內容
TRUNCATE TABLE TABLE_NAME;
相比DROP/DELETE ,TRUNCATE清除資料的速度更快。
- 資料的更新
語法:
UPDATE 表名
SET 列名 = 表示式 [, 列名2=表示式2...];
WHERE 條件; -- 可選,非常重要。
ORDER BY 子句; --可選
LIMIT 子句; --可選
修改時間:
通過設定欄位的值為NULL可以將欄位的資料更新為NULL
UPDATE語句的SET子句支援同時將多個列作為更新物件。
1.2.8 插入資料
基本語法:
INSERT INTO TABLENAME (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
使用INSERT 插入資料時,可以忽略表名後面的列清單。
通常的INSERT
多行的INSERT
可以使用INSERT … SELECT 語句從其他表複製資料。
在dataw表中看到從datawhale表中複製過來的資料