SQL結構化查詢語——之DDL語言

一、SQL結構化查詢語言概述
SQL是關係型數據庫所使用的標準語言,最初是基於IBM的實現在1986年被批准的。1987年,“國際標準化組織(ISO)”把ANSI(美國國家標準化組織) SQL作爲國際標準。
1. SQL語言規範

在數據庫系統中,SQL語句關鍵詞不區分大小寫(建議用大寫)

  • 數據庫的資源對象是區分大小寫的,如表、數據庫這類資源在操作系統中以獨立文件形來存儲,如果文件系統對文件命名區分大小寫則SQL語言內引用資源對象
  • 資源內的元素不區分大小寫,如:表的字段名稱不區分大小寫,因爲在操作系統中不是獨立的文件。

SQL語句可單行或多行書寫,以“;”結尾。
關鍵詞不能跨多行或簡寫。
用空格和縮進來提高語句的可讀性(但並不強制)。
子句通常位於獨立行,便於編輯,提高可讀性()。

2. 註釋:

註釋類型 註釋符號 說明 標準
單行註釋 -- --與註釋內容之間有空格 SQL標準
多行註釋 /* 多行內容被/*包裹 SQL標準
單行註釋 # 多行內容被#包裹 MYSQL標準

3.SQL語言分類

  • >DDL: Data Defination Language 數據定義語言
    CREATE,DROP,ALTER
  • >DML: Data Manipulation Language 數據操縱語言
    INSERT,DELETE,UPDATE
  • >DQL:Data Query Language 數據查詢語言
    SELECT
  • >DCL:Data Control Language 數據控制語言
    GRANT,REVOKE,COMMIT,ROLLBACK

4.SQL語言幫助

  • 登錄SQL SEHLL中help加關鍵字即可查看幫助。

    例:mysql> HELP KEYWORD;

  • 登錄SQL SEHLL中輸入help contents;可以查看按類查看幫助。

    例:按類查看幫助
    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.數據庫對象和命名

  • >數據庫的組件(對象):
    數據庫、表、索引、視圖、用戶、存儲過程、函數、觸發器、事件調度器等這些資源對象基本上在操作系統中有獨立的文件存儲。
  • >命名規則:
    必須以字母開頭,可包括數字和三個特殊字符(# _ $)
    不要使用MySQL的保留字
    同一database(Schema)下的對象不能同名

一、數據庫管理操作:
數據庫的管理操作包括:創建、修改、刪除、查看信息等操作

1. 查看字符集

show character set;

2. 查看數據庫

SHOW DATABASES;查看都有哪些數據庫,即查看數據庫列表。
SHOW DATABASES like 'vmlab';查看指定的數據庫。
SHOW CREATE DATABASE vmlab;查看創建數據庫過程,可以快速查看數據庫採用的字符集。

3. 創建數據庫

CREATE DATABASE vmlab; 用DBMS默認設置創建數據庫
CREATE DATABASE microcisco CHARACTER SET "utf8mb4" COLLATE 'utf8mb4_bin';指定字符集爲“utf8mb4”字符集排序規則爲“utf8mb4_bin”

4. 修改數據庫

ALTER DATABASE vmlab CHARCATER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
將vmlab數據庫字符集修改爲: 'utf8mb4' ,字符集的排序規則爲:'utf8mb4_unicode_ci' 。
注意:
修改數據庫字符集只對後繼新存儲的數據有效,但對已有數據不生效,生產中除非必須否則不建議修改
設置服務器默認的字符集,可以在配置文件vim /etc/my.cnf的[mysqld]選項部分指定字符集character-set-server=utf8mb4,這樣以後所有創建的數據庫都會繼承字DBMS的字符集

5. 刪除數據庫:

DROP DATABASE like 'microcisco';

6. 基於SQL腳本創建數據庫:

mysql < hellodb_innodb.sql -uroot -ppassword

二、表管理操作

注意:創建表之前一定要先指定在哪個數據庫中創建。

1. 查看錶信息:

DESC students; //desc 指定表名即可查看錶結構
SHOW TABLES FROM mysql; //查看指定數據庫中都有哪些表。
SHOW COLUMNS FROM mysql.user; //查看指定表都有哪些字段,執行結果與desc相同。
SHOW CREATE TABLE vmlab\G; //查看創建vmlab表時執行的命令,即表是如何創建的。可以參考該方法創建腳本文件。
SHOW TABLE STATUS LIKE 'students'\G; //查看錶狀態信息,比較常用可以顯示字符集、創建時間、更新時間、表引擎等信息。
SHOW TABLE STATUS FROM mysql\G; //查看指定數據庫的所有表狀態。

2. 創建表

注意事項,表內字段修飾符NO NULL被指定後則在添加記錄時該字段必須指定值。一般建議第一列ID爲主鍵,且自動增長。
方法一:直接創建 ()內指定字段名稱,存儲的數據類型,修飾符等信息,不同定段字定義以逗號分隔
CREATE TABLE students (id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(10) NOT NULL,age TINYINT UNSIGNED);
方法二:通過查詢現存表創建,新表會被直接插入查詢而來的數據(注意:此方法複製表結構,但不會複製字段的修飾符信息,原表的數據會被複制。)
CREATE TABLE vmlab SELECT * FROM students;從students表提取數據創建新表vmlab

方法三:通過複製現存表的表結構,但不復制數據(注意:此方法複製表結構,但不會複製原表的數據。)
CREATE TABLE vmlab LIKE students;參考現存表students創建新表vmlab。

3. 刪除表:

drop table vmlab;

4. 修改表:
修改表基本上都是針對列操作,生產環境基本上很少需要修改,必須字段意味着需求變更。對錶的所有修改操作都需要使用ALTER TABLE 然後指定表名,再指定操作類型:添加操作用ADD、刪除操作用DROP、更改操作用CHANGE,添加修改操作相當於重新字義字段,所以必須要指定數據類型。

表重命名: ALTER TABLE vmlab RENAME vmlab1;
插入字段:插入字段實際上就是新定義字段因此必須指定數據類型
ALTER TABLE vmlab ADD phone CHAR(11) AFTER age; //在vmlab1表的age列後插入新列名爲phone,數據類型爲char 長度爲11個字符。
ALTER TABLE vmlab ADD ID int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST; 在首列添加一列並定義爲主鍵。
ALTER TABLE vmlab ADD Gender ENUM('M','F','S'); //不指定位置則在表最後一列添加新的字段,ENUM爲列表類型。

修改字段數據類型:
ALTER TABLE microcisco MODIFY phone int; //將microcisco表的phone字段數據類型修改爲int型
字段改名:
ALTER TABLE vmlab CHANGE COLUMN phone mobile char(11); //將vmlab表中的phone字段改名爲mobile,並將數據類型改爲char類型,長度爲11個字符。注意:字段改名必須指定改名後的字段數據類型。
刪除字段:
ALTER TABLE vmlab DROP COLUMN phone; //刪除vmlab表的phone字段。
修改表字符集:
ALTER TABLE vmlab CHARACTER SET utf8mb4; //修改vmlab表的字符集爲utf8mb4。
修改字段數據類型:
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; //注意:定義主鍵相當於重新定義字段因此必須要指定字段數據類型,尤其要與原來數據類型一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章