庫的切換 USE 庫名; 庫的查看 SHOW DATABASES; 庫的表查看 SHOW TABLES; 庫的建立 CREATE DATABASE [IF NOT EXISTS] 庫名 [CHARACTER SET 字符集]; 庫的修改 修改庫名 關閉Mysql服務器 -> 到data目錄下手動修改庫名 -> 重啓Mysql服務器便可 修改庫的字符集 ALTER DATABASE 庫名 CHARACTER SET 字符集; 庫的刪除 DROP DATABASE [IF EXISTS] 庫名;
表的結構查看 DESC 表名; 表的建立 CREATE TABLE 表名( 列名 列的類型 [(長度)] [約束], 列名 列的類型 [(長度)] [約束], ... 列名 列的類型 [(長度)] [約束] ); 表的修改 修改表名 ALTER TABLE 舊錶名 RENAME TO 新表名; 添加列 ALTER TABLE 表名 ADD COLUMN 列名 數據類型 [FIRST | AFTER 字段名]; 修改列名 ALTER TABLE 表名 CHANGE COLUMN 舊列名 新列名 數據類型; 修改列類型或約束 ALTER TABLE 表名 MODIFY COLUMN 列名 新類型 [新約束]; 刪除列 ALTER TABLE 表名 DROP COLUMN 列名; 表的刪除 DROP TABLE [IF EXISTS] 表名; 表的複製 複製表結構 CREATE TABLE 複製表名 LIKE 表名; 複製表結構+數據 CREATE TABLE 複製表名 SELECT * FROM 表名; 複製表部分結構 CREATE TABLE 複製表名 SELECT 列1[,列2..] FROM 表名 WHERE 0;
分類 數值型: 整型:TINYINT、SMALLINT、MEDIUMINT、INT/Integer、BIGINT 小數: 定點數:DECIMAL(M, D) 浮點數:FLOAT(M, D)、DOUBLE(M, D) 字符型: 字符串:CHAR、VARCHAR 文本:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT 二進制:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB 日期型: YEAR、TIME、Date、DATETIME、TIMESTAMP 數值型 整型 類型 字節 範圍(有符號) 範圍(無符號) 用途 TINYINT 1 -2^7 ~ 2^7-1 0 ~ 2^8-1 微小整數 SMALLINT 2 -2^15 ~ 2^15-1 0 ~ 2^16-1 小整數 MEDIUMINT 3 -2^23 ~ 2^23-1 0 ~ 2^24-1 中整數 INT(Integer) 4 -2^31 ~ 2^31-1 0 ~ 2^32-1 大整數 BIGINT 8 -2^63 ~ 2^63-1 0 ~ 2^64-1 極大整數 1、默認有符號,經過UNSIGNED關鍵字設置無符號 2、數值超出範圍,會報out of range異常警告,而且插入臨界值 3、若是不設置長度,會有默認的長度 4、長度表明顯示的最大寬度,若是不夠則左邊用0填充,但必須搭配ZEROFILL纔會顯示,並默認變爲無符號整型 小數型 類型 字節 範圍 用途 FLOAT(M, D) 4 ±1.75494351E-38~ ±3.402823466E+38 單精度浮點數(8位精度) DOUBLE(M, D) 8 ±2.2250738585072014E-308~ ±1.7976931348623157E+308 雙精度浮點數(16位精度) DECIMAL(M, D) M>D爲M+2,不然D+2 依賴於M和D的值 定點數 1、M:整數部位+小數部位,D:小數部位 2、若是超過範圍,會報out of range異常警告,而且插入臨界值 3、M和D均可以省略,若是是定點數,M默認爲10,D默認爲0 4、若是精確度要求較高,則優先考慮使用定點數 字符型 類型 字節 用途 CHAR 0 ~ 2^8-1 固定長度字符串 VARCHAR 0 ~ 2^16-1 可變長度字符串 TINYBLOB 0 ~ 2^8-1 微小的二進制形式文本數據 TINYTEXT 0 ~ 2^8-1 微小的文本數據 BLOB 0 ~ 2^16-1 小的二進制形式文本數據 TEXT 0 ~ 2^16-1 小的文本數據 MEDIUMBLOB 0 ~ 2^24-1 中等的二進制形式文本數據 MEDIUMTEXT 0 ~ 2^24-1 中等的文本數據 LONGBLOB 0 ~ 2^32-1 極大的二進制形式文本數據 LONGTEXT 0 ~ 2^32-1 極大的文本數據 日期型 類型 字節 範圍 格式 用途 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 '-838:59:59'/'838:59:59' hh:mm:ss 時間值 YEAR 1 1901/2155 YYYY 年份值 DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD hh:mm:ss 日期和時間值 TIMESTAMP 4 1970-01-01 00:00:00/2038-1-19 11:14:07 YYYYMMDD hh:mm:ss 時間戳值(結束時間是第 2147483647 秒) 1、TIMESTAMP是UTC時間戳,與時區相關。 2、DATETIME的存儲格式是一個YYYYMMDDHHmmSS的整數,與時區無關。 3、DATETIME的存儲範圍大於TIMESTAMP。 4、TIMESTAMP的列能夠自動更新。 5、除非有特殊需求,不然建議使用TIMESTAMP。 ENUM、SET、BIT 1、ENUM列容許在列中存儲一組定義值中的單個值。 2、SET列容許在列中存儲一組定義值中的一個或多個值。 3、BIT在InnoDB中實際上是一個最小的整數類型。而MySQL在檢索BIT的時候會將其當作字符串,而不是整數,這可能會致使一些奇怪的行爲。 4、不建議使用這三個類型:用整數代替。
語法: 1、建立表時添加約束 CREATE TABLE 表名( 字段名 字段類型 列級約束, 字段名 字段類型, [CONSTRAINT 約束名] 約束類型(字段名) [外鍵的引用] ); 2、修改表時添加約束 ALTER TABLE 表名 MODIFY COLUMN 字段名 字段類型 新約束; # 列級約束 ALTER TABLE 表名 ADD [CONSTRAINT 約束名] 約束類型(字段名) [外鍵的引用]; # 表級約束 3、查看約束 DESC 表名; SHOW INDEX FROM 表名; 含義: 一種限制,用於限制表中的數據,爲了保證表中的數據的準確和可靠性 分類: 主鍵約束(PRIMARY KEY):惟一性,非空性。 惟一約束(UNIQUE):惟一性,能夠空,但只能有一個。 檢查約束(CHECK):對該列數據的範圍、格式的限制。[MySQL中不支持] 非空約束(NOT NULL):所約束的列不能爲NULL值。 外鍵約束(FOREIGN KEY):須要創建兩表間的關係並引用主表的列。 默認約束(DEFAULT):該數據的默認值。 約束支持: 列級約束:主鍵、惟1、檢查、非空、默認 表級約束:主鍵、惟1、檢查、外鍵 案例: 1、建立表時添加約束 CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY, # 主鍵 stuname VARCHAR(20) NOT NULL, # 非空 gender CHAR(1) CHECK(gender='男' OR gender ='女'), # 檢查 age INT DEFAULT 18, # 默認 seat INT UNIQUE, # 惟一 majorid INT, CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外鍵 ); 2、修改表時添加約束 案例1:添加主鍵 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY; # 列級約束 ALTER TABLE stuinfo ADD PRIMARY KEY(id); # 表級約束 案例2:添加外鍵 ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id); 3、修改表時刪除約束 案例1:刪除默認約束 ALTER TABLE stuinfo MODIFY COLUMN age INT ; 案例2:刪除主鍵 ALTER TABLE stuinfo DROP PRIMARY KEY; 案例3:刪除惟一 ALTER TABLE stuinfo DROP INDEX seat; 案例4:刪除外鍵 ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
含義:
能夠不用手動的插入值,系統提供默認的序列值 特色: 1、標識列必須和key搭配 2、一個表只能有一個標識列 3、標識列的類型只能是數值型 4、標識列能夠經過 SET auto_increment_increment=3;設置步長 案例: 1、建立表時添加標識列,並設置起始值 CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL ) AUTO_INCREMENT = 1000; 2、修改表時添加標識列 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT; 3、修改表時刪除標識列 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY; 4、修改標識列起始值 ALTER TABLE stuinfo AUTO_INCREMENT = 2000;