目錄
一、數據定義語言DDL:是針對數據庫各種對象(數據庫、視圖、索引、表結構)的增刪選查。
一、數據定義語言DDL:是針對數據庫各種對象(數據庫、視圖、索引、表結構)的增刪選查。
二、數據庫的增刪選查
- 查看數據庫:show datebases;
- 創建數據庫:create datebase 數據庫名稱;#數據庫名不能和SQL關鍵字相同,也不能重複。
- 選擇使用數據庫:use 數據庫名稱;
- 刪除數據庫:drop database 數據庫名稱;
三、數據類型
- 主要分:數值型、字符串型、日期時間型
- MySQL常用數據類型:
- int:大整數型,有符號大小-2147483648~2147483647, 無符號大小0~4294967295,默認長度最多爲11個數字,如int(11)
- float:單精度浮點型,默認float(10,2),表示最多10個數字,其中有2位小數
- decimal:十進制小數型,適合金額、價格等對精度要求較高的數據存儲。默認decimal(10,0),表示最多10位數字,其中0位小數。
- char:固定長度字符串型,長度爲1-255。如果長度小於指定長度,右邊填充空格。如果不指定長度,默認爲1。如char(10),‘abc ’
- varchar:可變長度字符串型,長度爲1-255。必須指定長度,如varchar(10),‘abc’
- text:長文本字符串型,最大長度65535,不能指定長度
- date:日期型,‘yyyy-MM-dd’
- time:時間型,‘hh:mm:ss’
- datetime:日期時間型,‘yyyy-MM-dd hh:mm:ss’
- Timestamp:時間戳,在1970-01-01 00:00:00和2037-12-31 23:59:59之間,如1973-12-30 15:30,時間戳爲:19731230153000
注意⚠️
- 字符串類型和日期時間類型都需要引號括起來;
- char()數據類型會填補空缺的值,如:char(10),'abc ',abc後面會自動寫入7個空格,將會佔用內存。
- varchar()數據類型不會填補空缺,如:varchar(10),'abc',abc後面不會寫入7個空格,所以不會佔用內存。但在查詢數據的時候,varchar是先判斷字符串多少,再查找符合的字
四、約束條件
- 主鍵約束(primary key)
- 每個表中只能有一個或沒有主鍵,可以設單字段爲主鍵,也可以設置多字段聯合主鍵。
- 聯合主鍵的所有字段值完全一樣才違反主鍵約束。例如:A表中有4個字段:年齡、部門、崗位、工資。設年齡、部門、崗位聯合主鍵,當出現兩行記錄他們的這三個字段值相同的時候,將會報錯。
- 列級添加主鍵約束:create table <表名> (<字段名1> <字段類型1> primary key,……<字段名n> <字段類型n>);
- 表級添加主鍵約束(聯合主鍵方法):create table <表名>(<字段名1> <字段類型1>,......<字段名n> <字段類型n>,[constraint 主鍵約束名] primary key(字段名1[,字段名2,...字段名n]));
- 唯一約束(unique)
- 指定字段的取值不能重複,可以爲空,但只能出現一個空值。
- 列級添加唯一約束:create table <表名> (<字段名1> <字段類型1> unique,……<字段名n> <字段類型n>);
- 表級添加唯一約束:create table <表名> (<字段名1> <字段類型1,……<字段名n> <字段類型n>,[constraint 唯一約束名] unique (字段名1[,字段名2...字段名n]));
- 外鍵約束(foreign key 從表字段 references 主表 主表字段)
- 在一張表中執行數據插入、更新、刪除等操作時,DBMS都會跟另一張表進行對照,避免不規範的操作,以確保數據存儲的完整性。【例】員工信息表中有一列部門編號字段,該字段值依賴部門信息表的部門編號字段。即如果員工信息表的部門編號出現不在部門信息表的值,則會報錯。部門信息表爲主表,員工信息表爲從表。
- 某一表中某字段的值依賴於另一張表中某字段的值
- 主鍵所在的表爲主表,外鍵所在的表爲從表
- 每一個外鍵值必須與另一個表中的主鍵值相對應
- 創建外鍵約束:create table <表名> (<字段名1> <字段類型1>,……<字段名n> <字段類型n>,[constraint 外鍵約束名] foreign key(字段名) references <主表>(主鍵字段));
- 自動增長列(auto_increment)
- 指定字段的取值自動生成,默認從1開始,每增加一條記錄,該字段的取值會加1 ;
- 只適用於整數型,常配合主鍵一起使用 ;
- 插入第一行記錄的時候,自動增長字段必須要自己輸入,後面行記錄可寫可不寫,不寫默認前一行+1,如,第一行是9,第二行自動爲10,第三行自定義輸入15,第四行自動爲16,11-14則不會出現。
- 創建自動增長約束:create table <表名> (<字段名1> <字段類型1> auto_increment,……<字段名n> <字段類型n>);
- 非空約束(not null)
- 字段的值不能爲空;
- 創建非空約束:create table <表名> (<字段名1> <字段類型1> not null,……<字段名n> <字段類型n>);
- 默認約束(default)
- 如果新插入一條記錄時沒有爲該字段賦值,系統會自動爲這個字段賦值爲默認約束設定的值;
- 這個約束不會報錯;
- 創建默認約束:create table <表名> (<字段名1> <字段類型1> default value,……<字段名n> <字段類型n>);
【理解】
- 只有主鍵約束在一個表中只能有一個,其他約束可多個;
- 主鍵約束、唯一約束和外鍵約束:屬於索引約束,可以表級添加(寫在最後行),且外鍵約束只能寫在最後行。 其他約束只能寫在列級添加(類型後面)。
五、數據表的增刪查
- 創建數據表:create table 表名(…);
(建表之前要先選擇進入數據庫:use 數據庫名稱;
建表時可以不指定約束條件,但是必須指定表名、字段名及每個字段的數據類型;
表名不能與SQL關鍵字相同,同一個數據庫下的表名不能重複 。)
- 查看當前數據庫中所有表:show tables;
- 查看錶結構:desc 表名;
- 刪除數據表:drop table 表名;
六、修改數據表
- 修改表名:alter table 原表名 rename 新表名;
- 修改字段名:alter table 表名 change 原字段名 新字段名 數據類型 [自增/非空/默認] [字段位置];
- 修改字段類型:alter table 表名 modify 字段名 新數據類型 [自增/非空/默認] [字段位置];
- 添加字段:alter table 表名 add 新字段名 數據類型 [自增/非空/默認] [字段位置];
- 刪除字段:alter table 表名 drop 字段名;
- 修改字段的排列位置: (這裏的數據類型需要寫,不然會被刪除)
排第一個:alter table 表名 modify 字段名 數據類型 first;
排在參照字段後:alter table 表名 modify 要排序的字段名 數據類型 after 參照字段;
【注意】
- 修改後類型是否符合已有數據的類型
- 在修改字段名、字段類型、添加字段和字段排列位置時,數據類型必須要寫,否則類型會被刪除,中括號的([自增/非空/默認] [字段位置])可寫可不寫,不寫則默認刪除原先的約束條件(除主鍵外),且只支持“自增/非空/默認”,不接受主鍵、唯一、外鍵約束(索引類約束)
- 原有的主鍵不寫仍然存在。
【例子】
七、總結
- 數據庫的增刪選查:
- Create database……;
- Drop database……;
- use……;
- Show databases;
- Show tables;
- 數據表的增刪選查:
- Create table……;
- Drop table……;
- Desc ……;
- 修改表結構:
- Alter table表名 [rename|change|modify|add|drop] ……