mysql基礎-總結

來源:互聯網
上載者:User

標籤:mysql 基礎   mysql   

/************************************************mysql資料庫查看相關資訊的語句*****************************************/

SELECT VERSION();-- 查看資料庫的版本號碼

SELECT USER(),CURRENT_USER();-- 產看目前使用者

SELECT DATABASE();-- 查看當前正在使用的資料庫

SELECT CURDATE(),CURRENT_DATE();-- 查看當前日期

SELECT CURTIME(),CURRENT_TIME();-- 查看當前的時間

SELECT NOW(),CURRENT_TIMESTAMP();-- 查看當前的時間戳記

SHOW CHARSET;-- 查看mysql支援的所有的字元編碼

SHOW CHARSET LIKE ‘s%‘;-- 查看以s開頭的字元編碼

SHOW VARIABLES LIKE ‘char%‘;-- 查看變數名為char開頭的變數

SHOW ENGINES;-- 查看資料庫支援的所有引擎

SHOW DATABASES;-- 查看所有的資料庫

SHOW TABLES;-- 查看所有的表

SHOW CREATE DATABASE aa;-- 查看標準建庫語句

SHOW CREATE TABLE aa;-- 查看標準的建表語句

SHOW FULL COLUMNS FROM student;-- 查看錶的所有欄位資訊

DESC student;-- 查看錶結構[DESCRIBE的縮寫:DESC



/***************************************************建立資料庫語句******************************************************/

CREATE DATABASE aa;

CREATE DATABASE `aa`;-- 建立資料庫,名字可以是關鍵字.主要作用:增強相容性

CREATE DATABASE IF NOT EXISTS bb DEFAULT CHARSET=utf8;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET gbk */;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET gb2312 */;


USE aa;-- 選擇資料庫

DROP DATABASE IF EXISTS aa;-- 刪除資料庫



/**********************************************************資料表相關語句********************************************/

CREATE TABLE IF NOT EXISTS student(

    列名,類型,修飾,約束

    sid INT(10) UNSIGNED ZEROFILL PRIMARY KEY AUTO_INCREMENT,

    sname VARCHAR(10) NOT NULL,

    sgender ENUM(‘男‘,‘女‘,‘保密‘) DEFAULT ‘男‘

)ENGINE=MYISAM DEFAULT CHARSET=utf8;-- 標準建表語句

CREATE TABLE bb LIKE student;-- 快速建表,以student表為模板建立相同結構相同約束的表,無資料

CREATE TABLE aa SELECT * FROM student;-- 快速建表 以student查詢的資料建立一個表,沒有約束

DROP TABLE IF EXISTS aa;-- 刪除一個表

DROP TABLE IF EXISTS aa,bb,cc;-- 刪除多個表

RENAME TABLE aa TO bb;-- 修改表名稱

ALTER TABLE aa RENAME bb; -- 修改表名稱

ALTER TABLE aa RENAME TO bb;-- 修改表名稱

ALTER TABLE student CHANGE sname snames VARCHAR(20);-- 修改表的列名和類型

ALTER TABLE student CHANGE sid sid INT(10);

ALTER TABLE student DROP PRIMARY KEY;-- 刪除主鍵(前提是當前主鍵沒有自增欄位,如果有自增欄位先執行上面的語句,清除auto_increment欄位)

ALTER TABLE student ADD CONSTRAINT pk PRIMARY KEY(sid);-- 添加主鍵

ALTER TABLE student ADD COLUMN sage;-- 在表末尾添加一列

ALTER TABLE student ADD COLUMN saddress AFTER sanme;-- 在某一欄位後面添加一列

ALTER TABLE student ADD COLUMN sscore FIRST;-- 在開頭添加一列

ALTER TABLE student DROP COLUMN score;-- 刪除一列

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid);-- 添加外鍵約束(欄位必須存在,且類型和修飾相同)

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE SET NULL;-- 刪除外部索引鍵關聯時,相關的內容設為空白

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE CASCADE;-- 刪除外部索引鍵關聯時,刪除相關的資料

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON UPDATE CASCADE;-- 更新外部索引鍵關聯時,更新相關的內容

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE SET NULL ON UPDATE CASCADE;-- 刪除設空,修改更新

/*

上面的ON DELETE SET NULL:外鍵設為空白

上面的ON DELETE/UPDATE CASCADE:外鍵級聯

注意:使用外鍵約束時,資料表的儲存引擎為INNODB

*/

ALTER TABLE stu DROP FOREIGN KEY fk;-- 刪除外鍵


/***********************************************************索引操作***************************************************/

-- 一般情況下,建立表時如果建立pk(主鍵)、fk(外鍵)、uk(唯一約束鍵) 資料庫系統會自動的建立索引,索引的作用:資料量很大時可以提高檢索速度

CREATE INDEX myindex ON stu(sscore DESC);-- 建立索引

ALTER TABLE stu ADD INDEX myindex(sscore DESC);-- 建立索引

DROP INDEX myindex ON stu;-- 刪除索引

ALTER TABLE stu DROP INDEX myindex;-- 刪除索引



/******************************************************mysql的資料類型************************************************/

-- 數實值型別

BIT -- 位類型(只能存0和1)

TINYINT -- 短整型 範圍為有符號數:-128~127,無符號數:0~255

SMALLINT -- 小整型 範圍為有符號數:-32768~32767,無符號數:0~65535

MEDIUMINT -- 中整型 範圍為有符號數:-8388608~8388607,無符號數:0~16777215

INT -- 整型 範圍為有符號數:-2147483648~2147483647,無符號數:0~4294967295

BIGINT -- 大整型 範圍為有符號數:-9223372036854775808~9223372036854775807,無符號數:0~18446744073709551615       


-- 精度小數位類型

NUMERIC(p,s)-- p代表數值總長度,s表示保留的小數位,若p=s,則只能存小於1的小樹

DECIMAL(p,s)-- p代表數值總長度,s表示保留的小數位,若p=s,則只能存小於1的小樹


-- 字元類型

CHAR(n) -- 定長字串,n<=255,可以儲存n個字元

VARCHAR(n) -- 變長字串,n<=65535

TEXT -- 文本類型,最大儲存65535個字元

MEDIUMTEXT -- 中等文本類型,可以儲存16777215個字元

LONGTEXT -- 長文本類型最大可以存4GB

ENUM(‘男‘,‘女‘,‘保密‘)-- 枚舉類型取其中一個


-- 二進位檔案類型

LONGBLOB -- 主要儲存二進位檔案,最大可以是4G


-- 日期類型

DATE -- 日期類型 只能儲存 年月日 非法的為:0000-00-00

DATETIME -- 日期時間類型 儲存年月日 時分秒

TIME -- 時間類型 儲存 18:30:35 時分秒

TIMESTAMP -- 時間戳記類型 

CREATE TABLE t1(

sname VARCHAR(10),

stime TIMESTAMP DEFAULT CURRENT_TIMESTAMP() -- 若沒有設定預設時間時,更新資料,時間修改為修改資料時的時間

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t1(

sname VARCHAR(10),

stime DATETIME DEFAULT CURRENT_TIMESTAMP() -- 時間總是為插入資料時的設定的時間或插入資料時的時間

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


/*************************************************約束相關的關鍵字****************************************************/

-- NOT NULL非空約束

-- DEFAULT 預設值約束,若指定值,則不再採用預設值

-- ENUM(1,2)枚舉,只能去裡面的值或null,不能使其他值


-- PRIMARY KEY主鍵   在一個表內主鍵有且只能有一個,不能重複

CREATE TABLE t1(

tid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t2(

tid INT UNSIGNED NOT NULL AUTO_INCREMENT,

tname VARCHAR(20),

PRIMARY KEY(tid)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t3(

tid INT UNSIGNED NOT NULL AUTO_INCREMENT,

tname VARCHAR(20),

PRIMARY KEY(tid,tname) -- 建立複合主鍵,一個主鍵管理兩個表

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t4(

tid INT UNSIGNED NOT NULL,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

ALTER TABLE t4 ADD CONSTRAINT pk PRIMARY KEY(tid);

-- 以上都可以建立主鍵,但最後一種不是自增主鍵


-- FOREIGN KEY 外鍵約束,兩個表格儲存體引擎採用InnoDB,並且一個表內的外鍵是另一個表的主鍵或唯一約束鍵

-- 建立教師表

CREATE TABLE teacher(

tid SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=INNODB DEFAULT CHARSET=utf8;


-- 建立學生表  PK[主鍵]、FK[外鍵],一個表的外鍵指向另一個表的主鍵或唯一約束鍵,在一個表內外鍵可以沒有,有必須正確

CREATE TABLE student(

sid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL,

sscore INT,

stid SMALLINT UNSIGNED,

-- constraint fk foreign key(stid) references teacher(tid)

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) on delete set null

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE cascade

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON update CASCADE

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL ON UPDATE CASCADE

)ENGINE=INNODB DEFAULT CHARSET=utf8;


INSERT INTO teacher VALUES(NULL,‘張老師‘);

INSERT INTO teacher VALUES(NULL,‘劉老師‘);

INSERT INTO teacher VALUES(NULL,‘李老師‘);

INSERT INTO teacher VALUES(NULL,‘黃老師‘);

SELECT * FROM teacher;


INSERT INTO student VALUES(NULL,‘諸葛亮‘,70,3);

INSERT INTO student VALUES(NULL,‘大喬‘,75,4);

INSERT INTO student VALUES(NULL,‘張飛‘,80,1);

INSERT INTO student VALUES(NULL,‘關羽‘,95,2);

INSERT INTO student VALUES(NULL,‘劉備‘,56,2);

INSERT INTO student VALUES(NULL,‘曹操‘,37,3);

INSERT INTO student VALUES(NULL,‘姚蓋‘,76,1);

INSERT INTO student VALUES(NULL,‘孫權‘,89,4);

SELECT * FROM student;


-- 關聯的教師表,當設定主鍵沒有(ON DELETE SET NULL,ON DELETE CASCADE,ON UPDATE CASCADE)時,下面這幾條語句執行出錯,違反外鍵約束:

INSERT INTO student VALUES(NULL,‘小喬‘,‘25‘,10);

DELETE FROM teacher WHERE tid = 3;

UPDATE teacher SET tid = 5 WHERE tid = 2;

DROP TABLE teacher;

-- 關聯的教師表,當設定主鍵有(ON DELETE SET NULL,ON DELETE CASCADE,ON UPDATE CASCADE)時,表的級聯性更強:

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL -- 刪除關聯時,相關內容設為空白

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE CASCADE -- 刪除關聯時,刪除相關內容

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON UPDATE CASCADE -- 修改關聯時,更新相關內容

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL ON UPDATE CASCADE -- 刪除設空,修改更新


DROP TABLE student;

DROP TABLE teacher;

TRUNCATE student;-- 截斷表內資料,重新插入主鍵從開始自增

TRUNCATE teacher;


-- UNIQUE KEY唯一約束

CREATE TABLE t5(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20),

UNIQUE KEY(tname)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t6(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20) UNIQUE KEY

)ENGINE=MYISAM DEFAULT CHARSET=utf8;


CREATE TABLE t7(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

ALTER TABLE t7 ADD UNIQUE KEY(tname);

-- 以上都可以添加唯一約束

本文出自 “夜風” 部落格,請務必保留此出處http://jiangkun08.blog.51cto.com/6266992/1547241

mysql基礎-總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.