MySQL列的默認值主鍵索引與自增 刪除增加與修改


1. 某些列不插入內容,值是多少?
  自動填充NULL
2. NOT NULL是干嘛的?
  不能為NULL類型,因為NULL類型查詢的時候需要加語句 IS NULL 或者IS NOT NULL
  效率低,查詢速度慢,開發中我們一般不可以設置為默認的能插入NULL類型。
  所以會使用NOT NULL來限制使用NULL類型。

3. 既然沒有默認值了,我們如何手動設置默認值?
  使用哪個DEFAULT

 1 -- 設置兩個列id和name
 2 -- id內容不能為NULL 默認值0
 3 -- name內容不能為NULL 默認值空字符串
 4 CREATE TABLE t14 (
 5 id INT NOT NULL DEFAULT 0,
 6 name CHAR(10) NOT NULL DEFAULT ''
 7 );
 8 INSERT INTO t14 VALUES (1,'listi');
 9 INSERT INTO t14 (id) VALUES (2);
10 SELECT * FROM t14;
11 SELECT * FROM t14 WHERE name='';

1. 什么是主鍵?
PRIMARY KEY,能夠區分每一行的列
以會員為例
我們為了區分他們,往往給每一個會員加一個獨一五二的會員號,這個會員號就是主鍵,主要在唯一
的號碼上加。

2. 設置主鍵后一定不能重復
不重復的是不是都可以是主鍵?比如說手機號,email,也不重復。
當然不是,它還具備這么幾個特征,有順序,並且遞增或者遞減的一般才會加主鍵。
一張表中,不聲明主鍵也可以,取決於你表中數據有沒有有順序遞增或者遞減的列數據。

3. 兩種聲明主鍵的方式:

 1 -- 在需要加主鍵的后面跟着主鍵語句
 2 CREATE TABLE t15 (
 3 id INT PRIMARY KEY,
 4 name CHAR(5)
 5 );
 6 -- 在語句的最后再聲明一行聲明哪個列名要加主鍵
 7 CREATE TABLE t16 (
 8 id INT,
 9 name CHAR(5),
10 PRIMARY KEY(id)
11 );
12 -- 不可以添加重復的信息
13 INSERT INTO t15 VALUES (3,'list');
14 INSERT INTO t15 VALUES (3,'list');

4.主鍵往往和 AUTO_INCREMENT 一起使用
這並不意味着,他們兩個必須要綁定在一起使用,我們一般會把自增的列加上主鍵,提升效率。
但有時候,我們非要用email做主鍵,讓email這一個列提高效率,也是可以的。

5.AUTO_INCREMENT不可單獨使⽤
使用自增選項,必須要有索引設置,否則會報錯。
索引還有,普通索引INDEX,唯一UNIQUE,全文索引FULLTEXT。

表創建完畢后,能否添加 1 個列?刪除 1 個列?修改一個列?
新增一個列,或者刪除修改一個列,這屬於 DDL 操作,數據庫定義語言。
區分數據的增刪改,插⼊數據是指表中的數據,不會影響到表的結構。
新建user_info 表:

1 -- id,名字,性別,體重
2 CREATE TABLE user_info(
3 id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
4 username CHAR(20) NOT NULL DEFAULT '',
5 gender TINYINT UNSIGNED NOT NULL DEFAULT 0,
6 weight TINYINT UNSIGNED NOT NULL DEFAULT 0
7 )ENGINE=MyISAM DEFAULT CHARSET=utf8;

語法:
ALTER TABLE 表名 ADD 列名 列類型 列屬性... (新列 默認在表的最后)
ALTER TABLE 表名 ADD 列名 列類型 列屬性... AFTER 列名 (新列出現指定列后)
ALTER TABLE 表名 ADD 列名 列類型 列屬性... FIRST (新列為第 1 列)

ALTER TABLE 表名 CHANGE 舊列名 新列名 新類型 列屬性....
ALTER TABLE 表名 MODIFY 列名 新屬性....
ALTER TABLE 表名 DROP [COLUNM] 列名

 1 -- 1.添加一個列,默認新增列追加在表的最后
 2 ALTER TABLE user_info ADD height TINYINT UNSIGNED NOT NULL DEFAULT 0;
 3 -- 查看表結構
 4 DESC user_info;
 5 -- 2.刪除身高列
 6 ALTER TABLE user_info DROP height;
 7 DESC user_info;
 8 -- 3.再增加身⾼列,放在username后面
 9 ALTER TABLE user_info ADD height TINYINT NOT NULL DEFAULT 0 AFTER username;
10 DESC user_info;
11 -- 4.現在人的身高越來越高,255的TINYINT已經不夠存了,我們需要改變列類型,改成SMALLINT
12 -- 使用CHANGE可以將列名一起修改了.
13 ALTER TABLE user_info CHANGE height shengao SMALLINT NOT NULL DEFAULT 0;
14 DESC user_info;
15 -- 5.MODIFY 也可以修改列,跟CHANGE區別在於,MODIFY不可以修改列名
16 ALTER TABLE user_info MODIFY shengao TINYINT NOT NULL DEFAULT 0;
17 DE

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM