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;