-資料庫DDL和DML基礎命令
-
一、mysql命令
1.1 mysql的基礎命令
-
登入命令:如果在命令列出現了mysql>說明登入成功
-- 會有警告提示,密碼是明文的 mysql -uroot -p密碼 -- 第二種,在命令列只輸入 mysql -uroot -p --回車 -- 會提示輸入密碼,現在輸入密碼,是保密的。 enter password:**** -- 對於mysql完整的登入命令 -p密碼,-P埠 -h主機名 mysql -uroot -p密碼 -P3306 -h127.0.0.1
-
退出mysql:
mysql>exit;
-
檢視mysql資料庫管理系統中的所有資料庫
-- 檢視所有的資料庫 mysql > SHOW DATABASES;
一般對於剛剛安裝的資料庫,會有預設的四張表,這四張表能不能刪除
-
使用指定的資料庫
mysql > USE 庫名;
-
檢視資料庫中所有的表
mysql > SHOW TABLES;
二、資料庫結構化查詢語句SQL
DDL:資料庫定義語言,包含:資料庫的建立、資料表的建立、刪除資料庫、刪除資料表、修改資料表。
DML:資料庫操作語言,包含:新增資料、刪除資料、修改資料
DQL:資料庫查詢語言,包含:查詢資料
DCL:資料庫控制語言,用來給組員進行分發許可權的
TCL:事務控制語言
2.1 資料庫定義語言DDL
-
使用命令列建立資料庫
mysql > CREATE DATABASE 資料庫名;
-
刪除資料庫命令
DROP DATABASE db_shop;
-
建立資料庫中的表:需要表中的欄位,規定欄位資料型別
-- 先選擇到指定的資料庫 USE 資料庫名; -- 建立表 CREATE TABLE t_student( s_id int, s_name varchar(30), age int, gender char );
-
檢視指定資料庫中所有的表
mysql >SHOW TABLES;
-
檢視指定表中的表結構
mysql >DESC t_student;
-
刪除一張表
mysql > DROP TABLE t_student;
-
複製一張表(只複製結構,不復制資料)
mysql > CREATE TABLE student LIKE t_student;
-
複製一張表,要將資料和結構一起賦值,下午再驗證
mysql > CREATE TABLE stu AS (SELECT * FROM t_student);
-
向表中新增一個欄位
mysql > ALTER TABLE t_student ADD COLUMN tel VARCHAR(11);
-
修改表中已經存在欄位的資料型別
mysql > ALTER TABLE t_student modify gender VARCHAR(10);
-
刪除表中的欄位
mysql > ALTER TABLE t_student DROP gender;
2.2 資料庫操作語言DML
-
向資料庫中新增資料
-- 新增語句:INSERT INTO 表名(欄位) value(值); INSERT INTO t_student(s_id,s_name,age,tel) value(1,"李四",18,"1100"); -- 如果只有部分資料需要寫,那麼就新增部分資料即可 INSERT INTO t_student(s_id,s_name) value(2,"張三"); INSERT INTO t_student(s_id,age) value(3,19); -- 如果所新增的資料和表中的欄位完全一致(新增的資料和表中欄位的個數一致),表名後面可以不跟括號 INSERT INTO t_student value(4,"王五",20,"1200");
-
修改資料
-- 修改資料:UPDATE 表名 SET 欄位 = 值;一般是不試用的這種方式,一次性將所有行中對應列的資料修改 UPDATE t_student SET age = 10; -- 根據條件修改資料:UPDATE 表名 SET 欄位 = 值 WHERE s_id = 值;常用方式,根據主鍵修改指定行的資料 UPDATE t_student SET age = 18 WHERE s_id = 1; -- 一次性修改多個欄位的值 UPDATE t_student SET age = 28,tel = '1300' WHERE s_id = 2;
-
刪除資料
-- 刪除資料:DELETE FROM 表名;禁止使用 DELETE FROM t_student; -- 根據條件刪除資料 DELETE FROM t_student WHERE s_id = 1;
2.3資料庫查詢語言DQL(最簡單的)
-- 單表簡單查詢: SELECT * FROM 表名,SELECT * FROM t_student;
三、資料型別
3.1 資料庫的資料型別
-
整型
int:最常用的整型
smallint:短整型
bigint:長整型
mediumint:中等整型
tinyint:微整型
-
浮點型
double:雙精度浮點型
float:單精度浮點型
decimal(D,M):定點小數
-
字元型
char:定長的字元型
varchar:變長的字元型
兩者的區別:char因為是定長的,不管儲存的資料長度是多少,都直接給255記憶體大小,會一定的浪費空間,因為不需要計算開闢的空間大小,節約時間
varchar:因為是變長的,需要執行兩次,第一次計算實際需要的記憶體空間,第二次才會真正的儲存資料,會節約記憶體大小,會消耗時間,一般在設定varchar型別的時候,會給指定長度,用來限制最大空間。
-
位元組型別(瞭解)
BLOB:位元組型別
BIGBLOB:大位元組檔案
-
文字型別
text
-
時間
time:時間
datatime:時間
year:年
四、資料庫設計
4.1 鍵
唯一鍵:能夠唯一識別出一行資料的欄位稱為唯一鍵,比如:學號、電話、身份證等。(瞭解)
主鍵:從唯一鍵中選出作為識別一行資料的欄位稱為主鍵,一般將id設定主鍵
候選鍵:從唯一鍵中,除了主鍵的欄位,其餘欄位稱為候選鍵(瞭解)
外來鍵:一般用來關聯表與表中的關係,一個表中的外來鍵,都是另外一張表中主鍵的值,新增上外來鍵之後,不能在該外來鍵欄位中新增除了另外一張表中主鍵以外的值,如果在外來鍵中使用了資料,另外一張表的對應的主鍵資料,不能刪除。
4.2 約束
- 主鍵約束:如果將一個欄位設定為主鍵,那麼資料庫會自動識別是否重複,如果重複將不能存入。主鍵約束的關鍵在於不能重複。一般情況下,會將主鍵設定為自增。
- 外來鍵約束:一個表中外來鍵欄位的值,只能是另一一張表中主鍵存在的值。表與表之間的關係
- 非空約束:如果一個欄位設定為非空約束,那麼該欄位必須有值,不能為null
- 預設值:給指定的欄位設定預設值,在新增的時候,如果沒有給該欄位新增資料,則資料庫會自動將預設值填充在該位置。
- 自定義約束:用觸發器、儲存過程或者函式程式碼實現約束。
4.3 正規化
- 第一正規化:保證列的原子性
- 第二正規化:保證每一個實體能夠被唯一區分出來,可以使用主鍵來滿足第二正規化
中外來鍵欄位的值,只能是另一一張表中主鍵存在的值。表與表之間的關係 - 非空約束:如果一個欄位設定為非空約束,那麼該欄位必須有值,不能為null
- 預設值:給指定的欄位設定預設值,在新增的時候,如果沒有給該欄位新增資料,則資料庫會自動將預設值填充在該位置。
- 自定義約束:用觸發器、儲存過程或者函式程式碼實現約束。
4.3 正規化
- 第一正規化:保證列的原子性
- 第二正規化:保證每一個實體能夠被唯一區分出來,可以使用主鍵來滿足第二正規化
- 第三正規化:保證每一個實體的欄位都和主鍵直接相關,而不是間接相關,如果有相關的資料資訊,使用外來鍵進行關聯
-