您好,登錄后才能下訂單哦!
一、SQL結(jié)構(gòu)化查詢語(yǔ)言概述
SQL是關(guān)系型數(shù)據(jù)庫(kù)所使用的標(biāo)準(zhǔn)語(yǔ)言,最初是基于IBM的實(shí)現(xiàn)在1986年被批準(zhǔn)的。1987年,“國(guó)際標(biāo)準(zhǔn)化組織(ISO)”把ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)化組織) SQL作為國(guó)際標(biāo)準(zhǔn)。
1. SQL語(yǔ)言規(guī)范
在數(shù)據(jù)庫(kù)系統(tǒng)中,SQL語(yǔ)句關(guān)鍵詞不區(qū)分大小寫(xiě)(建議用大寫(xiě))
- 數(shù)據(jù)庫(kù)的資源對(duì)象是區(qū)分大小寫(xiě)的,如表、數(shù)據(jù)庫(kù)這類資源在操作系統(tǒng)中以獨(dú)立文件形來(lái)存儲(chǔ),如果文件系統(tǒng)對(duì)文件命名區(qū)分大小寫(xiě)則SQL語(yǔ)言內(nèi)引用資源對(duì)象
- 資源內(nèi)的元素不區(qū)分大小寫(xiě),如:表的字段名稱不區(qū)分大小寫(xiě),因?yàn)樵诓僮飨到y(tǒng)中不是獨(dú)立的文件。
SQL語(yǔ)句可單行或多行書(shū)寫(xiě),以“;”結(jié)尾。
關(guān)鍵詞不能跨多行或簡(jiǎn)寫(xiě)。
用空格和縮進(jìn)來(lái)提高語(yǔ)句的可讀性(但并不強(qiáng)制)。
子句通常位于獨(dú)立行,便于編輯,提高可讀性()。
2. 注釋:
注釋類型 注釋符號(hào) 說(shuō)明 標(biāo)準(zhǔn) 單行注釋 -- --與注釋內(nèi)容之間有空格 SQL標(biāo)準(zhǔn) 多行注釋 /* 多行內(nèi)容被/*包裹 SQL標(biāo)準(zhǔn) 單行注釋 # 多行內(nèi)容被#包裹 MYSQL標(biāo)準(zhǔn)
3.SQL語(yǔ)言分類
4.SQL語(yǔ)言幫助
例:mysql> HELP KEYWORD;
例:按類查看幫助
MariaDB [hellodb]> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
Account Management
Administration
Compound Statements
Data Definition
Data Manipulation
Data Types
Functions
Functions and Modifiers for Use with GROUP BY
Geographic Features
Help Metadata
Language Structure
Plugins
Procedures
Table Maintenance
Transactions
User-Defined Functions
Utility
5.數(shù)據(jù)庫(kù)對(duì)象和命名
一、數(shù)據(jù)庫(kù)管理操作:
數(shù)據(jù)庫(kù)的管理操作包括:創(chuàng)建、修改、刪除、查看信息等操作
1. 查看字符集
show character set;
2. 查看數(shù)據(jù)庫(kù)
SHOW DATABASES;查看都有哪些數(shù)據(jù)庫(kù),即查看數(shù)據(jù)庫(kù)列表。
SHOW DATABASES like 'vmlab';查看指定的數(shù)據(jù)庫(kù)。
SHOW CREATE DATABASE vmlab;查看創(chuàng)建數(shù)據(jù)庫(kù)過(guò)程,可以快速查看數(shù)據(jù)庫(kù)采用的字符集。
3. 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE vmlab; 用DBMS默認(rèn)設(shè)置創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE microcisco CHARACTER SET "utf8mb4" COLLATE 'utf8mb4_bin';指定字符集為“utf8mb4”字符集排序規(guī)則為“utf8mb4_bin”
4. 修改數(shù)據(jù)庫(kù)
ALTER DATABASE vmlab CHARCATER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
將vmlab數(shù)據(jù)庫(kù)字符集修改為: 'utf8mb4' ,字符集的排序規(guī)則為:'utf8mb4_unicode_ci' 。
注意:
修改數(shù)據(jù)庫(kù)字符集只對(duì)后繼新存儲(chǔ)的數(shù)據(jù)有效,但對(duì)已有數(shù)據(jù)不生效,生產(chǎn)中除非必須否則不建議修改
設(shè)置服務(wù)器默認(rèn)的字符集,可以在配置文件vim /etc/my.cnf的[mysqld]選項(xiàng)部分指定字符集character-set-server=utf8mb4,這樣以后所有創(chuàng)建的數(shù)據(jù)庫(kù)都會(huì)繼承字DBMS的字符集
5. 刪除數(shù)據(jù)庫(kù):
DROP DATABASE like 'microcisco';
6. 基于SQL腳本創(chuàng)建數(shù)據(jù)庫(kù):
mysql < hellodb_innodb.sql -uroot -ppassword
二、表管理操作
注意:創(chuàng)建表之前一定要先指定在哪個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建。
1. 查看表信息:
DESC students; //desc 指定表名即可查看表結(jié)構(gòu)
SHOW TABLES FROM mysql; //查看指定數(shù)據(jù)庫(kù)中都有哪些表。
SHOW COLUMNS FROM mysql.user; //查看指定表都有哪些字段,執(zhí)行結(jié)果與desc相同。
SHOW CREATE TABLE vmlab\G; //查看創(chuàng)建vmlab表時(shí)執(zhí)行的命令,即表是如何創(chuàng)建的??梢詤⒖荚摲椒▌?chuàng)建腳本文件。
SHOW TABLE STATUS LIKE 'students'\G; //查看表狀態(tài)信息,比較常用可以顯示字符集、創(chuàng)建時(shí)間、更新時(shí)間、表引擎等信息。
SHOW TABLE STATUS FROM mysql\G; //查看指定數(shù)據(jù)庫(kù)的所有表狀態(tài)。
2. 創(chuàng)建表
注意事項(xiàng),表內(nèi)字段修飾符NO NULL被指定后則在添加記錄時(shí)該字段必須指定值。一般建議第一列ID為主鍵,且自動(dòng)增長(zhǎng)。
方法一:直接創(chuàng)建 ()內(nèi)指定字段名稱,存儲(chǔ)的數(shù)據(jù)類型,修飾符等信息,不同定段字定義以逗號(hào)分隔
CREATE TABLE students (id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(10) NOT NULL,age TINYINT UNSIGNED);
方法二:通過(guò)查詢現(xiàn)存表創(chuàng)建,新表會(huì)被直接插入查詢而來(lái)的數(shù)據(jù)(注意:此方法復(fù)制表結(jié)構(gòu),但不會(huì)復(fù)制字段的修飾符信息,原表的數(shù)據(jù)會(huì)被復(fù)制。)
CREATE TABLE vmlab SELECT * FROM students;從students表提取數(shù)據(jù)創(chuàng)建新表vmlab方法三:通過(guò)復(fù)制現(xiàn)存表的表結(jié)構(gòu),但不復(fù)制數(shù)據(jù)(注意:此方法復(fù)制表結(jié)構(gòu),但不會(huì)復(fù)制原表的數(shù)據(jù)。)
CREATE TABLE vmlab LIKE students;參考現(xiàn)存表students創(chuàng)建新表vmlab。
3. 刪除表:
drop table vmlab;
4. 修改表:
修改表基本上都是針對(duì)列操作,生產(chǎn)環(huán)境基本上很少需要修改,必須字段意味著需求變更。對(duì)表的所有修改操作都需要使用ALTER TABLE 然后指定表名,再指定操作類型:添加操作用ADD、刪除操作用DROP、更改操作用CHANGE,添加修改操作相當(dāng)于重新字義字段,所以必須要指定數(shù)據(jù)類型。
表重命名: ALTER TABLE vmlab RENAME vmlab1;
插入字段:插入字段實(shí)際上就是新定義字段因此必須指定數(shù)據(jù)類型
ALTER TABLE vmlab ADD phone CHAR(11) AFTER age; //在vmlab1表的age列后插入新列名為phone,數(shù)據(jù)類型為char 長(zhǎng)度為11個(gè)字符。
ALTER TABLE vmlab ADD ID int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST; 在首列添加一列并定義為主鍵。
ALTER TABLE vmlab ADD Gender ENUM('M','F','S'); //不指定位置則在表最后一列添加新的字段,ENUM為列表類型。修改字段數(shù)據(jù)類型:
ALTER TABLE microcisco MODIFY phone int; //將microcisco表的phone字段數(shù)據(jù)類型修改為int型
字段改名:
ALTER TABLE vmlab CHANGE COLUMN phone mobile char(11); //將vmlab表中的phone字段改名為mobile,并將數(shù)據(jù)類型改為char類型,長(zhǎng)度為11個(gè)字符。注意:字段改名必須指定改名后的字段數(shù)據(jù)類型。
刪除字段:
ALTER TABLE vmlab DROP COLUMN phone; //刪除vmlab表的phone字段。
修改表字符集:
ALTER TABLE vmlab CHARACTER SET utf8mb4; //修改vmlab表的字符集為utf8mb4。
修改字段數(shù)據(jù)類型:
ALTER TABLE vmlab CHANGE name name VARCHAR(20);
刪除主鍵:
ALTER TABLE vmlab DROP PRIMARY KEY;
定義主鍵:
ALTER TABLE vmlab CHANGE id id int UNSIGNED NOT NULL PRIMARY KEY; //注意:定義主鍵相當(dāng)于重新定義字段因此必須要指定字段數(shù)據(jù)類型,尤其要與原來(lái)數(shù)據(jù)類型一致。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。