數據表屬於數據庫,在創建數據表之前要使用“USE <數據庫名>”指定操作是在哪個數據庫中進行的,如果沒有選擇數據庫,將會出現“No database selected”的錯誤
創建數據表的語句為:
CREATE TABLE ,
語法規則為:
CREATE TABLE <表明>
(
字段1 數據類型 [列級約束條件] [默認值],
字段2 數據類型 [列級約束條件] [默認值],
......
[表級約束條件]
);
使用CREATE TABLE創建表的時候,必須指定以下信息:
(1)要創建的表的名稱,不區分大小寫,不能使用SQL語言中的關鍵字,如DROP、ALTER、INSERT等。
(2)創建表中每一列的名稱、數據類型時,如果要創建多個列,要使用逗號。
范例:
創建員工表employee。
首先選擇創建表的數據庫:
USE study
創建employee表的SQL語句:
CREATE TABLE employee
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
);
使用SHOW TABLES;查詢數據表是否創建成功。
主鍵,又稱主碼,是表中一列或多列的組合。逐漸約束要求主鍵列的數據唯一,並且不允許為空。主鍵能唯一的表示表中的一條數據,可以結合外鍵來定義不同數據表之間的關系,並且可以加快數據查詢的速度。主鍵分為兩種類型:單字段主鍵和多字段聯合主鍵。
單字段主鍵
單字段主鍵是有一個字段組成,SQL語句格式分為以下兩種情況:
(1)在定義列的同時指定主鍵,語法規則如下:
字段名 數據類型 PRIMARY KEY [默認值]
范例:
定義數據表employee2,其主鍵為id
CREATE TABLE employee2
(
id INT (11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);
(2)在定義完所有的列之後指定主鍵
[CONSTRAINT <約束名>] PRIMARY KEY(字段名)
范例:定義數據表employee3,其主鍵為id,SQL語句如下
CREATE TABLE employee3
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(id)
);
多字段聯合主鍵
多字段聯合主鍵是由多個字段聯合組成的,語法規則如下:
PRIMARY KEY [字段1,字段2,......字段n]
范例:
定義數據表employee4,假設表中沒有主鍵id,為了唯一確定一個員工,可以把name和deptId聯合起來作為主鍵,SQL語句如下:
CREATE TABLE employee4
(
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY (name,deptId)
);
外鍵用來在兩個表之間建立連接,他可以是一列或多列。一個表可以有一個或多個外鍵。外鍵對應的是參照完整性,一個表的外鍵可以為空值,若不為空值,則每個外鍵值必須等於另一個表中主鍵的某個值。
外鍵:
外鍵是表中的一個字段,外鍵可以不是本表的主鍵,但是外鍵應該是另一個表的主鍵。外加的主要作用就是保存數據引用的完整性,定義外鍵後,不允許刪除在另一表中具有關聯關系的行。外鍵的作用是保持數據的一致性,完整性。例如:部門表department的主鍵是id,在員工表employee5中有一個鍵deptId與這個id關聯。
主表(父表):對於兩個具有關聯關系的表而言,相關連字段中主鍵所在的那個表即是主表
從表(子表):對於兩個具有關聯關系的表而言,相關聯字段中外鍵所在的表即是從表
創建外鍵的語法格式:
[CONSTRAINT <外鍵名>] FOREIGN KEY 字段名1 [,字段名2,...]
REFERENCES <主表名> 主鍵列1 [,主鍵列2,....]
“外鍵名”為定義的外鍵約束的名稱。一個表中不能有相同的外鍵;“字段名”表示子表需要添加外鍵約束的字段列;“主表名”即被子表外鍵所依賴的表的名稱;“主鍵列”表示主表中定義的主鍵列或列組合
范例:
定義數據表emplpyee5,並在employee5表上創建外鍵約束。
創建一個部門表department:
CREATE TABLE department
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL;
location VARCHAR(50)
);
定義數據表employee5,讓它的鍵deptId作為外鍵關聯到deparment的主鍵:
create table employee5
(
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint foreign_key_emy_dept foreign key(deptId) references department(id)
);
以上語句執行成功後,在表emplyee5上添加了名為foreign_key_emy_dept的外鍵約束。外鍵名稱為的deptId,其依賴於主表department的主鍵id
非空約束指的是字段的值不能為空。對於使用了非空約束的字段,如果用戶在添加數據時沒有指定值,數據庫系統會報錯。
非空約束的語法規則如下:
字段名 數據類型 not null
范例:
定義數據表employee6,指定員工的名稱不能為空:
create table employee6
(
id int(11) primary key,
name varchar(25) not null,
deptId int(11),
salary float,
constraint foreign_key_emy_dept2 foreign key(deptId) references department(id)
);
執行後,在employee6中創建了一個name字段,其插入值不能為空。
唯一性約束要求該列唯一,允許為空,但是只能出現一個空值。唯一性約束可以確保一列或者幾列不出現重復值。
非空約束的語法規則如下:
(1)在定義列之後直接定義唯一性約束。語法規則如下:
字段名 數據類型 UNIQUE
范例:創建department2,指定部門名稱唯一:
create table department2
(
id int(11) primary key,
name varchar(22) unique,
location varchar(50)
);
(2)在定義完所有的列之後指定唯一性約束,語法規則如下:
[CONSTRAINT<約束名>] UNIQUE (<字段名>)
范例:
定義數據表department3,指定部門名稱唯一。
create table department3
(
id int(11) not null,
name varchar(22),
location varchar(50),
constraint sth unique(name)
);
UNIQUE和PRIMARY KEY的區別:一個表中可以有多個字段聲明為UNIQUE,但是只能有一個PRIMARY KEY聲明;聲明為PRIMARY KEY 的列不允許有空值,但是聲明為UNIQUE的字段可以有空值。
默認約束指定某列的默認值。如男同學較多,性別就可以設置為默認的’男‘。如果插入一條新的記錄時沒有為這個字段賦值,那麼系統會自動將這個字段賦值為’男‘。
默認約束的語法格式:
字段名 數據類型 DEFUALT 默認值
范例:
定義數據表employee7,指定員工的部門編號默認為1111:
create table employee7
(
id int(11) primary key,
name varchar(24) not null,
deptId int(11) default 1111,
salary float,
constraint foreign_key_emp_dept4 foreign key(deptId) references department(id);
);
在數據庫中,經常希望在每次插入新紀錄時,系統自動生成字段的主鍵值。可以通過為表的主鍵添加AUTO_INCREMENT關鍵字來實現。默認的,在MySQL中,AUTO_INCREMENT的初始值是1,每新增一條記錄,字段值自動加1.一個表只能有一個字段使用AUTO_INCREMENT約束,且該字段必須為主鍵的一部分。AUTO_INCRE MENT約束的字段可以是任何的整數類型(TINYINT/SAMLLIN/INT/BIGINTD等)
設置自動增加的語法規則:
字段名 數據類型 AUTO_INCREMENT
范例:
create table employee8
(
id int(11) primary key auto_increment,
name varchar(25) not null,
deptId int(11)
);