# 註釋內容 -- 註釋內容 -- 創建資料庫 king CREATE DATABASE king; -- 查看當前伺服器下有哪些資料庫 SHOW DATABASES; SHOW SCHEMAS; -- 查看king資料庫的詳細信息 SHOW CREATE DATABASE king; -- 創建數 ...
# 註釋內容 -- 註釋內容 -- 創建資料庫 king CREATE DATABASE king; -- 查看當前伺服器下有哪些資料庫 SHOW DATABASES; SHOW SCHEMAS; -- 查看king資料庫的詳細信息 SHOW CREATE DATABASE king; -- 創建資料庫queen 並且指定編碼方式為gbk CREATE DATABASE IF NOT EXISTS queen DEFAULT CHARACTER SET 'GBK'; -- 查看當前伺服器下全部的資料庫 SHOW DATABASES; -- 查看queen指定資料庫的詳細信息 SHOW CREATE DATABASE queen; -- 將queen的資料庫的編碼方式改為utf8 ALTER DATABASE queen DEFAULT CHARACTER SET 'UTF8'; -- 打開queen的資料庫 USE queen; -- 得到當前打開的資料庫 SELECT DATABASE(); SELECT SCHEMA(); -- 刪除king資料庫 DROP DATABASE IF EXISTS king; DROP DATABASE IF EXISTS queen;
-- 創建測試用資料庫 test CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET 'UTF8'; -- 打開test USE test; -- 用戶表 test_user CREATE TABLE IF NOT EXISTS test_user( id INT, username VARCHAR(20), password CHAR(32), email VARCHAR(50), age TINYINT, card CHAR(18), tel CHAR(11), salary FLOAT(8,2), married TINYINT(1), addr VARCHAR(100), sex ENUM('男','女','保密') )ENGINE=INNODB CHARSET=UTF8; -- 查看test_user表的表結構 DESC test_user; DESCRIBE test_user; SHOW COLUMNS FROM test_user; -- 刪除test_user表 DROP TABLE IF EXISTS test_user; -- 查看當前資料庫下的數據表 -- 查看test_user表的詳細信息 -- 通過三種方式查看指定數據表的表結構 -- 最後刪除test_user數據表
資料庫增加數據與查詢數據
-- 用戶表 test_user CREATE TABLE IF NOT EXISTS test_user( id INT, username VARCHAR(20), password CHAR(32), email VARCHAR(50), age TINYINT, card CHAR(18), tel CHAR(11), salary FLOAT(8,2), married TINYINT(1), addr VARCHAR(100), sex ENUM('男','女','保密') )ENGINE=INNODB CHARSET=UTF8; -- INSERT [INTO] tbl_name(id,username,...) VALUES(1,'KING',...); -- 向test_user表插入一條記錄 INSERT test_user(id,username,password,email,age,card,tel,salary,married,addr,sex) VALUES(1,'king','king','[email protected]',24,'xxxxxxxxxxxxxxxxxx','132xxxxxxxx',88888.68,0,'寧波','男'); -- 查詢表中所有記錄 SELECT * FROM tbl_name; SELECT * FROM test_user; INSERT test_user(id,username,password,email,age,card,tel,salary,married,addr,sex) VALUES(-5,'king','123456','[email protected]',190,'xxxxxxxxxxxxxxxxxx','132xxxxxxxx',2345.68,1,'寧波','女');
數據類型測試-測試整型+無符號+零填充
-- 測試整型 CREATE TABLE test_int( a tinyint, b smallint, c mediumint, d int, e bigint ); INSERT test_int(a) VALUES(-128); -- 如果超出數據的範圍,會產生截斷現象 INSERT test_int(a) VALUES(-129); INSERT test_int(a) VALUES(1270); -- 測試無符號 CREATE TABLE test_unsigned( a tinyint, b tinyint UNSIGNED ); INSERT test_unsigned(a,b) VALUES(-12,-12); INSERT test_unsigned(a,b) VALUES(0,0); INSERT test_unsigned(a,b) VALUES(0,256); -- 測試零填充 ZEROFILL CREATE TABLE test_int1( a tinyint ZEROFILL, b smallint ZEROFILL, c mediumint ZEROFILL, d int ZEROFILL, e bigint ZEROFILL ); INSERT test_int1(a,b,c,d,e) VALUES(1,1,1,1,1); CREATE TABLE test_int2( a tinyint(2), b smallint(2) ); INSERT test_int2(a,b) VALUES(123,45678);
數據類型測試-測試浮點型
-- 測試浮點型 CREATE TABLE test_float( a FLOAT(6,2), b DOUBLE(6,2), c DECIMAL(6,2) ); INSERT test_float(a,b,c) VALUES(4.143,4.146,4.149); CREATE TABLE test_float1( a FLOAT, b DOUBLE, c DECIMAL ); INSERT test_float1(a,b,c) VALUES(4.143,4.146,4.649); INSERT test_float(a,b,c) VALUES(1234567.89,2345678.9,567890.89);
數據類型測試-測試char和varchar+text+ENUM+set
-- 測試char 和 varchar CREATE TABLE test_str( a CHAR(5), b VARCHAR(5) ); INSERT test_str(a,b) VALUES('',''); INSERT test_str(a,b) VALUES('a','a'); INSERT test_str(a,b) VALUES('ab','ab'); INSERT test_str(a,b) VALUES('abc','abc'); INSERT test_str(a,b) VALUES('abcd','abcd'); INSERT test_str(a,b) VALUES('abcde','abcde'); INSERT test_str(a,b) VALUES('abcdef','abcdef'); INSERT test_str(a,b) VALUES(' 123 ',' 123 '); SELECT CONCAT('*',a,'*'),CONCAT('*',b,'*') FROM test_str; -- 測試TEXT不能有預設值 CREATE TABLE test_str1( content TEXT DEFAULT 'THIS IS A TEST' ); -- 測試ENUM CREATE TABLE test_enum1( sex ENUM('男','女 ','保密 ') ); INSERT test_enum(sex) VALUES('男'); INSERT test_enum(sex) VALUES('男1'); INSERT test_enum(sex) VALUES(NULL); INSERT test_enum(sex) VALUES(1); INSERT test_enum(sex) VALUES(3); INSERT test_enum(sex) VALUES(5); -- 測試SET CREATE TABLE test_set( a SET('A','B','C','D','E','F') ); INSERT test_set(a) VALUES('A'); INSERT test_set(a) VALUES('C'); INSERT test_set(a) VALUES('C,D,E'); INSERT test_set(a) VALUES('C,F,A'); INSERT test_set(a) VALUES('C,F,A,H'); INSERT test_set(a) VALUES(2);
數據類型測試-測試時間類型
-- HH:MM:SS [D HH:MM:SS] D表示天數 0~34 -- 測試TIME類型 CREATE TABLE test_time( a TIME ); INSERT test_time(a) VALUES('12:23:45'); INSERT test_time(a) VALUES('2 12:23:45'); INSERT test_time(a) VALUES('22:22'); INSERT test_time(a) VALUES('22'); INSERT test_time(a) VALUES('2 22'); -- HHMMSS INSERT test_time(a) VALUES('121212'); INSERT test_time(a) VALUES('0'); INSERT test_time(a) VALUES(0); INSERT test_time(a) VALUES('787878'); INSERT test_time(a) VALUES(NOW()); INSERT test_time(a) VALUES(CURRENT_TIME); -- 測試DATE類型 YYYY-MM-DD YYYYMMDD CREATE TABLE test_date( a DATE ); INSERT test_date(a) VALUES('2017-03-04'); INSERT test_date(a) VALUES('2017-2-13'); INSERT test_date(a) VALUES('4007-03-23'); INSERT test_date(a) VALUES('40071212'); INSERT test_date(a) VALUES('4007@12@12'); INSERT test_date(a) VALUES('4008#13#13'); INSERT test_date(a) VALUES('4009.8.14'); -- YY-MM-DD YYMMDD -- 70~99 轉換成1970~1999 00~69 2000~2069 INSERT test_date(a) VALUES('780902'); INSERT test_date(a) VALUES('650902'); INSERT test_date(a) VALUES('880902'); INSERT test_date(a) VALUES(NOW()); INSERT test_date(a) VALUES(CURRENT_DATE); -- 測試DATETIME CREATE TABLE test_datetime( a DATETIME ); INSERT test_datetime(a) VALUES('1004-09-12 13:24:56'); INSERT test_datetime(a) VALUES('720305121212'); INSERT test_datetime(a) VALUES(NOW()); INSERT test_datetime(a) VALUES(DATETIME); -- 測試TIMESTAMP CREATE TABLE test_timestamp( a TIMESTAMP ); INSERT test_timestamp(a) VALUES('1978-10-23 12:12:12'); -- 插入CURRENT_TIMESTAMP INSERT test_timestamp VALUES(CURRENT_TIMESTAMP); -- 插入NULL INSERT test_timestamp VALUES(NULL); -- 什麼也不寫 得到當前系統日期和時間 INSERT test_timestamp VALUES(); -- 測試YEAR CREATE TABLE test_year( a YEAR ); INSERT test_year(a) VALUES(1901); -- 00~69 2000~2069 70~99 1970~1999 -- 0 插入的結果是0000 -- '0' 插入的結果是2000
數據類型測試-測試主鍵+複合主鍵+自增
-- 測試主鍵 CREATE TABLE test_primary_key( id INT UNSIGNED PRIMARY KEY, username VARCHAR(20) ); INSERT test_primary_key(id,username) VALUES(1,'king'); INSERT test_primary_key(id,username) VALUES(1,'king123'); INSERT test_primary_key(username) VALUES('QUEEN'); CREATE TABLE test_primary_key1( id INT UNSIGNED KEY, username VARCHAR(20) ); CREATE TABLE test_primary_key2( id INT UNSIGNED, username VARCHAR(20), PRIMARY KEY(id) ); -- CREATE TABLE test_primary_key3( -- id INT UNSIGNED PRIMARY KEY, -- courseId INT UNSIGNED PRIMARY KEY, -- username VARCHAR(20), -- email VARCHAR(50) -- ); -- 複合主鍵 CREATE TABLE test_primary_key3( id INT UNSIGNED, courseId VARCHAR(20), username VARCHAR(20), email VARCHAR(50), PRIMARY KEY(id,courseId) ); -- 1-a INSERT test_primary_key3(id,courseId,username,email) VALUES(1,'a','king','[email protected]'); INSERT test_primary_key3(id,courseId,username,email) VALUES(1,'b','king','[email protected]'); INSERT test_primary_key3(id,courseId,username,email) VALUES(2,'a','king','[email protected]'); INSERT test_primary_key3(id,courseId,username,email) VALUES(1,'a','1king','[email protected]'); -- 測試AUTO_INCREMENT CREATE TABLE test_auto_increment( id INT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) ); INSERT test_auto_increment(username) VALUES('A'); INSERT test_auto_increment(username) VALUES('B'); INSERT test_auto_increment(username) VALUES('C'); INSERT test_auto_increment(id,username) VALUES(NULL,'E'); INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F'); INSERT test_auto_increment(id,username) VALUES(15,'G');
數據類型測試-測試非空+預設值+唯一鍵
-- 測試非空 CREATE TABLE test_not_null( a varchar(20), b varchar(20) not null ); INSERT test_not_null(a,b) VALUES('',''); INSERT test_not_null(a,b) VALUES(NULL,NULL); INSERT test_not_null(a,b) VALUES(NULL,'abc'); INSERT test_not_null(a) VALUES('TEST'); -- 測試預設值 CREATE TABLE test_default( id INT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) NOT NULL, age TINYINT UNSIGNED DEFAULT 18, email VARCHAR(50) NOT NULL DEFAULT '[email protected]' ); INSERT test_default(username) VALUES('A'); INSERT test_default(username,age,email) VALUES('B',30,'[email protected]'); INSERT test_default(username,age,email) VALUES('C',NULL,'[email protected]'); INSERT test_default(username,age,email) VALUES('D',NULL,NULL); INSERT test_default(username,age,email) VALUES('D',NULL,DEFAULT); CREATE TABLE test_default1( id INT UNSIGNED AUTO_INCREMENT KEY, sex ENUM('a','b','c') NOT NULL DEFAULT 'a' ); -- 測試UNIQUE KEY CREATE TABLE test_unique( id INT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, email VARCHAR(50) UNIQUE, card CHAR(18) UNIQUE ); INSERT test_unique(username,email,card) VALUES('A','[email protected]','1'); INSERT test_unique(username,email,card) VALUES('A','[email protected]','12'); INSERT test_unique(username,email,card) VALUES('B',NULL,NULL); INSERT test_unique(username,email,card) VALUES('C',NULL,NULL);
數據類型測試-測試布爾類型
-- 用戶表test_user CREATE TABLE IF NOT EXISTS `test_user`( `id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用戶編號', `username` VARCHAR(20) NOT NULL UNIQUE COMMENT '用戶名', `password` CHAR(32) NOT NULL COMMENT '密碼', `email` VARCHAR(50) NOT NULL UNIQUE COMMENT '郵箱', `age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年齡', `sex` ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性別', `tel` CHAR(11) NOT NULL UNIQUE COMMENT '電話', `addr` VARCHAR(50) NOT NULL DEFAULT '北京' COMMENT '地址', `card` CHAR(18) NOT NULL UNIQUE COMMENT '身份證號', `married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未結婚,1代表已結婚', `salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水' )ENGINE=INNODB DEFAULT CHARSET=UTF8; -- 測試布爾類型 CREATE TABLE test_bool( id int, married BOOL ); CREATE TABLE test_bool1( id int, married BOOLEAN );
對數據表欄位的增刪改
-- 測試添加和刪除欄位 CREATE TABLE IF NOT EXISTS user1( id INT UNSIGNED AUTO_INCREMENT KEY ); -- 添加用戶名欄位 username VARCHAR(20) ALTER TABLE user1 ADD username VARCHAR(20); -- 添加密碼欄位 password CHAR(32) NOT NULL ALTER TABLE user1 ADD password CHAR(32) NOT NULL; -- 添加郵箱欄位 email VARCHAR(50) NOT NULL UNIQUE 加到username之後 ALTER TABLE user1 ADD email VARCHAR(50) NOT NULL UNIQUE AFTER username; -- 添加測試欄位 test TINYINT(1) NOT NULL DEFAULT 0; 加到首位 ALTER TABLE user1