這篇“MySQL如何創(chuàng)建管理表”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“mysql如何創(chuàng)建管理表”文章吧。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計制作、做網(wǎng)站,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
命名規(guī)則
數(shù)據(jù)庫名、表名不得超過30個字符,變量名限制為29個 必須只能包含 A–Z, a–z, 0–9, _共63個字符 數(shù)據(jù)庫名、表名、字段名等對象名中間不要包含空格 同一個MySQL軟件中,數(shù)據(jù)庫不能同名;同一個庫中,表不能重名;同一個表中,字段不能重名 必須保證你的字段沒有和保留字、數(shù)據(jù)庫系統(tǒng)或常用方法沖突。如果堅持使用,請在SQL語句中使用`(著重號)引起來 保持字段名和類型的一致性:在命名字段并為其指定數(shù)據(jù)類型的時候一定要保證一致性,假如數(shù)據(jù)類型在一個表里是整數(shù),那在另一個表里可就別變成字符型了
數(shù)據(jù)類型
常用類型
代碼案例:數(shù)據(jù)庫相關(guān)
# 創(chuàng)建數(shù)據(jù)庫 #方式1: CREATE DATABASE mytest1; # 創(chuàng)建的此數(shù)據(jù)庫使用的是默認的字符集 # 查看創(chuàng)建數(shù)據(jù)庫的結(jié)構(gòu) SHOW CREATE DATABASE mytest1; #方式2:顯式了指名了要創(chuàng)建的數(shù)據(jù)庫的字符集 CREATE DATABASE mytest2 CHARACTER SET 'gbk'; # 方式3(推薦):如果要創(chuàng)建的數(shù)據(jù)庫已經(jīng)存在,則創(chuàng)建不成功,但不會報錯。 CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET 'utf8'; # 如果要創(chuàng)建的數(shù)據(jù)庫不存在,則創(chuàng)建成功 CREATE DATABASE IF NOT EXISTS mytest3 CHARACTER SET 'utf8'; # 管理數(shù)據(jù)庫 # 查看當(dāng)前連接中的數(shù)據(jù)庫都有哪些 SHOW DATABASES; #切換到指定的數(shù)據(jù)庫 USE atguigudb; # 查看當(dāng)前數(shù)據(jù)庫中保存的數(shù)據(jù)表 SHOW TABLES; # 查看當(dāng)前使用的數(shù)據(jù)庫 SELECT DATABASE() FROM DUAL; # 查看指定數(shù)據(jù)庫下保存的數(shù)據(jù)表 SHOW TABLES FROM mysql; # 修改數(shù)據(jù)庫 # 更改數(shù)據(jù)庫字符集 ALTER DATABASE mytest2 CHARACTER SET 'utf8'; # 刪除數(shù)據(jù)庫 #方式1:如果要刪除的數(shù)據(jù)庫存在,則刪除成功。如果不存在,則報錯 DROP DATABASE mytest1; # 方式2:推薦。如果要刪除的數(shù)據(jù)庫存在,則刪除成功。如果不存在,則默默結(jié)束,不會報錯 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時指明其長度。 hire_date DATE ); # 方式2:基于現(xiàn)有的表,同時導(dǎo)入數(shù)據(jù) CREATE TABLE myemp2 AS SELECT employee_id,last_name,salary FROM employees; # 查詢舊表中的數(shù)據(jù),并指定別名,作為新表中的數(shù)據(jù) # 查詢語句中字段的別名,可以作為新創(chuàng)建的表的字段的名稱 CREATE TABLE myemp3 AS 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)建一個表employees_copy,實現(xiàn)對employees表的復(fù)制,包括表數(shù)據(jù) CREATE TABLE employees_copy AS SELECT * FROM employees; # 創(chuàng)建一個表employees_blank,實現(xiàn)對employees表的復(fù)制,不包括表數(shù)據(jù) CREATE TABLE employees_blank AS SELECT * FROM employees #where department_id > 10000; # 方式1 WHERE 1 = 2;
修改表
# 查看表結(jié)構(gòu) DESC myemp1; # 添加一個字段 ALTER TABLE myemp1 ADD salary DOUBLE(10,2); #默認添加到表中的最后一個字段的位置 ALTER TABLE myemp1 ADD phone_number VARCHAR(20) FIRST; # 添加到首位 ALTER TABLE myemp1 ADD email VARCHAR(45) AFTER emp_name; # 添加到指定字段之后 # 修改一個字段:數(shù)據(jù)類型、長度、默認值 ALTER TABLE myemp1 MODIFY emp_name VARCHAR(25); ALTER TABLE myemp1 MODIFY emp_name VARCHAR(35) DEFAULT 'aaa'; # 重命名一個字段 ALTER TABLE myemp1 CHANGE salary monthly_salary DOUBLE(10,2); ALTER TABLE myemp1 CHANGE email my_email VARCHAR(50); # 刪除一個字段 ALTER TABLE myemp1 DROP COLUMN my_email; # 重命名表 # 方式1: RENAME TABLE myemp1 TO myemp11; # 方式2: ALTER TABLE myemp2 RENAME TO myemp12;
刪除表
# 不光將表結(jié)構(gòu)刪除掉,同時表中的數(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ù)庫中,意味著數(shù)據(jù)不可以回滾 # ROLLBACK:回滾數(shù)據(jù)。一旦執(zhí)行ROLLBACK,則可以實現(xiàn)數(shù)據(jù)的回滾?;貪L到最近的一次COMMIT之后
對比TRUNCATE TABLE和DELETE FROM
# 相同點:都可以實現(xiàn)對表中所有數(shù)據(jù)的刪除,同時保留表結(jié)構(gòu)。 # 不同點: # TRUNCATE TABLE:一旦執(zhí)行此操作,表數(shù)據(jù)全部清除。同時,數(shù)據(jù)是不可以回滾的。 # DELETE FROM:一旦執(zhí)行此操作,表數(shù)據(jù)可以全部清除(帶WHERE時也可以不全部清除)。同時,數(shù)據(jù)是可以實現(xiàn)回滾的。
DDL 和 DML 的說明
① DDL的操作一旦執(zhí)行,就不可回滾。指令SET autocommit = FALSE對DDL操作失效。(因為在執(zhí)行完DDL操作之后,一定會執(zhí)行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE影響的。) # 演示:DELETE FROM #1) COMMIT; # 提交1次 #2) SELECT * FROM myemp3; # 可以查詢到數(shù)據(jù) #3) SET autocommit = FALSE; # 為了可以回滾,執(zhí)行該命令 #4) DELETE FROM myemp3; # 清空數(shù)據(jù),但該ddl操作會執(zhí)行1吃commit操作,導(dǎo)致第3步失效 #5) SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù) #6) ROLLBACK; # 回滾操作 #7) SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù);說明不能回滾 ② DML的操作默認情況,一旦執(zhí)行,也是不可回滾的。但是,如果在執(zhí)行DML之前,執(zhí)行了SET autocommit = FALSE,則執(zhí)行的DML操作就可以實現(xiàn)回滾。 # 演示:TRUNCATE TABLE #1) COMMIT; # 提交1次 #2) SELECT * FROM myemp3; # 可以查詢到數(shù)據(jù) #3) SET autocommit = FALSE; # 為了可以回滾,執(zhí)行該命令 #4) TRUNCATE TABLE myemp3; # 清空數(shù)據(jù) #5) SELECT * FROM myemp3; # 再次查詢,無數(shù)據(jù) #6) ROLLBACK; # 回滾操作 #7) SELECT * FROM myemp3; # 再次查詢,有數(shù)據(jù);說明可以回滾
TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少,但 TRUNCATE 無事務(wù)且不觸發(fā) TRIGGER,有可能造成事故,故不建議在開發(fā)代碼中使用此語句
測試MySQL8.0的新特性:DDL的原子化
CREATE TABLE book1( # 創(chuàng)建數(shù)據(jù)庫 book_id INT ,rr book_name VARCHAR(255) ); SHOW TABLES; # 顯示book1 DROP TABLE book1, book2; # 刪除這2個數(shù)據(jù)庫,但只有book1,所以刪除book1成功,刪除book2失敗,最后整個操作回滾;在mysql5.7中則不會回滾
以上就是關(guān)于“mysql如何創(chuàng)建管理表”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站名稱:mysql如何創(chuàng)建管理表
文章網(wǎng)址:http://www.rwnh.cn/article18/ghcggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、服務(wù)器托管、小程序開發(fā)、面包屑導(dǎo)航、商城網(wǎng)站、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)