1、DDL的基本概念
DDL(Data Definition Language,操作數據庫和表結構):DDL是用來操作數據庫和表的,也就是創建數據庫和表、刪除數據庫和表、修改表結構這些操作。通常,DDL由數據庫管理員執行。
2、DDL操作數據庫(選擇和增刪改查)
2.1、創建數據庫(Create)
可以通過 create 語句來創建一個數據庫
CREATE DATABASE 數據庫名; -- 創建數據庫
create database 數據庫名 character set utf-8; -- 在創建數據庫時可以指定數據庫的字符集
如果同名數據庫已經存在,再創建一個會報錯,提示該數據庫已存在。我們可以通過判斷該數據庫是否已存在來避免報錯:
create database if not exists basename; -- 如果已存在則不會創建,否則新建一個數據庫
create database if not exists basename character set gbk; -- 判斷同時指定字符集
2.2、查詢所有的數據庫(show)
可以使用 show database; 語句來查詢 MySQL 中所有的數據庫。
如下:MySQL在安裝后默認建立了四個數據庫。前三個數據庫都是保存着MySQL的一些信息,最好不要亂改。如果需要,我們可以在 test 數據庫上做一些修改測試。
(其中 information_schema 並沒有真正對應的實體文件夾,該數據庫是一個信息數據庫,其保存着關於MySQL服務器所維護的所有其他數據庫的信息,如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。也就是說當你建立一個新的數據庫,或者在已有的數據庫中增刪改表的話,都會記錄在information_schema庫中)
我們也可以通過 show create database 數據庫名; 語句來查看創建某個數據的語法。如下所示,我們還可以知道該數據庫使用的字符集是 utf-8。
2.3、修改數據庫(alter)
修改數據庫的字符集:
alter database 數據庫名稱 character set 字符集名稱;
# 示例:
alter database testdb character set utf8;
2.4、刪除數據庫(drop)
drop database 數據庫名稱;
drop database if exists 數據庫名稱; # 如果該數據庫不存在,直接刪除會報錯,我們可以先判斷是否存在
2.5、選擇數據庫(use)
在連接到 MySQL 數據庫后,可能有多個可以操作的數據庫,所以我們需要選擇要進行操作的數據庫。
use 數據庫名稱;
執行以上命令后,就會選擇某個數據庫,后續的操作都會在該數據庫中執行,比如對數據表的操作等等。
查詢目前正在使用的數據庫:
select database(); # 當沒有選擇數據庫時,會提示 null
3、DDL操作數據表(增刪改查)
3.1、創建數據表(create)
創建MySQL數據表需要以下信息:表名、表字段名、定義每個表字段。
以下為創建MySQL數據表的SQL通用語法:
CREATE TABLE table_name (column_name column_type);
# 示例創建數據表runoob_tbl:
CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT UNSIGNED AUTO_INCREMENT, # AUTO_INCREMENT定義列為自增的屬性,一般用於主鍵,數值會自動加1 `runoob_title` VARCHAR(100) NOT NULL, # 如果你不想字段為 NULL 可以設置字段的屬性為 NOT NULL,在操作數據庫時如果輸入該字段的數據為NULL,就會報錯。 `submission_date` DATE, PRIMARY KEY ( `runoob_id` ) # PRIMARY KEY關鍵字用於定義列為主鍵,可以使用多列來定義主鍵,列間以逗號分隔。建表語句的最后一列不要加逗號,否則報錯 )ENGINE=InnoDB DEFAULT CHARSET=utf8; # ENGINE 設置存儲引擎,CHARSET 設置編碼
對於一個關系表,除了定義每一列的名稱外,還需要定義每一列的數據類型。關系數據庫支持的標准數據類型包括數值、字符串、時間等:
上面的表中列舉了最常用的數據類型。很多數據類型還有別名,例如,浮點型REAL
又可以寫成FLOAT(24)
。還有一些不常用的數據類型,例如,TINYINT
(范圍在0~255)。各數據庫廠商還會支持特定的數據類型,例如JSON
。
選擇數據類型的時候,要根據業務規則選擇合適的類型。通常來說,長整型BIGINT
能滿足整數存儲的需求,變長字符串VARCHAR(N)
能滿足字符串存儲的需求,這兩種類型是使用最廣泛的。
3.2、刪除數據表(drop)
在進行刪除表操作時要非常小心,因為執行刪除命令后所有數據都會消失。
以下為刪除MySQL數據表的通用語法:
DROP TABLE table_name;
DROP TABLE if exists table_name; # 判斷是否存在,存在再刪除
3.3、修改表
3.3.1、對表的整體進行修改
修改表名:
alter table 表名 rename to 新表名;
修改表的字符集:
alter table 表名 character set 字符集名稱;
# 示例:
alter table testtable character set utf8; # utf-8字符集寫成utf8,否則報錯
3.3.2、修改表結構
添加一列:
alter table 表名 add 列名 數據類型;
# 示例:
alter table testtable add name varchar(10); # varchar(10)表示最多有10個字符
修改列名、數據類型:
alter table 表名 modify 列名 新數據類型; # 修改列的數據類型 alter table 表名 change 列名 新列名 新數據類型; # 同時修改列名和數據類型
刪除列:
alter table 表名 drop 列名;
3.4、查詢
3.4.1、查詢數據庫中的所有表
查詢某個數據庫中的所有表:
show tables;
3.4.2、查詢表結構
查詢表結構:
desc 表名;