1. 程式人生 > >MySQL整理4—數據表的基本操作1

MySQL整理4—數據表的基本操作1

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