1. 程式人生 > >MySQL資料庫讀書筆記--------資料表的基本操作

MySQL資料庫讀書筆記--------資料表的基本操作

4.1.1 

        在建立表之前應該在命令列輸入: use <databaseName> ,表明進入哪個資料庫進行修改。

4.1.2  主鍵約束

        主鍵,又稱之為主碼,是表中一列或多列的集合,不允許為空它能唯一的標識表中的一條記錄

        行稱之為記錄,列稱之為欄位或者屬性。

CREATE TABLE temp7
(
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT(11)
);

//複合主鍵
CREATE TABLE temp8
(
     id INT(11),
     name VARCHAR(255),
     age INT(11),
     PRIMARY KEY(id,name)
)

4.1.3  外來鍵約束

       原: 一個表的外來鍵可以為空值,若不為空,則每個外來鍵必須等於另外一個表的主鍵的某個值。P50

       外來鍵要麼為空,要麼等於另外一個表的已經存在的主鍵。

       主從表,誰是主表,誰是從表呢? A的外來鍵指向B的主鍵。那麼B是主表或父表,A是從表或子表。

       外來鍵的資料型別必須與主鍵的資料型別一致。

部門有ID ,員工表持有部門ID 。 那麼是員工的外來鍵指向部門的ID,所以員工是從表,部門是主表

//建立部門表
CREATE TABLE dept
(
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL
) ;

//插入資料
INSERT INTO dept(id,name) VALUES(4,'開發部');

//建立employee表,設定外來鍵約束
CREATE TABLE employee
(
   id INT(11) PRIMARY KEY,
   name VARCHAR(255) NOT NULL,
   age INT(11),
   deptId INT(11),
   //外來鍵語法:constraint foreignKeyName foreign key(屬性) references 主表(主鍵)
   CONSTRAINT fk_emp_dept FOREIGN KEY(deptId) REFERENCES dept(id)
);

//這裡必須要指定部門表的某條記錄的主鍵ID
INSERT INTO employee(id,name,age,deptId) VALUES(1,'大宇',22,4);

4.1.4  非空約束

        資料不能為空。插入資料的時候,在資料型別後面追加NOT NULL

4.1.5  唯一性約束

        這個表裡面這個欄位,即這一列的每個值不允許重複。在資料型別後面追加UNIQUE。

PRIMARY KEY 與 QNIQUE的區別

        UNIQUE允許資料為空,而PRIMARY KEY不允許為空。

        UNIQUE能修飾多個欄位,而PRIMARY KEY 只能修飾一個作為主鍵。

4.1.6  使用預設值

         在資料型別後面追加 DEFALUT 預設值。

DROP TABLE IF EXISTS dept;

CREATE TABLE dept
(
   id INT(11) PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) DEFAULT '蘇州'
);

INSERT INTO dept(id,name) VALUES(1,'技術開發部');

4.1.7  設定主鍵自增

        在資料型別後面追加 AUTO_INCREMENT

        一個表只能有一個屬性進行自增,一般是整數型別(INT、BIGINT、TINYINT)自增。

        主鍵預設值從1開始。

DROP TABLE IF EXISTS dept;

CREATE TABLE dept
(
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) DEFAULT '蘇州'
);

INSERT INTO dept(name) VALUES('技術開發部');

4.2.1  查看錶結構

        DESC  表名;

        

key有三個值。  PRI表示主鍵,UNI表示唯一性約束,MUL表示這個值能出現多次。

4.2.2  獲取表詳細的建立語句

        SHOW CREATE TABLE 表名   

4.3.1 修改表名

        把表employee改名為 employee2

ALTER TABLE employee RENAME TO employee2

4.3.2  修改欄位的資料型別(欄位沒動,所以用MODIFY)

        把dept表的name欄位長度從255修改成100

ALTER TABLE dept MODIFY name VARCHAR(100);
DESC dept;

4.3.3  更改欄位名(欄位都動了,所以用CHANGE)

        把name屬性更換成了chineseName屬性。

//ALTER TABLE dept CHANGE 舊屬性名 新屬性名 資料型別 資料約束
  ALTER TABLE dept CHANGE name chineseName VARCHAR(255) NOT NULL

4.3.4  新增欄位

       資料約束比如UNIQUE或者是NOT NULL 追加在資料型別後面即可。

//預設新增telephone到dept表的末尾
ALTER TABLE dept ADD telephone VARCHAR(255);
//新增number欄位到dept表的開頭
ALTER TABLE dept ADD number VARCHAR(255) FIRST;
//新增englishName欄位到dept表的chineseName屬性後面
ALTER TABLE dept ADD englishName VARCHAR(255) AFTER chineseName;

       

4.3.5  刪除欄位

//刪除dept表的englishName欄位
ALTER TABLE dept DROP englishName

4.3.6  修改欄位

ALTER TABLE dept MODIFY telephone VARCHAR(255) FIRST;
ALTER TABLE dept MODIFY id INT(11) AFTER address;

        

4.3.8  刪除外來鍵約束

        employee2表的外來鍵資訊如下

ALTER TABLE employee2 DROP FOREIGN KEY fk_emp_dept;