1. 程式人生 > >MySql學習筆記-介紹以及基本操作

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

用於 BLOBs (Binary Large OBjects)。存放最多 16,777,215 位元組的資料。
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)
帶有浮動小數點的小數字。在括號中規定最大位數。在 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,
按資料列的資料劃分為:表級約束,列級約束

修改資料表
針對欄位操作:新增、刪除欄位,修改列定義,修改列名稱
針對約束的操作:新增,刪除各種約束
針對資料表的操作:資料表更名(兩種方式);