MySQL之資料定義語言(DDL)

pure3417發表於2021-05-25

寫在前面

  • 本文中 [ 內容 ] 代表啊可選項,即可寫可不寫。

SQL語言的基本功能介紹

SQL是一種結構化查詢語言,主要有如下幾個功能:

  • 資料定義語言(DDL):全稱Data Definition Language
  • 資料操縱語言(DML):全稱Data Manipulation Language
  • 資料控制語言(DCL):全稱Data Control Language
  • 事務控制語言(TCL):全稱Transaction Control Language

其中最重要的是資料操縱語言(DML),裡面包含了我們常用的功能(增、刪、改、查)。對於資料定義語言(DDL)和資料控制語言(DCL),我們只需要瞭解,知道怎麼用就行了。

資料定義語言的用途

DDL主要是對資料庫物件(資料庫、表、檢視、索引)的操作。常用命令如下:

建立 修改 銷燬
create alter drop

資料庫的操作語句

顯示當前所有庫

-- 顯示說有的庫 
show databases;

建立庫

-- 建立庫
-- creat database [if not exists] 資料庫名 [charset=utf8];
-- 重複建立會報錯, 可以加上if not exists
creat database if not exists student;

銷燬庫

-- 銷燬庫
-- drop database [if exists] 資料庫名;
-- 如果不知道資料庫是否存在,記得加if exists
drop database if exists student;

使用庫

-- 使用庫
-- use 資料庫名;
-- 建立資料庫後,當進行對錶的操作之前,必須要先使用資料庫。
use student;

其他

-- 檢視當前所在的庫
select database();

-- 修改資料庫名
rename database 舊名 to 新名;

資料表的操作

檢視當前庫中都有哪些表

-- 檢視當前庫中都有哪些表
show tables;

建立表

-- 格式
-- 注意:表名 和 欄位名 儘量使用 ` `(反引號)括起來 
crate table [if not exists] `表名`(
	`欄位名` 欄位型別 [屬性] [索引] [註釋],
    `欄位名` 欄位型別 [屬性] [索引] [註釋],
    ......
    `欄位名` 欄位型別 [屬性] [索引] [註釋]
)[表的搜尋引擎] [字元編碼] [註釋];

簡單示例:

creat table if not exists `table`(
	`sid` int,
    `sname` varchar(20),
    `age` int
)charset=utf8;

注意:由於預設使用的engine就是InnoDB,這個建表時候可以不寫。但是charset=utf8這個最好是加上,尤其是在CMD黑視窗中輸入中文的時候,
不寫這一句,會出現類似如下錯誤

ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5' for column 'sname' at row 1

檢視錶結構和建表語句

-- 檢視錶結構
-- desc 表名;
desc student;

-- 檢視建表語句
-- show creat table 表名;
show creat table stu;

修改表名

-- rename table 舊名 to 新名;
rename table student to stu;

修改表結構

修改表結構中包含給表新增某個新欄位修改表中某個欄位刪除表中某個欄位

  • 給表新增某個新欄位,使用add關鍵字

    1. 預設是追加,即在最後一列新增新欄位
    -- alter table 表名 add 欄位名 欄位型別;
    alter table `stu` add `cid` int;
    
    1. 在首位新增新欄位,使用first關鍵字
    -- alter table 表名 add 欄位名 欄位型別 first;
    alter table `stu` add `cname` varchar(20) first;
    
  • 修改表中某個欄位,使用changemodify關鍵字

    1. 修改欄位名稱,使用change關鍵字
    -- alter table 表名 change 舊欄位名 新欄位名 欄位型別;
    -- 修改欄位age的名稱,為sage
    alter table `stu` change `age` `sage` int;
    
    1. 修改欄位型別,既可以使用change,還可以使用modify
    -- 修改sname欄位的資料型別由varchar(20)為varchar(50)
    -- 有以下兩種方式
    -- alter table 表名 change 欄位名 欄位名 欄位型別;
    alter table `stu` change `sname` `sname` varchar(50);
    
    -- alter table 表名 modify 欄位名 欄位型別;
    alter table `stu` modify `sname` varchar(50);
    
    1. 修改欄位位置,可以配合使用firstafter關鍵字
    -- 將sname欄位,放置到sage後面。可以使用如下兩種方式:
    alter table `stu` change `sname` `sname` varchar(50) after `sage`;
    alter table `stu` modify `sname` varchar(50) after `sage`;
    
    -- 將sid欄位,放置到首位
    alter table `stu` change `sid` `sid` int first;
    alter table `stu` modify `sid` int first;
    

    modify不能直接修改欄位名稱,其餘能用change的地方,就可以用modify。

  • 刪除表中某個欄位,使用drop關鍵字

    -- alter table 表名 drop 欄位名;
    
    -- 刪除cid這個欄位
    alter table `stu` drop `cid`;
    

清空表

truncate只刪除資料但是不刪除表結構

-- truncate table 表名;
truncate table `stu`;

銷燬表

-- drop table 表名;
drop table `stu`;

注意:一般表結構有了,資料也有了,不要輕易修改表結構,增加、刪除、修改列

相關文章