2020 5/9
二十二、DDL(資料定義語言)->用于庫和表的管理
一、 庫的管理
a) 創建
b) 修改
c) 洗掉
二、 表的管理
a) 創建: create
b) 修改: alter
c) 洗掉: drop
#庫的管理
1.庫的創建
語法:
create database [if not exists] 庫名;(if not exists->是為了提高容錯性,沒有就創建、有的就不創建)
如:CREATE DATABASE if not exists books;
2.庫的修改(基本上不修改,若想修改庫名,則需要在服務端的data里修改)
修改庫的字符集:
ALTER DATABASE 庫名 CHARACTER SET 字符集;
如:
ALTER DATABASE books CHARACTER SET gbk;
3.庫的洗掉
DROP DATABASE IF EXISTS庫名;
如:DROP DATABASE IF EXISTS books;
#表的管理
1.表的創建
語法:
create table(if not exists) 表名(
列名 型別[(長度) 約束],
列名 型別[(長度) 約束],
列名 型別[(長度) 約束],
…
列名 型別[(長度) 約束]
);
案例:
CREATE TABLE emp5(
id INT(7),
First_name VARCHAR(25),
Last_name VARCHAR(25),
Dept_id INT(7)
); (可使用if not exists來提高容錯性)
查看表結構:

2.表的修改
① 修改列名
② 修改列的型別或約束
③ 添加新列
④ 洗掉列
⑤ 修改表名
語法:
alter table 表名 change|modify|drop|add column 列名 【列型別 約束】;
#修改列名
語法:
ALTER TABLE 表名 CHANGE COLUMN舊列名 新列名 新型別(一定要加上);
案例:把Last_name欄位名稱改為last_name;
ALTER TABLE emp5 CHANGE COLUMN Last_name last_name VARCHAR(30);
#修改列的型別或約束
語法:ALTER TABLE 表名 CHANGE COLUMN列名 新型別或約束;
案例:修改了last_name欄位的長度
ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(49);
#添加新列
語法:
ALTER TABLE 表名 ADD 新列名 新型別【約束】;
案例:向表中添加新列test_column,型別自定義
ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);
#洗掉列
語法:
ALTER TABLE emp5 ADD COLUMN test_column VARCHAR(25);
案例:洗掉表中的test_column欄位
ALTER TABLE emp5 DROP COLUMN test_column;
語法:
ALTER TABLE 表名 RENAME [TO] 新表名;
案例:把表名重命名為emp6;
ALTER TABLE emp5 RENAME TO emp6;
3.表的洗掉
語法:
drop table 表名;
案例:
DROP TABLE 【if exists】emp6;(可使用if exists來提高容錯性)
- 表的復制
#僅僅復制表的結構(使用LIKE關鍵字)
CREATE TABLE employees2 Like employees;

#復制表的資料+結構(使用子查詢)
CREATE TABLE employee3
SELECT * FROM employees;

#只復制部分表的資料(使用帶篩選條件的子查詢)
CREATE TABLE employee4
SELECT * FROM employees
WHERE employee_id>150;
#僅僅復制某些欄位(不攜帶資料)
CREATE TABLE employee5
SELECT job_id,department_id FROM employees
WHERE 1=0;(只要where后的篩選條件不成立,那么就不會接待資料)

二十三、常見的資料型別
分類:
數值型:
整形
小數:
浮點型
定點型
字符型:
較短的文本:char、varchar
較長的文本:text、bolb(較長的二進制資料)
#整形
型別 tinyint smallint mediumint int/integer bigint
所占位元組大小 1 2 3 4 8
特點:
① 如果不設定有符號還是無符號,則默認為有符號,如果想設定為無符號,則需要添加unsigned關鍵字
② 如果要插入的資料超出了整形的范圍,會報出out of range例外,并且插入臨界值
③ 如果不設定長度,則系統會有默認的長度
④ 型別中的長度欄位代表的是顯示資料的最大寬度,若資料小于該長度則會用0在左邊填充,但必須搭配zerofull關鍵字使用(此時默認為無符號整形)
#小數
1.浮點型
a) float(M,D)
b) double(M,D)
2.定點型
a) dec(M,D)
b) decimal(M,D)
特點:
① M代表的是整數和小數部分的總長度,D代表的是小數部位的長度,若超過范圍則插入臨界值
② M和D度可以省略,如果是float和double,則會根據插入的數值來決定精度,如果是decimal,則M默認為10,D默認為0
③ 定點型的精度較高,如果需要求插入的數值型別精度較高如貨幣元素那則可以考慮使用
使用原則:所選擇的型別越簡單越好,能保存的數值的型別越小越好
#字符型
1.較短的文本
char(M)
varchar(M)
binary和varbinary(包含二進制文本字串)
enum->列舉型別,要求插入的值必須屬于串列中指定的值之一
set->集合型別,和Enum型別類似,里面可以保存0~64個成,一次可以選取多個成員
2.較長的文本
text
bolb(較長的二進制資料)
特點:
① 關于char 和varchar
寫法 M的意思 特點 空間的耗費
char char(M) 最大的字符數(可以省略,默認為1) 固定長度的字符 高
varchar varchar(M) 最大的字符數(不可省略) 可變長度的字符 低
關于固定與可變長度,那“數字”舉例,char會給它分配M個字符大小的空間,而varchar 就給它分配2個空間,長度隨輸入的值變化
#日期型

date:只保存日期
time:只保存時間
year:只保存年
位元組 范圍 時區等的影響
datetime 8 1000-9999 受
timestamp 4 1970-2038 不受
具體如下:
CREATE TABLE tab_date(
t1 DATETIME,
t2 TIMESTAMP
);#創建表
INSERT INTO tab_date VALUES(now(),now());
SELECT * FROM tab_date;

show VARIABLES like 'time_zone';
set time_zone ='+9:00';#改變時區

可發現改變時區后,t2的值發生變化,受到了時區的影響
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/44472.html
標籤:MySQL
上一篇:MySQL——創建資料庫與表
