MySql學習筆記-介紹以及基本操作
Mysql資料型別
1: Text 型別:
CHAR(size)
儲存固定長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的長度。最多 255 個字元。
VARCHAR(size)
儲存可變長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的最大長度。最多 255 個字元。
TINYTEXT
存放最大長度為 255 個字元的字串。
TEXT
存放最大長度為 65,535 個字元的字串。
BLOB
用於 BLOBs (Binary Large OBjects)。存放最多 65,535 位元組的資料。
MEDIUMTEXT
存放最大長度為 16,777,215 個字元的字串。
MEDIUMBLOB
LONGTEXT
存放最大長度為 4,294,967,295 個字元的字串。 LONGBLOB
用於 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 位元組的資料。 ENUM(x,y,z,etc.)
允許你輸入可能值的列表。可以在 ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。 SET
與 ENUM 類似,SET 最多隻能包含 64 個列表項,不過 SET 可儲存一個以上的值。 2: Number 型別:
TINYINT(size)
-128 到 127 常規。0 到 255 無符號*。在括號中規定最大位數。 SMALLINT(size)
-32768 到 32767 常規。0 到 65535 無符號*。在括號中規定最大位數。 MEDIUMINT(size)
-8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規定最大位數。 INT(size)
-2147483648 到 2147483647 常規。0 到 4294967295 無符號*。在括號中規定最大位數。 BIGINT(size)
-9223372036854775808 到 9223372036854775807 常規。0 到 18446744073709551615 無符號*。在括號中規定最大位數。 FLOAT(size,d)
DOUBLE(size,d)
帶有浮動小數點的大數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。 DECIMAL(size,d)
作為字串儲存的 DOUBLE 型別,允許固定的小數點。 3: Date 型別:
DATE()
日期。格式:YYYY-MM-DD 註釋:支援的範圍是從 ‘1000-01-01’ 到 ‘9999-12-31’ DATETIME()
*日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS 註釋:支援的範圍是從 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ TIMESTAMP()
*時間戳。TIMESTAMP 值使用 Unix 紀元(‘1970-01-01 00:00:00’ UTC) 至今的描述來儲存。格式:YYYY-MM-DD HH:MM:SS註釋:支援的範圍是從 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC TIME()
時間。格式:HH:MM:SS 註釋:支援的範圍是從 ‘-838:59:59’ 到 ‘838:59:59’ YEAR()
2 位或 4 位格式的年。 註釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。
資料庫的連線
mysql -u -p -h
-u 使用者名稱
-p 密碼
-h host主機
SQL 語句基礎操作
顯示伺服器下的所有資料庫
SHOW DATABASES;
開啟資料庫
USE user;
檢視當前打開了哪幾個資料
SELECT DATABASE();
檢視當前有哪些資料表
SHOW TABLES ;
檢視當前表結構
SHOW COLUMNS FROM comment;
檢視建立表時候的欄位定義
SHOW CREATE TABLE landprovince;
檢視當前表索引
SHOW INDEXES FROM landprovince;
查詢comment表中的所有資料
SELECT * FROM comment;
向comment的username插入資料
INSERT comment (username) VALUES('1145679988');
建立表
CREATE TABLE IF NOT EXISTS tdb_goods(
goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
goods_name VARCHAR(150) NOT NULL,
goods_cate VARCHAR(40) NOT NULL,
brand_name VARCHAR(40) NOT NULL,
goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0,
is_show BOOLEAN NOT NULL DEFAULT 1,
is_saleoff BOOLEAN NOT NULL DEFAULT 0
);
IF NOT EXISTS//判斷表存不存在;
UNSIGNED//有沒有符號
PRIMARY KEY//唯一主鍵
AUTO_INCREMENT//自增長
NOT NULL//不能為NULL
主鍵約束
PRYMARY KEY
唯一約束
unique key
預設約束
default key
非空約束
not null
外來鍵列和參照列必須具有相似的資料型別,其中數字的長度或是否有符號位必須相同,而字元的長度則可以不同
外來鍵列和參照列必須建立索引,如果外來鍵列不存在索引的話,MYSQL將自動建立
修改表資料
刪除新增列
增加列
ALTER TABLE lanuser ADD test TINYINT NOT NULL;
新增一個password列到username的後面
ALTER TABLE lanuser ADD password VARCHAR(20) NOT NULL AFTER username;
新增一個truename至表的第一列
ALTER TABLE lanuser ADD truename VARCHAR(20) NOT NULL FIRST;
刪除列
ALTER TABLE lanuser DROP truename;
刪除多列
ALTER TABLE lanuser DROP mobile,DROP password;
新增主鍵約束
ALTER TABLE username ADD CONSTRAINT PK_username_id PRIMARY KEY(id);
新增一個外來鍵約束對應lanuser 的id
ALTER TABLE username ADD FOREIGN KEY (pid) REFERENCES lanuser (id);
新增預設約束
ALTER TABLE lanuser ALTER test SET DEFAULT 15;
刪除預設約束
ALTER TABLE lanuser ALTER test DROP DEFAULT;
刪除主鍵約束
ALTER TABLE lanuser DROP PRIMARY KEY;
刪除唯一約束
ALTER TABLE lanuser DROP INDEX test;
刪除pid 索引
ALTER TABLE username DROP INDEX pid;
修改列定義 更名資料表
修改列的位置
ALTER TABLE username MODIFY id SMALLINT NOT NULL FIRST;
修改列屬性
ALTER TABLE username MODIFY one VARCHAR(20) NOT NULL;
修改列名稱 及列定義
ALTER TABLE username CHANGE pid p_id SMALLINT NOT NULL;
修改資料表的名稱
ALTER TABLE usernamechange RENAME TO username;或者:
RENAME TABLE lanuser_ TO lanuser;
總結:
約束
按功能劃分為:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT KEY, FOREIGN KEY,
按資料列的資料劃分為:表級約束,列級約束
修改資料表
針對欄位操作:新增、刪除欄位,修改列定義,修改列名稱
針對約束的操作:新增,刪除各種約束
針對資料表的操作:資料表更名(兩種方式);