一、表結構修改(alter)(瞭解):
-- 修改表名:
alter table tb_name rename to new_name;
-- 修改字段名:
alter table tb_name change name new_name data_type;
-- 修改字段類型:
ALTER TABLE tb_name MODIFY field_name data_type;
-- 添加字段:
ALTER TABLE tb_name ADD [COLUMN] field_name data_type;
-- 刪除字段:
ALTER TABLE tb_name DROP [COLUMN] field_name;
二、約束條件:
(一)、概念:約束是一種限制,通過對錶中的數據做出限制,來確保表中數據的完整性,唯一性。
(二)、默認約束(default):
CREATE TABLE tb(
id int default ‘a’ , -- a爲數值
name varchar(20)
);
注意:插入數據的時候,如果沒有明確爲字段賦值,則自動賦予默認值;
在沒有設置默認值的情況下,默認值爲NULL;
(三)、非空約束(not null) :
CREATE TABLE tb(
id int not null,
name varchar(20)
);
注意:1、限制一個字段的值不能爲空;
2、 Insert的時候必須爲該字段賦值;
3、空字符不等於NULL。
(四)、唯一約束(unique key) :
CREATE TABLE tb(
id int unique key,
name varchar(20)
);
注意:1、限制一個字段的值不重複;
2、該字段的數據不能出現重複的;
3、確保字段中值的唯一。
(五)、主鍵約束(primary key) :
CREATE TABLE tb(
id int primary key,
name varchar(20)
);
注意: 1、通常每張表都需要一個主鍵來體現唯一性;
2、每張表裏面只能有一個主鍵;
3、主鍵 = 非空 + 唯一。
(六)、自增長約束(auto_increment) :
CREATE TABLE tb(
id int auto_increment,
name varchar(20)
);
注意:1、自動編號,和主鍵組合使用;
2、一個表裏面只能有一個自增長;
3、auto_increment 要求用在主鍵上。
(七)、外鍵約束(foreign key):
1、特點:①、保持數據的一致性;
②、 我有的你一定有, 你沒有的, 我絕對沒有。
-- 表a
CREATE TABLE a(
id_a int primary key,
name varchar(20)
);
-- 表b
CREATE TABLE b(
id_b int primary key,
name varchar(20),
foreign key (id_b) references a(id_a)
);
2、 注意:①. B表中的id_b字段,只能添加 id_a中已有的數據;
②. A表中id_a 被參照的數據, 不能被修改和刪除。
三、表關係:
一對一、一對多、多對多
示例:選課系統(E-R圖)
(一)、一對一:用外鍵的方式,把兩個表的主鍵關聯。
舉例:學生表中有學號、姓名、學院,但學生還有些比如電話,家庭住址等比較私密的信息,這些信息不會放
在學生表當中,會新建一個學生的詳細信息表來存放。這時的學生表和學生的詳細信息表兩者的關係就
是一對一的關係,因爲一個學生只有一條詳細信息。用主鍵加主鍵的方式來實現這種關係。
-- 建立詳細學生表:
create table student_details(
id int primary key,
sex varchar(20) not null,
age int,
address varchar(20) comment '家庭住址',
parents varchar(20),
home_num varchar(20),
foreign key (id) references student(s_id)
);
(二)、一對多:
舉例:通常情況下,學校中一個學院可以有很多的學生,而一個學生只屬於某一個學院。
學院與學生之間的關係就是一對多的關係,通過外鍵關聯來實現這種關係。
-- 創建學院表
create table department(
d_id int primary key auto_increment, -- 學院id
d_name varchar(20) not null -- 學院名
);
-- 創建學生表
create table student(
s_id int primary key auto_increment, -- 學生id
s_name varchar(20) not null, -- 學生名字
dept_id int not null, -- 所屬學院 id
foreign key(dept_id) references department(d_id) -- 外鍵
);
insert into department values(1, "外國語學院"), (2, "計算機學院");
insert into student values(1, "小奮", 2),(2, "striver", 1);
(三)、多對多:
舉例:學生要報名選修課,一個學生可以報名多門課程,一個課程有很多的學生報名,那麼學生表和課程表兩者就形
成了多對多關係。
對於多對多關係,需要創建中間表實現。
-- 建立課程表:
create table cours(
cours_id int primary key auto_increment,
cours_name varchar(20) not null
);
-- 選課表 (中間表)
create table select(
s_id int, -- 用來記錄學生id
cours_id int, -- 用來記錄 課程id
primary key(s_id,cours_id), -- 聯合主鍵
foreign key(s_id) references student(s_id), -- 關聯學生id
foreign key(cours_id) references cours(cours_id) -- 關聯 課程id
);
insert into course values (1, "Python程序設計"), (2, "大學英語"), (3, "高等數學");
insert into select_cou values(1, 3); -- 表示學號爲一的同學選擇了音樂鑑賞這門課程