共計(jì) 3808 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
這篇“mysql 如何創(chuàng)建管理表”文章的知識(shí)點(diǎn)大部分人都不太理解,所以丸趣 TV 小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“mysql 如何創(chuàng)建管理表”文章吧。
命名規(guī)則
數(shù)據(jù)庫(kù)名、表名不得超過 30 個(gè)字符,變量名限制為 29 個(gè)
必須只能包含 A–Z, a–z, 0–9, _共 63 個(gè)字符
數(shù)據(jù)庫(kù)名、表名、字段名等對(duì)象名中間不要包含空格
同一個(gè) MySQL 軟件中,數(shù)據(jù)庫(kù)不能同名;同一個(gè)庫(kù)中,表不能重名;同一個(gè)表中,字段不能重名
必須保證你的字段沒有和保留字、數(shù)據(jù)庫(kù)系統(tǒng)或常用方法沖突。如果堅(jiān)持使用,請(qǐng)?jiān)?SQL 語(yǔ)句中使用 `(著重號(hào))引起來
保持字段名和類型的一致性:在命名字段并為其指定數(shù)據(jù)類型的時(shí)候一定要保證一致性,假如數(shù)據(jù)類型在一個(gè)表里是整數(shù),那在另一個(gè)表里可就別變成字符型了
數(shù)據(jù)類型
常用類型
代碼案例:數(shù)據(jù)庫(kù)相關(guān)
# 創(chuàng)建數(shù)據(jù)庫(kù)
#方式 1:CREATE DATABASE mytest1; # 創(chuàng)建的此數(shù)據(jù)庫(kù)使用的是默認(rèn)的字符集
# 查看創(chuàng)建數(shù)據(jù)庫(kù)的結(jié)構(gòu)
SHOW CREATE DATABASE mytest1;
#方式 2:顯式了指名了要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)的字符集
CREATE DATABASE mytest2 CHARACTER SET gbk
# 方式 3(推薦):如果要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)已經(jīng)存在,則創(chuàng)建不成功,但不會(huì)報(bào)錯(cuò)。CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET utf8
# 如果要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)不存在,則創(chuàng)建成功
CREATE DATABASE IF NOT EXISTS mytest3 CHARACTER SET utf8
# 管理數(shù)據(jù)庫(kù)
# 查看當(dāng)前連接中的數(shù)據(jù)庫(kù)都有哪些
SHOW DATABASES;
#切換到指定的數(shù)據(jù)庫(kù)
USE atguigudb;
# 查看當(dāng)前數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)表
SHOW TABLES;
# 查看當(dāng)前使用的數(shù)據(jù)庫(kù)
SELECT DATABASE() FROM DUAL;
# 查看指定數(shù)據(jù)庫(kù)下保存的數(shù)據(jù)表
SHOW TABLES FROM mysql;
# 修改數(shù)據(jù)庫(kù)
# 更改數(shù)據(jù)庫(kù)字符集
ALTER DATABASE mytest2 CHARACTER SET utf8
# 刪除數(shù)據(jù)庫(kù)
#方式 1:如果要?jiǎng)h除的數(shù)據(jù)庫(kù)存在,則刪除成功。如果不存在,則報(bào)錯(cuò)
DROP DATABASE mytest1;
# 方式 2:推薦。如果要?jiǎng)h除的數(shù)據(jù)庫(kù)存在,則刪除成功。如果不存在,則默默結(jié)束,不會(huì)報(bào)錯(cuò)
DROP DATABASE IF EXISTS mytest1;
創(chuàng)建數(shù)據(jù)表
# 方式 1:CREATE TABLE IF NOT EXISTS myemp1( # 需要用戶具備創(chuàng)建表的權(quán)限。id INT,
emp_name VARCHAR(15), # 使用 VARCHAR 來定義字符串,必須在使用 VARCHAR 時(shí)指明其長(zhǎng)度。hire_date DATE
# 方式 2:基于現(xiàn)有的表,同時(shí)導(dǎo)入數(shù)據(jù)
CREATE TABLE myemp2
SELECT employee_id,last_name,salary
FROM employees;
# 查詢舊表中的數(shù)據(jù),并指定別名,作為新表中的數(shù)據(jù)
# 查詢語(yǔ)句中字段的別名,可以作為新創(chuàng)建的表的字段的名稱
CREATE TABLE myemp3
SELECT e.employee_id emp_id, e.last_name lname, d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;
# 創(chuàng)建一個(gè)表 employees_copy,實(shí)現(xiàn)對(duì) employees 表的復(fù)制,包括表數(shù)據(jù)
CREATE TABLE employees_copy
SELECT *
FROM employees;
# 創(chuàng)建一個(gè)表 employees_blank,實(shí)現(xiàn)對(duì) employees 表的復(fù)制,不包括表數(shù)據(jù)
CREATE TABLE employees_blank
SELECT *
FROM employees
#where department_id 10000; # 方式 1
WHERE 1 = 2;
修改表
# 查看表結(jié)構(gòu)
DESC myemp1;
# 添加一個(gè)字段
ALTER TABLE myemp1
ADD salary DOUBLE(10,2); # 默認(rèn)添加到表中的最后一個(gè)字段的位置
ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST; # 添加到首位
ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name; # 添加到指定字段之后
# 修改一個(gè)字段:數(shù)據(jù)類型、長(zhǎng)度、默認(rèn)值
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25);
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT aaa
# 重命名一個(gè)字段
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);
ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);
# 刪除一個(gè)字段
ALTER TABLE myemp1
DROP COLUMN my_email;
# 重命名表
# 方式 1:RENAME TABLE myemp1 TO myemp11;
# 方式 2:ALTER TABLE myemp2 RENAME TO myemp12;
刪除表
# 不光將表結(jié)構(gòu)刪除掉,同時(shí)表中的數(shù)據(jù)也刪除掉,釋放表空間
DROP TABLE IF EXISTS myemp2;
清空表
# 清空表,表示清空表中的所有數(shù)據(jù),但是表結(jié)構(gòu)保留
TRUNCATE TABLE employees_copy;
DCL 中 COMMIT 和 ROLLBACK
# COMMIT: 提交數(shù)據(jù)。一旦執(zhí)行 COMMIT,則數(shù)據(jù)就被永久的保存在了數(shù)據(jù)庫(kù)中,意味著數(shù)據(jù)不可以回滾
# ROLLBACK: 回滾數(shù)據(jù)。一旦執(zhí)行 ROLLBACK, 則可以實(shí)現(xiàn)數(shù)據(jù)的回滾。回滾到最近的一次 COMMIT 之后
對(duì)比 TRUNCATE TABLE 和 DELETE FROM
# 相同點(diǎn):都可以實(shí)現(xiàn)對(duì)表中所有數(shù)據(jù)的刪除,同時(shí)保留表結(jié)構(gòu)。# 不同點(diǎn):# TRUNCATE TABLE:一旦執(zhí)行此操作,表數(shù)據(jù)全部清除。同時(shí),數(shù)據(jù)是不可以回滾的。# DELETE FROM:一旦執(zhí)行此操作,表數(shù)據(jù)可以全部清除(帶 WHERE 時(shí)也可以不全部清除)。同時(shí),數(shù)據(jù)是可以實(shí)現(xiàn)回滾的。
DDL 和 DML 的說明
① DDL 的操作一旦執(zhí)行,就不可回滾。指令 SET autocommit = FALSE 對(duì) DDL 操作失效。(因?yàn)樵趫?zhí)行完 DDL 操作之后,一定會(huì)執(zhí)行一次 COMMIT。而此 COMMIT 操作不受 SET autocommit = FALSE 影響的。)
# 演示:DELETE FROM
COMMIT; # 提交 1 次
SELECT * FROM myemp3; # 可以查詢到數(shù)據(jù)
SET autocommit = FALSE; # 為了可以回滾,執(zhí)行該命令
DELETE FROM myemp3; # 清空數(shù)據(jù),但該 ddl 操作會(huì)執(zhí)行 1 吃 commit 操作,導(dǎo)致第 3 步失效
SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù)
ROLLBACK; # 回滾操作
SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù);說明不能回滾
② DML 的操作默認(rèn)情況,一旦執(zhí)行,也是不可回滾的。但是,如果在執(zhí)行 DML 之前,執(zhí)行了 SET autocommit = FALSE,則執(zhí)行的 DML 操作就可以實(shí)現(xiàn)回滾。# 演示:TRUNCATE TABLE
COMMIT; # 提交 1 次
SELECT * FROM myemp3; # 可以查詢到數(shù)據(jù)
SET autocommit = FALSE; # 為了可以回滾,執(zhí)行該命令
TRUNCATE TABLE myemp3; # 清空數(shù)據(jù)
SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù)
ROLLBACK; # 回滾操作
SELECT * FROM myemp3; # 再次查詢,有數(shù)據(jù);說明可以回滾
TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少,但 TRUNCATE 無事務(wù)且不觸發(fā) TRIGGER,有可能造成事故,故不建議在開發(fā)代碼中使用此語(yǔ)句
測(cè)試 MySQL8.0 的新特性:DDL 的原子化
CREATE TABLE book1( # 創(chuàng)建數(shù)據(jù)庫(kù)
book_id INT ,rr
book_name VARCHAR(255)
SHOW TABLES; # 顯示 book1
DROP TABLE book1, book2; # 刪除這 2 個(gè)數(shù)據(jù)庫(kù),但只有 book1,所以刪除 book1 成功,刪除 book2 失敗,最后整個(gè)操作回滾;在 mysql5.7 中則不會(huì)回滾
以上就是關(guān)于“mysql 如何創(chuàng)建管理表”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道。