MySQL整理4—數據表的基本操作1
阿新 • • 發佈:2019-03-05
1.2 包括 級聯操作 相互轉換 pri tid 表結構 困難 類型
主要內容:創建數據表,查看數據表結構,修改數據表,刪除數據表,約束、默認和規則含義
一、創建數據表
語法形式: create table <表名> ( 字段1 , 數據類型 [列級別約束條件][默認值], 字段2 , 數據類型 [列級別約束條件][默認值], ... );
例子:
create create table tb_emp1( id int(11) primary key, name varchar(25), deptID int(11), salary float /*添加主鍵約束,在最後添加也可*/ /*primary key(id)*/ /*多字段主鍵添加 primary key(id,name)*/ );
約束包括哪些?
- 非空約束 (not null)
- 唯一性約束 (unique)
- 主鍵約束 (primary key) 簡稱 PK
- 外鍵約束 (foreign key) 簡稱 FK
- 檢查約束【目前MYSQL不支持,oracle數據庫支持】
1.主鍵:表中的每一行都應該具有可以唯一標識自己的一列(或一組列)。而這個承擔標識作用的列稱為主鍵。如果沒有主鍵,數據的管理將會十分混亂。比如會存在多條一模一樣的記錄,刪除和修改特定行十分困難。
任何列都可以作為主鍵,只要它滿足以下條件:
- 任何兩行都不具有相同的主鍵值。就是說這列的值都是互不相同的
- 每個行都必須具有一個主鍵值。主鍵列不允許設置為NULL
- 主鍵列的值不建議進行修改和更新
(註釋:在第一部分,數據庫基礎中,主鍵知識已介紹)
2.外鍵
基本概念 :
- (1) MySQL中“鍵”和“索引”的定義相同,所以外鍵和主鍵一樣也是索引的一種。不同的是MySQL會自動為所有表的主鍵進行索引,但是外鍵字段必須由用戶進行明確的索引。用於外鍵關系的字段必須在所有的參照表中進行明確地索引,InnoDB不能自動地創建索引。
- (2) 外鍵可以是一對一的,一個表的記錄只能與另一個表的一條記錄連接,或者是一對多的,一個表的記錄與另一個表的多條記錄連接。
- (3) 如果需要更好的性能,並且不需要完整性檢查,可以選擇使用MyISAM表類型,如果想要在MySQL中根據參照完整性來建立表並且希望在此基礎上保持良好的性能,最好選擇表結構為innoDB類型。
- (4) 外鍵的使用條件: ① 兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵 ② 外鍵列必須建立了索引,MySQL 4.1.2以後的版本在建立外鍵時會自動創建索引,但如果在較早的版本則需要顯式建立; ③ 外鍵關系的兩個表的列必須是數據類型相似,也就是可以相互轉換類型的列,比如int和tinyint可以,而int和char則不可以;
- (5) 外鍵的好處:可以使得兩張表關聯,保證數據的一致性和實現一些級聯操作。
create table tb_dept1( id int(11) primary key, name varchar(22) not null, location varchar(50) ); create table tb_emp5( id int(11) primary key, name varchar(25), deptID int(11), salary float, constraint fk_empdept1 foreign key(deptID) references tb_dept1(id) );
3.非空約束
強制列不能為 NULL 值,約束強制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。例子:name字段不能為空
create table tb_dept1( id int(11) primary key, name varchar(22) not null, location varchar(50) );
4.唯一性約束
unique約束的字段具有唯一性,不可重復。唯一性約束要求該列唯一,允許為空,但只能出現一個空值。唯一性約束可以確保一列或者幾列不出現重復值。
- UNIQUE KEY 唯一約束
- 唯一約束可以保證數據的唯一性
- 唯一約束的字段可以為空
- 每張數據表可以有存在多個唯一約束
create table tb_dept1( id int(11) primary key, name varchar(22) unique, location varchar(50) /*或者在最後添加constraint <約束名> unique <字段名>*/ /*constraint na unique(name)*/ );
5.設置表的屬性自動增加
在數據庫應用中,經常希望在每次插入新紀錄時,系統自動生成字段的主鍵值。 實現此目的,可以使用關鍵字:ATUO_INCREMENT
- 1.默認,MySQL中AUTO_INCREMENT的初值是1,每新增一條記錄,字段值自動加1;
- 2.一個表只能用一個字段使用AUTO_INCREMENT約束,且該字段必須為主鍵的一部分。
- 約束的字段可以是任何整數類型(tinyint,smallint,int,bigint)
create table tb_emp1( id int(11) primary key auto_increment, name varchar(25), deptID int(11), salary float ); insert into tb_emp1(name,salary) values(‘lucy‘,7000),(‘tom‘,15000),(‘steven‘,40000);
插入數據後,id字段自動增加1。
MySQL整理4—數據表的基本操作1