最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

DDL數(shù)據(jù)庫與表的創(chuàng)建和管理深入講解使用教程

 更新時間:2023年04月17日 11:03:45   作者:Decade0712  
這篇文章主要介紹了DDL數(shù)據(jù)庫與表的創(chuàng)建和管理,系統(tǒng)架構(gòu)的層面來看,數(shù)據(jù)庫從大到小依次是數(shù)據(jù)庫服務(wù)器(上面安裝了DBMS和數(shù)據(jù)庫)、數(shù)據(jù)庫(也稱database或者schema)、數(shù)據(jù)表、數(shù)據(jù)表的行與列

一、基本概念

1、從系統(tǒng)架構(gòu)的層面來看,數(shù)據(jù)庫從大到小依次是數(shù)據(jù)庫服務(wù)器(上面安裝了DBMS和數(shù)據(jù)庫)、數(shù)據(jù)庫(也稱database或者schema)、數(shù)據(jù)表、數(shù)據(jù)表的行與列

二、創(chuàng)建和管理數(shù)據(jù)庫

1、創(chuàng)建數(shù)據(jù)庫

  • 直接創(chuàng)建:CREATE DATABASE 數(shù)據(jù)庫名;(使用默認(rèn)的字符集)
  • 創(chuàng)建時指明字符集:CREATE DATABASE 數(shù)據(jù)庫名 CHARACTER SET 'gbk';
  • 創(chuàng)建時判斷數(shù)據(jù)庫是否已存在,如果不存在則創(chuàng)建:CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫名 CHARACTER SET 'utf8';,推薦使用此種方式

2、管理數(shù)據(jù)庫

下面是常見的數(shù)據(jù)庫管理SQL

# 查看當(dāng)前連接中都有哪些數(shù)據(jù)庫
SHOW DATABASES;
# 指定使用哪個數(shù)據(jù)庫或者切換數(shù)據(jù)庫
USE 數(shù)據(jù)庫名;
# 查看當(dāng)前數(shù)據(jù)庫中保存的數(shù)據(jù)表
SHOW TABLES;
# 查看當(dāng)時使用的數(shù)據(jù)庫
SELECT DATABASE() FROM DUAL;
# 查看指定數(shù)據(jù)庫下存在哪些表
SHOW TABLES FROM 數(shù)據(jù)庫名;

3、修改數(shù)據(jù)庫

一般情況下不建議做此操作,多發(fā)生在數(shù)據(jù)庫剛創(chuàng)建出來時

數(shù)據(jù)庫名一般不可以修改,某些可視化工具可以修改數(shù)據(jù)庫名,實際上它是新創(chuàng)建了一個數(shù)據(jù)庫,然后把舊數(shù)據(jù)庫的數(shù)據(jù)復(fù)制過去,再刪除舊庫

# 修改數(shù)據(jù)庫字符集
ALTER DATABASE 數(shù)據(jù)庫名 CHARACTER SET 字符集;

4、刪除數(shù)據(jù)庫

  • 直接刪除:DROP DATABASE 數(shù)據(jù)庫名;
  • 刪除前先判斷,如果存在則刪除:DROP DATABASE IF EXISTS 數(shù)據(jù)庫名;,推薦使用此方式

三、創(chuàng)建和管理表

1、創(chuàng)建表

1)常見數(shù)據(jù)類型

整數(shù)類型:TINYINT、SMALLINT、MEDIUMINT、INT(或者INTEGER)、BIGINT

浮點類型:FLOAT、DOUBLE

定點數(shù)類型:DECIMAL

位類型:BIT

日期時間類型:YEAR、TIME、DATE、DATETIME、TIMESTAMP

文本字符串類型:CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT

枚舉類型:ENUM

集合類型:SET

二進制字符串類型:BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB

JSON類型:JSON對象、JSON數(shù)組

空間數(shù)據(jù)類型

  • 單值:GEOMETRY、POINT、LINESTRING、POLYGON
  • 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION

2)創(chuàng)建表

方式一:從零開始創(chuàng)建

# 使用VARCHAR定義字段必須指明其長度,如果創(chuàng)建表時沒有指明字符集,那么使用所在數(shù)據(jù)庫默認(rèn)的字符集
CREATE TABLE IF NOT EXISTS 表名(
id INT [約束條件] [默認(rèn)值],
emp_name VARCHAR(15) [約束條件] [默認(rèn)值],
birth DATE [約束條件] [默認(rèn)值]
) ENGINE=InnoDB DEFAULT CHARSET = utf8mb3;
# 查看表結(jié)構(gòu)
DESC 表名;
# 查看建表語句
SHOW CREATE TABLE 表名;

方式二:基于現(xiàn)有的表創(chuàng)建新表

新表的數(shù)據(jù)、結(jié)構(gòu)都與SELECT語句的結(jié)果集相同

如果SELECT語句使用了別名,那么新表中的字段就使用別名

CREATE TABLE 新表名
AS
SELECT id,emp_name,birth
FROM t_decade_employee;

建表完成之后,不管是新表還是舊表發(fā)生變化,他們都不會互相影響

2、修改表

1)追加一個字段

語法格式為

ALTER TABLE 表名 ADD 字段名 字段類型 [FIRST|AFTER 字段名];

我們追加如下四個字段,看看FIRST、AFTER關(guān)鍵字的效果

ALTER TABLE t_decade_user ADD hobby VARCHAR(10);
ALTER TABLE t_decade_user ADD company_name VARCHAR(10) FIRST;
ALTER TABLE t_decade_user ADD salary VARCHAR(10) AFTER sex;
ALTER TABLE t_decade_user ADD address VARCHAR(10) AFTER name;

執(zhí)行后,結(jié)果如下

2)修改字段的長度、數(shù)據(jù)類型、默認(rèn)值

語法格式為

ALTER TABLE 表名 MODIFY 字段類型 [DEFAULT 默認(rèn)值];

例如修改上面新加的兩個字段的長度和默認(rèn)值,數(shù)據(jù)類型一般確定后就不會改變了

ALTER TABLE t_decade_user MODIFY salary VARCHAR(15);
ALTER TABLE t_decade_user MODIFY address VARCHAR(25) DEFAULT 'CHINA';
DESC t_decade_user;

3)重命名一個字段

語法格式為

ALTER TABLE 表名
CHANGE 舊字段名 新字段名 字段類型;

我們這里測試將薪酬salary的名字和字段類型進行調(diào)整

ALTER TABLE t_decade_user CHANGE salary month_salary DOUBLE(10,2);
DESC t_decade_user;

結(jié)果如下

4)刪除一個字段

語法格式為

ALTER TABLE 表名DROP COLUMN 要刪除的字段;

現(xiàn)在我們將剛剛添加的那些字段全部刪除

ALTER TABLE t_decade_user DROP COLUMN company_name;
ALTER TABLE t_decade_user DROP COLUMN month_salary;
ALTER TABLE t_decade_user DROP COLUMN hobby;
ALTER TABLE t_decade_user DROP COLUMN address;
DESC t_decade_user;

結(jié)果如下

3、重命名表

方式一:RENAME

RENAME TABLE 舊的表名 TO 新的表名;

方式二:ALTER,這里的TO可以省略

ALTER TABLE 舊的表名 RENAME [TO] 新的表名;

4、刪除表

刪除表結(jié)構(gòu)的同時,也會刪除表中數(shù)據(jù),釋放表的存儲空間

DROP TABLE [IF EXISTS] 表名1,表名2...

注意:刪除表之后,無法回滾,除非有備份等操作

5、清空表

清空表只會清空數(shù)據(jù),表的結(jié)構(gòu)會保存下來

TRUNCATE TABLE 表名

刪除表中所有數(shù)據(jù)

釋放表的存儲空間

對比TRUNCATE TABLEDELETE FROM對比

  • 相同點:都可以實現(xiàn)對表中所有數(shù)據(jù)的刪除,同時保留表結(jié)構(gòu)
  • 不同點:TRUNCATE 語句刪除數(shù)據(jù)無法回滾,而使用DELETE語句刪除數(shù)據(jù)可以回滾

DDL和DML的區(qū)別

  • DDL操作一旦執(zhí)行,就不可回滾,因為它不受SET autocommit = FALSE的影響
  • DML的操作一旦執(zhí)行,默認(rèn)情況下不可回滾,但是,如果在執(zhí)行DML之前,執(zhí)行了SET autocommit = FALSE,執(zhí)行的DML操作就可以回滾

我們拿某個表執(zhí)行一次DELETE FROMTRUNCATE TABLE進行比較

COMMIT;
SELECT * FROM t_decade_user;
SET autocommit = false;
# 如果執(zhí)行TRUNCATE TABLE t_decade_user;那么數(shù)據(jù)就無法回滾到最近一次commit
DELETE FROM t_decade_user;
SELECT * FROM t_decade_user;
ROLLBACK;
SELECT * FROM t_decade_user;

發(fā)現(xiàn)只有DELETE FROM可以回滾

四、DCL中的COMMIT和ROLLBACK

1、commit

commit指提交數(shù)據(jù),一旦執(zhí)行commit,則數(shù)據(jù)就被永久的保存在數(shù)據(jù)庫中,意味著數(shù)據(jù)不可以回滾

2、rollback

rollback指回滾數(shù)據(jù),一旦執(zhí)行rollback,就可以實現(xiàn)數(shù)據(jù)的回滾,回滾到最近一次commit之后的狀態(tài)

五、MySQL8.0中DDL的原子化

MySQL8.0在DDL方面新增了一個原子化的新特性:DDL操作要么成功要么回滾

假設(shè)數(shù)據(jù)庫中只存在一個表t_decade_user

我們同時在MySQL5.7和MySQL8.0中執(zhí)行DROP語句

DROP TABLE t_decade_user,t_decade_employee;

它們都會報錯,但是MySQL5.7會成功刪除掉t_decade_user

而MySQL8.0不會影響到t_decade_user

到此這篇關(guān)于DDL數(shù)據(jù)庫與表的創(chuàng)建和管理深入講解使用教程的文章就介紹到這了,更多相關(guān)DDL數(shù)據(jù)庫與表的創(chuàng)建和管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySql之視圖索引的具體使用

    MySql之視圖索引的具體使用

    MySql 視圖索引是一種基于視圖的索引,它允許在視圖上創(chuàng)建索引以提高查詢性能,本文主要介紹了MySql之視圖索引的具體使用,感興趣的可以了解一下
    2023-08-08
  • MySQL中索引的定義以及操作新手教程

    MySQL中索引的定義以及操作新手教程

    索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中,索引是一種與表有關(guān)的數(shù)據(jù)庫結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于MySQL中索引的定義以及操作的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • mysql中 redo日志詳解

    mysql中 redo日志詳解

    mysql都會把回滾時所需的東西記錄下來,這些為了回滾而記錄的東西稱之為撤銷日志,也就是我們今天要講的undo日志,下面我們就來聊一聊這個undo日志,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • MySQL中exists、in及any的基本用法

    MySQL中exists、in及any的基本用法

    這篇文章主要給大家介紹了關(guān)于MySQL中exists、in及any的基本用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL安裝第四步報錯(initializing?database報錯)的圖文解決方法

    MySQL安裝第四步報錯(initializing?database報錯)的圖文解決方法

    這篇文章主要給大家介紹了關(guān)于MySQL安裝第四步報錯(initializing?database報錯)的解決方法,"initializing?database"?通常出現(xiàn)在安裝MySQL的過程中,表示MySQL數(shù)據(jù)庫初始化過程中遇到了問題,需要的朋友可以參考下
    2024-06-06
  • mysql密碼中有特殊字符&在命令行下登錄的操作

    mysql密碼中有特殊字符&在命令行下登錄的操作

    這篇文章主要介紹了mysql密碼中有特殊字符&在命令行下登錄的操作,具有很好的參考價值希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • MySQL隔離級別和鎖機制的深入講解

    MySQL隔離級別和鎖機制的深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL隔離級別和鎖機制的相關(guān)資料,主要包括深入理解MySQL隔離級別和鎖機制使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,需要的朋友可以參考下
    2021-08-08
  • MySql在Mac上的安裝與配置詳解

    MySql在Mac上的安裝與配置詳解

    這篇文章主要介紹了MySql在Mac上的安裝配置,需要的朋友可以參考下
    2017-05-05
  • mysql數(shù)據(jù)庫視圖和執(zhí)行計劃實戰(zhàn)案例

    mysql數(shù)據(jù)庫視圖和執(zhí)行計劃實戰(zhàn)案例

    這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫視圖和執(zhí)行計劃的相關(guān)資料,在使用MySQL過程中視圖和執(zhí)行計劃是一個很好的工具,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • 詳解MySQL中的存取權(quán)限

    詳解MySQL中的存取權(quán)限

    這篇文章主要介紹了詳解MySQL中的存取權(quán)限,針對用戶使用數(shù)據(jù)庫權(quán)限分配的問題做出說明,需要的朋友可以參考下
    2015-07-07

最新評論

瓮安县| 镇远县| 镇沅| 故城县| 清河县| 攀枝花市| 岳池县| 界首市| 云阳县| 西乌珠穆沁旗| 绥德县| 竹溪县| 自贡市| 合肥市| 漯河市| 溧阳市| 临沂市| 涟水县| 东乌珠穆沁旗| 临海市| 乐平市| 于都县| 宁德市| 阜宁县| 大关县| 彭泽县| 简阳市| 河津市| 高陵县| 宁乡县| 莎车县| 平南县| 南昌市| 都昌县| 平乐县| 普定县| 杨浦区| 永福县| 临邑县| 连山| 遂川县|