MySQL數據庫基本操作(三)

一、表結構修改(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);  -- 表示學號爲一的同學選擇了音樂鑑賞這門課程

  MySQL數據庫基本操作(一)

  MySQL數據庫基本操作(二)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章