免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MySQL 數(shù)據(jù)定義語言(DDL)

參考資料:C語言中文網(wǎng)

SQL 包含以下 4 部分:
    1    數(shù)據(jù)定義語言(DDL):DROP、CREATE、ALTER 等語句。
    2    數(shù)據(jù)操作語言(DML):INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。
    3    數(shù)據(jù)查詢語言(DQL):SELECT 語句。
    4    數(shù)據(jù)控制語言(DCL): GRANT、REVOKE、COMMIT、ROLLBACK 等語句。

MySQL之DDL(Data Definition Language): 數(shù)據(jù)定義語言:CREATE,ALTER,DROP等

DDL:操作數(shù)據(jù)庫,表(CRUD)

1、操作數(shù)據(jù)庫(CRUD)

(1)C(Create):創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫名
[[DEFAULT] CHARACTER SET 字符集名]
[[DEFAULT] COLLATE 校對規(guī)則名];

[ ]中的內(nèi)容是可選的。
語法說明如下:
數(shù)據(jù)庫名:創(chuàng)建數(shù)據(jù)庫的名稱。MySQL 的數(shù)據(jù)存儲區(qū)將以目錄方式表示 MySQL 數(shù)據(jù)庫,因此數(shù)據(jù)庫名稱必須符合操作系統(tǒng)的文件夾命名規(guī)則,不能以數(shù)字開頭,盡量要有實際意義。注意在 MySQL 中不區(qū)分大小寫。
IF NOT EXISTS:在創(chuàng)建數(shù)據(jù)庫之前進(jìn)行判斷,只有該數(shù)據(jù)庫目前尚不存在時才能執(zhí)行操作。此選項可以用來避免數(shù)據(jù)庫已經(jīng)存在而重復(fù)創(chuàng)建的錯誤。
[DEFAULT] CHARACTER SET:指定數(shù)據(jù)庫的字符集。指定字符集的目的是為了避免在數(shù)據(jù)庫中存儲的數(shù)據(jù)出現(xiàn)亂碼的情況。如果在創(chuàng)建數(shù)據(jù)庫時不指定字符集,那么就使用系統(tǒng)的默認(rèn)字符集。
[DEFAULT] COLLATE:指定字符集的默認(rèn)校對規(guī)則。

 

eg.

mysql> CREATE DATABASE IF NOT EXISTS test
    -> DEFAULT CHARACTER SET utf8
    -> DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected, 1 warning (0.01 sec)

 

(2)R(Retrieve):查詢

SHOW DATABASES [LIKE '數(shù)據(jù)庫名'];

語法說明如下:
LIKE 從句是可選項,用于匹配指定的數(shù)據(jù)庫名稱。LIKE 從句可以部分匹配,也可以完全匹配。
數(shù)據(jù)庫名由單引號' '包圍。

 

eg.查詢?nèi)?/p>

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |         |
| mqcms              |
| mysql              |
| performance_schema |
| phpmyadmin         |
| sys                |
| test               |
| test_aa            |
| ultrax             |
+--------------------+
9 rows in set (0.00 sec)

eg.查詢某一個(我有test和test_aa兩個庫)

mysql> show databases like 'test';
+-----------------+
| Database (test) |
+-----------------+
| test            |
+-----------------+
1 row in set (0.00 sec)
mysql> show databases like '%test%';
+-------------------+
| Database (%test%) |
+-------------------+
| dedetest          |
| test              |
| test_aa           |
+-------------------+
3 rows in set (0.00 sec)

這里的like跟模糊查詢一樣%aa%;%aa;aa%;

eg.查詢某個數(shù)據(jù)庫的創(chuàng)建語言

mysql> show create database test;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

 

(3)U(Update):修改

ALTER DATABASE [數(shù)據(jù)庫名] { 
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校對規(guī)則名>}

語法說明如下:
ALTER DATABASE 用于更改數(shù)據(jù)庫的全局特性。
使用 ALTER DATABASE 需要獲得數(shù)據(jù)庫 ALTER 權(quán)限。
數(shù)據(jù)庫名稱可以忽略,此時語句對應(yīng)于默認(rèn)數(shù)據(jù)庫。
CHARACTER SET 子句用于更改默認(rèn)的數(shù)據(jù)庫字符集。

 

eg.修改數(shù)據(jù)庫test的字符集

mysql> ALTER DATABASE test
    -> DEFAULT CHARACTER SET gb2312
    -> DEFAULT COLLATE gb2312_chinese_ci;
Query OK, 1 row affected (0.02 sec)


mysql> show create database test;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gb2312 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

(4)D(Delete):刪除

DROP DATABASE [ IF EXISTS ] <數(shù)據(jù)庫名>

語法說明如下:
<數(shù)據(jù)庫名>:指定要刪除的數(shù)據(jù)庫名。
IF EXISTS:用于防止當(dāng)數(shù)據(jù)庫不存在時發(fā)生錯誤。
DROP DATABASE:刪除數(shù)據(jù)庫中的所有表格并同時刪除數(shù)據(jù)庫。使用此語句時要非常小心,以免錯誤刪除。如果要使用 DROP DATABASE,需要獲得數(shù)據(jù)庫 DROP 權(quán)限。

 

注意:MySQL 安裝后,系統(tǒng)會自動創(chuàng)建名為 information_schema 和 mysql 的兩個系統(tǒng)數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫存放一些和數(shù)據(jù)庫相關(guān)的信息,如果刪除了這兩個數(shù)據(jù)庫,MySQL 將不能正常工作。

使用 DROP DATABASE 命令時要非常謹(jǐn)慎,在執(zhí)行該命令后,MySQL 不會給出任何提示確認(rèn)信息。DROP DATABASE 刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中存儲的所有數(shù)據(jù)表和數(shù)據(jù)也將一同被刪除,而且不能恢復(fù)。因此最好在刪除數(shù)據(jù)庫之前先將數(shù)據(jù)庫進(jìn)行備份。

eg.刪除數(shù)據(jù)庫test_aa;

mysql> DROP DATABASE IF EXISTS test_aa;
Query OK, 0 rows affected (0.02 sec)

mysql> show databases like 'test%';
+------------------+
| Database (test%) |
+------------------+
| test             |
+------------------+
1 row in set (0.00 sec)

   

2、操作數(shù)據(jù)表(CRUD)

(1)C(Create)創(chuàng)建表

CREATE TABLE <表名> ([表定義選項])[表選項][分區(qū)選項];

其中,[表定義選項]的格式為:
<列名1> <類型1> [,…] <列名n> <類型n>


CREATE TABLE 語句的主要語法及使用說明如下:
CREATE TABLE:用于創(chuàng)建給定名稱的表,必須擁有表CREATE的權(quán)限。
<表名>:指定要創(chuàng)建表的名稱,在 CREATE TABLE 之后給出,必須符合標(biāo)識符命名規(guī)則。表名稱被指定為 db_name.tbl_name,以便在特定的數(shù)據(jù)庫中創(chuàng)建表。無論是否有當(dāng)前數(shù)據(jù)庫,都可以通過這種方式創(chuàng)建。在當(dāng)前數(shù)據(jù)庫中創(chuàng)建表時,可以省略 db-name。如果使用加引號的識別名,則應(yīng)對數(shù)據(jù)庫和表名稱分別加引號。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
<表定義選項>:表創(chuàng)建定義,由列名(col_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。
默認(rèn)的情況是,表被創(chuàng)建到當(dāng)前的數(shù)據(jù)庫中。若表已存在、沒有當(dāng)前數(shù)據(jù)庫或者數(shù)據(jù)庫不存在,則會出現(xiàn)錯誤。

eg.創(chuàng)建一張測試表test_tbl;

字段名稱 字段類型 字段備注
id int(11) ID
name varchar(20) 名稱
age int(11) 年齡
sex tinyint(4) 性別0 男 1女 2 未知

 

 

 

 

 

 

 

 

 

mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| board          |
| data           |
+----------------+
2 rows in set (0.01 sec)


mysql> CREATE TABLE test_tbl
    -> (
    -> id INT(11),
    -> name VARCHAR(20),
    -> age INT(11),
    -> sex TINYINT(4)
    -> );
Query OK, 0 rows affected (0.03 sec)

 

復(fù)制表結(jié)構(gòu):

 CREATE TABLE <數(shù)據(jù)表名> like <被復(fù)制的表名>;

 

eg.

mysql> CREATE TABLE test_tbl_cp like test_tbl;
Query OK, 0 rows affected (0.01 sec)

 

 

(2)R(Retrieve)查看表

查看所有表:

SHOW TABLES;

eg.

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| board          |
| data           |
| test_tbl       |
| test_tbl_cp    |
+----------------+
4 rows in set (0.00 sec)

查看表結(jié)構(gòu):

DESCRIBE <表名>;

或簡寫成:
DESC <表名>;

DESCRIBE/DESC 語句可以查看表的字段信息,包括字段名、字段數(shù)據(jù)類型、是否為主鍵、是否有默認(rèn)值等

 

eg.

mysql> DESC test_tbl;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| sex   | tinyint(4)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

其中,各個字段的含義如下:
Null:表示該列是否可以存儲 NULL 值。
Key:表示該列是否已編制索引。PRI 表示該列是表主鍵的一部分,UNI 表示該列是 UNIQUE 索引的一部分,MUL 表示在列中某個給定值允許出現(xiàn)多次。
Default:表示該列是否有默認(rèn)值,如果有,值是多少。
Extra:表示可以獲取的與給定列有關(guān)的附加信息,如 AUTO_INCREMENT 等。

SHOW CREATE TABLE語句可以用來顯示創(chuàng)建表時的CREATE TABLE語句:

SHOW CREATE TABLE <表名>\G;

提示:使用 SHOW CREATE TABLE 語句不僅可以查看創(chuàng)建表時的詳細(xì)語句,而且可以查看存儲引擎和字符編碼。如果不加“\G”參數(shù),顯示的結(jié)果可能非?;靵y,加上“\G”參數(shù)之后,可使顯示的結(jié)果更加直觀,易于查看。

eg.

mysql> show create table test_tbl\G;
*************************** 1. row ***************************
       Table: test_tbl
Create Table: CREATE TABLE `test_tbl` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

 

(3)U(Update)修改

ALTER TABLE <表名> [修改選項]

修改選項的語法格式如下: {
ADD COLUMN <列名> <類型> | CHANGE COLUMN <舊列名> <新列名> <新列類型> | ALTER COLUMN <列名> { SET DEFAULT <默認(rèn)值> | DROP DEFAULT } | MODIFY COLUMN <列名> <類型> | DROP COLUMN <列名> | RENAME TO <新表名>
}

 

 添加字段:

ALTER TABLE <表名> ADD <新字段名> <數(shù)據(jù)類型> [約束條件] [FIRST|AFTER 已存在的字段名];
新字段名為需要添加的字段的名稱;FIRST 為可選參數(shù),其作用是將新添加的字段設(shè)置為表的第一個字段;AFTER 為可選參數(shù),其作用是將新添加的字段添加到指定的已存在的字段名的后面。
 

eg.在表test_tbl的name后面添加新字段name_cp:

mysql> ALTER TABLE test_tbl ADD name_cp VARCHAR(20) AFTER name;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_tbl;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| name_cp | varchar(20) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| sex     | tinyint(4)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 

修改字段名稱:

ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <新數(shù)據(jù)類型>;

其中,舊字段名指修改前的字段名;新字段名指修改后的字段名;新數(shù)據(jù)類型指修改后的數(shù)據(jù)類型,如果不需要修改字段的數(shù)據(jù)類型,可以將新數(shù)據(jù)類型設(shè)置成與原來一樣,但數(shù)據(jù)類型不能為空。

 eg.修改name的名稱改為names

mysql> ALTER TABLE test_tbl
    -> CHANGE name names VARCHAR(20);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_tbl;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| names   | varchar(20) | YES  |     | NULL    |       |
| name_cp | varchar(20) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| sex     | tinyint(4)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

 

修改/刪除字段默認(rèn)值:

ALTER TABLE <表名> ALTER COLUMN <列名> { SET DEFAULT <默認(rèn)值> | DROP DEFAULT }

 

eg.將字段sex的默認(rèn)值改為2

mysql> ALTER TABLE test_tbl ALTER sex SET DEFAULT 2;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_tbl;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| names   | varchar(20) | YES  |     | NULL    |       |
| name_cp | varchar(50) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| sex     | tinyint(4)  | YES  |     | 2       |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 

 

修改字段類型:

ALTER TABLE <表名> MODIFY <字段名> <數(shù)據(jù)類型>

其中,表名指要修改數(shù)據(jù)類型的字段所在表的名稱,字段名指需要修改的字段,數(shù)據(jù)類型指修改后字段的新數(shù)據(jù)類型。

 eg.修改name_cp的數(shù)據(jù)類型varchar(50)

mysql> ALTER TABLE test_tbl 
    -> MODIFY name_cp varchar(50);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_tbl;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| name_cp | varchar(50) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| sex     | tinyint(4)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 

刪除字段:

ALTER TABLE <表名> DROP <字段名>;

其中,字段名指需要從表中刪除的字段的名稱。

 eg.刪除sex字段

mysql> ALTER TABLE test_tbl
    -> DROP sex;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test_tbl;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| names   | varchar(20) | YES  |     | NULL    |       |
| name_cp | varchar(50) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

 

修改表名:

ALTER TABLE <舊表名> RENAME [TO] <新表名>;

其中,TO 為可選參數(shù),使用與否均不影響結(jié)果。

 eg.修改表名test_tbl改為test_tb;

mysql> ALTER TABLE test_tbl
    -> RENAME TO test_tb;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| board          |
| data           |
| test_tb        |
| test_tbl_cp    |
+----------------+
4 rows in set (0.00 sec)

 

 

 (4)D(Delete)刪除表

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


對語法格式的說明如下:
表名1, 表名2, 表名3 ...表示要被刪除的數(shù)據(jù)表的名稱。DROP TABLE 可以同時刪除多個表,只要將表名依次寫在后面,相互之間用逗號隔開即可。
IF EXISTS 用于在刪除數(shù)據(jù)表之前判斷該表是否存在。如果不加 IF EXISTS,當(dāng)數(shù)據(jù)表不存在時 MySQL 將提示錯誤,中斷 SQL 語句的執(zhí)行;加上 IF EXISTS 后,當(dāng)數(shù)據(jù)表不存在時 SQL 語句可以順利執(zhí)行,但是會發(fā)出警告(warning)。

兩點注意:
用戶必須擁有執(zhí)行 DROP TABLE 命令的權(quán)限,否則數(shù)據(jù)表不會被刪除。
表被刪除時,用戶在該表上的權(quán)限不會自動刪除。

eg.刪除表test_tbl_cp

mysql> DROP TABLE test_tbl_cp;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| board          |
| data           |
| test_tb        |
+----------------+
3 rows in set (0.00 sec)

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL查看當(dāng)前數(shù)據(jù)庫庫
MySql-Day-01
Mysql的常用命令
mysql常識和基本操作
Mysql的基本語句
MySQL的語言結(jié)構(gòu)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服