国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql 數(shù)據(jù)庫定義語言(DDL)

這篇具有很好參考價值的文章主要介紹了mysql 數(shù)據(jù)庫定義語言(DDL)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

庫的操作

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

數(shù)據(jù)庫編碼集

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

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

數(shù)據(jù)庫查詢

數(shù)據(jù)庫備份

表的操作

表的創(chuàng)建

查詢表

刪除表

修改表


庫的操作

這里先聲明一下,這篇文章主要是講數(shù)據(jù)庫表的定義操作,也就是 DDL,只要是對數(shù)據(jù)庫以及表結(jié)構(gòu)操作的 SQL

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

數(shù)據(jù)庫的創(chuàng)建,其實在之前我們淺淺的提過創(chuàng)建數(shù)據(jù)庫。

CREATE DATABASE database_name [character set 字符集編碼 collate 校驗集];
  • 一般 mysql 里面關(guān)鍵字用大寫,但是小寫也支持

  • database_name 是數(shù)據(jù)庫名

  • [ ] 里面的是可選項

上面就是創(chuàng)建數(shù)據(jù)庫的語法,我們先不看可選項,我們先簡單的創(chuàng)建一下數(shù)據(jù)庫。

示例:

創(chuàng)建一個 d1 的數(shù)據(jù)庫。

mysql> create database d1;
Query OK, 1 row affected (0.00 sec)

創(chuàng)建好該數(shù)據(jù)庫后,在 /var/lib/mysql 目錄下一定會生成一個 d1 的目錄,而創(chuàng)建數(shù)據(jù)庫的本質(zhì)就是在特定的目錄下創(chuàng)建一個目錄,而幫我們創(chuàng)建該目錄的就是 mysqld(也就是 mysql 服務(wù))。

上面就是默認(rèn)的創(chuàng)建,等創(chuàng)建好后,該數(shù)據(jù)庫的編碼就是按照我們的配置文件里面來的。

數(shù)據(jù)庫編碼集

先說一下什么是編碼,編碼就是當(dāng)一個文本存到計算機(jī)中那么是按照什么格式存儲的,就可以這樣簡單的理解。

在mysql中其實有兩個編碼集:

  • 字符集:當(dāng)存儲的時候按照字符集的格式存儲

  • 校驗集:當(dāng)數(shù)據(jù)庫里面的數(shù)據(jù)比較或者讀取的時候按照校驗集

所以當(dāng)我們創(chuàng)建數(shù)據(jù)庫的時候,字符集和校驗集一定要是相對應(yīng)的。

上面的編碼集可以簡單理解一下,就是如果我們用中文來寫文章,那么其他人也必須要中中文來理解這篇文章,如果用其他語言的話,那么就會看不懂或者理解錯誤。

編碼集在數(shù)據(jù)庫創(chuàng)建的時候也可以設(shè)置,如果不設(shè)置的話就會按照配置文件里面的默認(rèn)來設(shè)置。

當(dāng)前 mysql 的默認(rèn)字符集和編碼集分別是多少?

字符集:

mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name ? ? ? ?  | Value |
+------------------------+-------+
| character_set_database | utf8  |
+------------------------+-------+
1 row in set (0.00 sec)

校驗集:

mysql> show variables like 'collation_database';
+--------------------+-----------------+
| Variable_name ? ?  | Value ? ? ? ? ? |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.00 sec)

上面就是當(dāng)前創(chuàng)建數(shù)據(jù)庫的默認(rèn)編碼集。

當(dāng)前mysql 中所有的編碼集合

字符集:

show character set;
mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description ? ? ? ? ? ? ? ? ? ? | Default collation ? | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 ? ? | Big5 Traditional Chinese ? ? ?  | big5_chinese_ci ? ? | ? ? ?2 |
| dec8 ? ? | DEC West European ? ? ? ? ? ? ? | dec8_swedish_ci ? ? | ? ? ?1 |
| cp850 ?  | DOS West European ? ? ? ? ? ? ? | cp850_general_ci ?  | ? ? ?1 |
| hp8 ? ?  | HP West European ? ? ? ? ? ? ?  | hp8_english_ci ? ?  | ? ? ?1 |
| koi8r ?  | KOI8-R Relcom Russian ? ? ? ? ? | koi8r_general_ci ?  | ? ? ?1 |
| latin1 ? | cp1252 West European ? ? ? ? ?  | latin1_swedish_ci ? | ? ? ?1 |
| latin2 ? | ISO 8859-2 Central European ? ? | latin2_general_ci ? | ? ? ?1 |
| swe7 ? ? | 7bit Swedish ? ? ? ? ? ? ? ? ?  | swe7_swedish_ci ? ? | ? ? ?1 |
| ascii ?  | US ASCII ? ? ? ? ? ? ? ? ? ? ?  | ascii_general_ci ?  | ? ? ?1 |
| ujis ? ? | EUC-JP Japanese ? ? ? ? ? ? ? ? | ujis_japanese_ci ?  | ? ? ?3 |
| sjis ? ? | Shift-JIS Japanese ? ? ? ? ? ?  | sjis_japanese_ci ?  | ? ? ?2 |
| hebrew ? | ISO 8859-8 Hebrew ? ? ? ? ? ? ? | hebrew_general_ci ? | ? ? ?1 |
| tis620 ? | TIS620 Thai ? ? ? ? ? ? ? ? ? ? | tis620_thai_ci ? ?  | ? ? ?1 |
| euckr ?  | EUC-KR Korean ? ? ? ? ? ? ? ? ? | euckr_korean_ci ? ? | ? ? ?2 |
| koi8u ?  | KOI8-U Ukrainian ? ? ? ? ? ? ?  | koi8u_general_ci ?  | ? ? ?1 |
| gb2312 ? | GB2312 Simplified Chinese ? ? ? | gb2312_chinese_ci ? | ? ? ?2 |
| greek ?  | ISO 8859-7 Greek ? ? ? ? ? ? ?  | greek_general_ci ?  | ? ? ?1 |
| cp1250 ? | Windows Central European ? ? ?  | cp1250_general_ci ? | ? ? ?1 |
| gbk ? ?  | GBK Simplified Chinese ? ? ? ?  | gbk_chinese_ci ? ?  | ? ? ?2 |
| latin5 ? | ISO 8859-9 Turkish ? ? ? ? ? ?  | latin5_turkish_ci ? | ? ? ?1 |
| armscii8 | ARMSCII-8 Armenian ? ? ? ? ? ?  | armscii8_general_ci | ? ? ?1 |
| utf8 ? ? | UTF-8 Unicode ? ? ? ? ? ? ? ? ? | utf8_general_ci ? ? | ? ? ?3 |
| ucs2 ? ? | UCS-2 Unicode ? ? ? ? ? ? ? ? ? | ucs2_general_ci ? ? | ? ? ?2 |
| cp866 ?  | DOS Russian ? ? ? ? ? ? ? ? ? ? | cp866_general_ci ?  | ? ? ?1 |
| keybcs2  | DOS Kamenicky Czech-Slovak ? ?  | keybcs2_general_ci  | ? ? ?1 |
| macce ?  | Mac Central European ? ? ? ? ?  | macce_general_ci ?  | ? ? ?1 |
| macroman | Mac West European ? ? ? ? ? ? ? | macroman_general_ci | ? ? ?1 |
| cp852 ?  | DOS Central European ? ? ? ? ?  | cp852_general_ci ?  | ? ? ?1 |
| latin7 ? | ISO 8859-13 Baltic ? ? ? ? ? ?  | latin7_general_ci ? | ? ? ?1 |
| utf8mb4  | UTF-8 Unicode ? ? ? ? ? ? ? ? ? | utf8mb4_general_ci  | ? ? ?4 |
| cp1251 ? | Windows Cyrillic ? ? ? ? ? ? ?  | cp1251_general_ci ? | ? ? ?1 |
| utf16 ?  | UTF-16 Unicode ? ? ? ? ? ? ? ?  | utf16_general_ci ?  | ? ? ?4 |
| utf16le  | UTF-16LE Unicode ? ? ? ? ? ? ?  | utf16le_general_ci  | ? ? ?4 |
| cp1256 ? | Windows Arabic ? ? ? ? ? ? ? ?  | cp1256_general_ci ? | ? ? ?1 |
| cp1257 ? | Windows Baltic ? ? ? ? ? ? ? ?  | cp1257_general_ci ? | ? ? ?1 |
| utf32 ?  | UTF-32 Unicode ? ? ? ? ? ? ? ?  | utf32_general_ci ?  | ? ? ?4 |
| binary ? | Binary pseudo charset ? ? ? ? ? | binary ? ? ? ? ? ?  | ? ? ?1 |
| geostd8  | GEOSTD8 Georgian ? ? ? ? ? ? ?  | geostd8_general_ci  | ? ? ?1 |
| cp932 ?  | SJIS for Windows Japanese ? ? ? | cp932_japanese_ci ? | ? ? ?2 |
| eucjpms  | UJIS for Windows Japanese ? ? ? | eucjpms_japanese_ci | ? ? ?3 |
| gb18030  | China National Standard GB18030 | gb18030_chinese_ci  | ? ? ?4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.01 sec)

校驗集:

show collation;
mysql> show collation;
+--------------------------+----------+-----+---------+----------+---------+
| Collation ? ? ? ? ? ? ?  | Charset  | Id  | Default | Compiled | Sortlen |
+--------------------------+----------+-----+---------+----------+---------+
| gbk_chinese_ci ? ? ? ? ? | gbk ? ?  | ?28 | Yes ? ? | Yes ? ?  | ? ? ? 1 |
| gbk_bin ? ? ? ? ? ? ? ?  | gbk ? ?  | ?87 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| latin5_turkish_ci ? ? ?  | latin5 ? | ?30 | Yes ? ? | Yes ? ?  | ? ? ? 1 |
| latin5_bin ? ? ? ? ? ? ? | latin5 ? | ?78 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| armscii8_general_ci ? ?  | armscii8 | ?32 | Yes ? ? | Yes ? ?  | ? ? ? 1 |
| armscii8_bin ? ? ? ? ? ? | armscii8 | ?64 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| utf8_general_ci ? ? ? ?  | utf8 ? ? | ?33 | Yes ? ? | Yes ? ?  | ? ? ? 1 |
| utf8_bin ? ? ? ? ? ? ? ? | utf8 ? ? | ?83 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| utf8_unicode_ci ? ? ? ?  | utf8 ? ? | 192 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_icelandic_ci ? ? ?  | utf8 ? ? | 193 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_latvian_ci ? ? ? ?  | utf8 ? ? | 194 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_romanian_ci ? ? ? ? | utf8 ? ? | 195 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_slovenian_ci ? ? ?  | utf8 ? ? | 196 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_polish_ci ? ? ? ? ? | utf8 ? ? | 197 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_estonian_ci ? ? ? ? | utf8 ? ? | 198 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_spanish_ci ? ? ? ?  | utf8 ? ? | 199 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_swedish_ci ? ? ? ?  | utf8 ? ? | 200 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_turkish_ci ? ? ? ?  | utf8 ? ? | 201 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_czech_ci ? ? ? ? ?  | utf8 ? ? | 202 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_danish_ci ? ? ? ? ? | utf8 ? ? | 203 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_lithuanian_ci ? ? ? | utf8 ? ? | 204 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_slovak_ci ? ? ? ? ? | utf8 ? ? | 205 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_spanish2_ci ? ? ? ? | utf8 ? ? | 206 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_roman_ci ? ? ? ? ?  | utf8 ? ? | 207 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_persian_ci ? ? ? ?  | utf8 ? ? | 208 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_esperanto_ci ? ? ?  | utf8 ? ? | 209 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_hungarian_ci ? ? ?  | utf8 ? ? | 210 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_sinhala_ci ? ? ? ?  | utf8 ? ? | 211 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_german2_ci ? ? ? ?  | utf8 ? ? | 212 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_croatian_ci ? ? ? ? | utf8 ? ? | 213 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_unicode_520_ci ? ?  | utf8 ? ? | 214 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_vietnamese_ci ? ? ? | utf8 ? ? | 215 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
| utf8_general_mysql500_ci | utf8 ? ? | 223 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| gb18030_chinese_ci ? ? ? | gb18030  | 248 | Yes ? ? | Yes ? ?  | ? ? ? 2 |
| gb18030_bin ? ? ? ? ? ?  | gb18030  | 249 | ? ? ? ? | Yes ? ?  | ? ? ? 1 |
| gb18030_unicode_520_ci ? | gb18030  | 250 | ? ? ? ? | Yes ? ?  | ? ? ? 8 |
+--------------------------+----------+-----+---------+----------+---------+
222 rows in set (0.00 sec)

上面的校驗集太多了,所以只截取了一部分。

前面說了,如果創(chuàng)建數(shù)據(jù)庫沒有帶編碼集的話,那么就會按照默認(rèn)來,如果設(shè)置了那么就會就近原則,按照設(shè)置的。

下面我們看一下如何在創(chuàng)建數(shù)據(jù)庫的時候設(shè)置編碼集。

mysql> create database d1 character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

上面就是設(shè)置了編碼集,其實還有一種設(shè)置編碼集的方法。

mysql> create database d2 charset=utf8 collate=utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

上面這兩種設(shè)置的方法都可以,但是其實一般我們都是不寫的,因為我們都設(shè)置在了配置文件里面。

那么既然設(shè)置了編碼集,要怎么查看呢?

在 /var/lib/mysql 目錄下,存的是創(chuàng)建好的數(shù)據(jù)庫,當(dāng)創(chuàng)建好一個數(shù)據(jù)庫后都會有一個默認(rèn)的文件 db.opt 文件,而該文件里面寫的就是默認(rèn)的編碼集。

[root@slave0 mysql]# cat ./d1/db.opt 
default-character-set=utf8
default-collation=utf8_general_ci
[root@slave0 mysql]# cat ./d2/db.opt 
default-character-set=utf8
default-collation=utf8_general_ci

上面是剛才創(chuàng)建的兩個數(shù)據(jù)庫,以及里面的編碼集就是剛才創(chuàng)建數(shù)據(jù)庫時候設(shè)置的,既然如此,我們在看一下如果沒有設(shè)置編碼集默認(rèn)的編碼集是什么。

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

mysql> create database d3;
Query OK, 1 row affected (0.00 sec)

查看默認(rèn)編碼集:

[root@slave0 mysql]# cat ./d3/db.opt 
default-character-set=utf8
default-collation=utf8_general_ci

這里看到默認(rèn)的編碼集也是 utf8

下面設(shè)置一個其他的編碼集,這樣看起來明顯一點,想要設(shè)置其他的編碼集可以在上面所有的編碼中找一對。

這里我們設(shè)置編碼集為 gbk 和 gbk_chinese_ci

mysql> create database d4 charset=gbk collate=gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)

查看編碼集:

[root@slave0 mysql]# cat ./d4/db.opt
default-character-set=gbk
default-collation=gbk_chinese_ci

這里看到也是相對應(yīng)的。

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

上面說了數(shù)據(jù)庫的創(chuàng)建,那么也說一下數(shù)據(jù)庫的刪除,數(shù)據(jù)庫的刪除是比較簡單的。

drop database database_naeme;

這里就不作示范了,但是這里要說明一點,如果數(shù)據(jù)庫刪除了的話,那么該數(shù)據(jù)庫里面的數(shù)據(jù)也是一同被刪除了,而且刪除后就無法找回了,所以這里并不建議隨便刪除數(shù)據(jù)庫。

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

數(shù)據(jù)庫修改可以修改數(shù)據(jù)庫的編碼集,mysql 在之前的版本是可以修改數(shù)據(jù)庫的名稱的,但是后來不支持了。而且數(shù)據(jù)庫也不建議隨便修改。

alter database database_name charset=字符集 collate=校驗集;

修改 d1 數(shù)據(jù)庫:

mysql> alter database d1 charset=gbk collate=gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)

查看默認(rèn)編碼:

[root@slave0 mysql]# cat ./d1/db.opt
default-character-set=gbk
default-collation=gbk_chinese_ci

上面就是修改,而且修改后在查一下也是可以的。

數(shù)據(jù)庫查詢

show databases;

上面這條是查詢所有的數(shù)據(jù)庫

mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| d1 ? ? ? ? ? ? ? ? |
| d2 ? ? ? ? ? ? ? ? |
| d3 ? ? ? ? ? ? ? ? |
| d4 ? ? ? ? ? ? ? ? |
| mysql ? ? ? ? ? ?  |
| performance_schema |
| sys ? ? ? ? ? ? ?  |
+--------------------+
8 rows in set (0.00 sec)

除了可以查詢當(dāng)前所有的數(shù)據(jù)庫,還可以查詢當(dāng)前所在的數(shù)據(jù)庫

select database();

上面就是通過 database() 函數(shù) 來查詢當(dāng)前所在數(shù)據(jù)庫。

mysql> select database();
+------------+
| database() |
+------------+
| NULL ? ? ? |
+------------+
1 row in set (0.00 sec)

由于我們當(dāng)前并沒有在其中某一個數(shù)據(jù)庫中,所以我們需要進(jìn)入其中任意一個數(shù)據(jù)庫,然后查詢。

mysql> use d1;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| d1 ? ? ? ? |
+------------+
1 row in set (0.00 sec)

上面 use 就是選擇數(shù)據(jù)庫,而數(shù)據(jù)庫選擇也不需要退出其他的數(shù)據(jù)庫,可以直接use,當(dāng)進(jìn)入 d1 數(shù)據(jù)庫后,查詢得知當(dāng)前在 d1 數(shù)據(jù)庫。

上面就是庫的操作,增、刪、查、改。

數(shù)據(jù)庫備份

數(shù)據(jù)庫備份可以防止數(shù)據(jù)丟失。

mysqldump -P 端口號 -u 用戶 -p 密碼 -B 數(shù)據(jù)庫名 表名 > /路徑/ file_name.sql

這樣就是對數(shù)據(jù)庫進(jìn)行備份,這時候我們還需要輸入數(shù)據(jù)庫的密碼,如果沒有密碼可以不輸入,直接回車,也可以直接不帶 -p 選項,然后備份到一個目錄下一個 file_name.sql 的文件。

把 d1 備份:

[root@slave0 MySql]# mysqldump -P3306 -uroot -p -B d1 > /MySql/d1.sql
Enter password: 

下面我們看一下備份里面的數(shù)據(jù)

[root@slave0 MySql]# cat d1.sql 
-- MySQL dump 10.13  Distrib 5.7.43, for Linux (x86_64)
--
-- Host: localhost ?  Database: d1
-- ------------------------------------------------------
-- Server version   5.7.43
?
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
?
--
-- Current Database: `d1`
--
?
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `d1` /*!40100 DEFAULT CHARACTER SET gbk */;
?
USE `d1`;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
?
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
?
-- Dump completed on 2023-08-21 11:54:09
?

其實數(shù)據(jù)庫的備份里面存儲的并不是數(shù)據(jù),而是對該數(shù)據(jù)庫的一些操作,由于我們沒有對該數(shù)據(jù)庫做什么操作所以里面也沒有什么內(nèi)容。

恢復(fù)備份

source 路徑

恢復(fù)備份只需要 source 然后后面跟備份路徑就可以了,到時候 mysql 會自動執(zhí)行里面原本的操作然后恢復(fù)數(shù)據(jù)。

恢復(fù) d1 數(shù)據(jù)庫:

mysql> source /MySql/d1.sql
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected, 1 warning (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 1 row affected (0.00 sec)
?
Database changed
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected, 1 warning (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)
?
Query OK, 0 rows affected (0.00 sec)

查看是否恢復(fù):

mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| d1 ? ? ? ? ? ? ? ? |
| d2 ? ? ? ? ? ? ? ? |
| d3 ? ? ? ? ? ? ? ? |
| d4 ? ? ? ? ? ? ? ? |
| mysql ? ? ? ? ? ?  |
| performance_schema |
| sys ? ? ? ? ? ? ?  |
| test ? ? ? ? ? ? ? |
+--------------------+
9 rows in set (0.00 sec)

這里看到 d1 數(shù)據(jù)庫已經(jīng)恢復(fù)到數(shù)據(jù)庫了。

表的操作

前面我們說的樹庫的操作,那么當(dāng)我們會對庫進(jìn)行操作后,我們當(dāng)然也是需要會對表進(jìn)行操作的。

而表的操作也是屬于 DDL 的一部分。

表的創(chuàng)建

表的創(chuàng)建用的關(guān)鍵字也是 create 因為這些操作都屬于 DDL 所以關(guān)鍵字都基本一樣。

create table [if not exists] table_name (
filed1 datatype [comment '該字段描述'],
filed2 datatype [comment '該字段描述'],
filed3 datatype [comment '該字段描述']
) [character set 字符集 collate 校驗集 engine 索引];
  • create table 創(chuàng)建表

  • filed 列名

  • datatype 數(shù)據(jù)類型

  • comment 該字段的描述

  • if not exists 表示如果該表不存在就創(chuàng)建,否則不創(chuàng)建

  • [ ]可選項

下面我們自己創(chuàng)建一張表 table表:

mysql> create table table1(
 ?  -> name varchar(10),
 ?  -> id int);
Query OK, 0 rows affected (0.01 sec)

上面就是創(chuàng)建一張表,我們沒有帶 comment 等字段,也沒有帶編碼集,如果沒有帶編碼集的話,那么就是根據(jù)數(shù)據(jù)庫的編碼集,如果帶了那么就是按照自己設(shè)置的編碼集。

那么我們把這些字段都帶上,然后創(chuàng)建一個 user 表:

mysql> create table if not exists user(
 ?  -> id int comment '用戶 ID',
 ?  -> name varchar(12) comment '用戶名',
 ?  -> birthday date comment '用戶生日'
 ?  -> )character set utf8 collate utf8_general_ci engine innodb;
Query OK, 0 rows affected (0.01 sec)

這里介紹一下這些內(nèi)容,首先 id、name 、birthday 等這些就是列名,而后面跟的就是類型,這些類型和語言里面的是有一些差別的,我們后面會專門介紹。

這樣就是創(chuàng)建一張表。

查詢表

經(jīng)過剛才創(chuàng)建表,我們現(xiàn)在看一下查詢表

show tables;

show tables 這樣查的表是該數(shù)據(jù)庫里面所有的表。

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| table1 ? ? ? ? |
| user ? ? ? ? ? |
+----------------+
2 rows in set (0.00 sec)

其中還可以查詢表的結(jié)構(gòu)

desc table_name;

查詢 user 表:

mysql> desc user;
+----------+-------------+------+-----+---------+-------+
| Field ?  | Type ? ? ?  | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id ? ? ? | int(11) ? ? | YES  | ? ? | NULL ?  | ? ? ? |
| name ? ? | varchar(12) | YES  | ? ? | NULL ?  | ? ? ? |
| birthday | date ? ? ?  | YES  | ? ? | NULL ?  | ? ? ? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

這就是查詢到表結(jié)構(gòu):

  • filed 列名

  • Type 類型

  • Null 表示是否為空

  • Key 表示索引

  • Default 表示默認(rèn)值

  • Extra 表示該表的額外信息等,常見的有 默認(rèn)自增加等...

但是在創(chuàng)建表的時候,我們還有一些描述在里面,但是這樣看不到描述。

show create table table_name;

上面就是查看創(chuàng)建時候的詳細(xì)字段,但是上面這樣查看并不好看,我們可以加一個 \G查看更好看。

mysql> show create table user \G
*************************** 1. row ***************************
 ? ? ? Table: user
Create Table: CREATE TABLE `user` (
 ?`id` int(11) DEFAULT NULL COMMENT '用戶 ID',
 ?`name` varchar(12) DEFAULT NULL COMMENT '用戶名',
 ?`birthday` date DEFAULT NULL COMMENT '用戶生日'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

這樣查看就可以看到創(chuàng)建時候的詳細(xì)信息了。

但是這和我們當(dāng)時寫的時候不一致,因為mysql 會記錄用戶的所有操作,但是也會在記錄的時候幫這些內(nèi)容進(jìn)行修改,當(dāng)然修改是更正式了。

刪除表

表的刪除也是很簡單,和數(shù)據(jù)庫刪除一樣,但是這里還是和數(shù)據(jù)庫的刪除一樣,刪除后就沒辦法恢復(fù)了,所以不建議隨便刪除。

drop table table_name;

刪除表就不演示了。

修改表

修改表也是對表結(jié)構(gòu)的一些修改,而不是修改其中的數(shù)據(jù)。

alter table table_name rename to table_name1;

上面是修改表名的語法

修改 user 為 user1:

mysql> alter table user rename to user1;
Query OK, 0 rows affected (0.00 sec)

下面開始正式介紹修改

添加一列:

alter table table_name add 列名 數(shù)據(jù)類型 [after 列明];
  • after 后面的列名 表示添加的一列在哪一列后面,如果不設(shè)置默認(rèn)為最后

刪除一列:

alter table table_name drop 列名;

修改一列數(shù)據(jù)類型:

alter table table_name modify 列名 新的數(shù)據(jù)類型;

修改列名:

alter table table_name change 列明 新列明 新數(shù)據(jù)類型;

示例:

user1 表中添加一列 path 到 birthday 后面 數(shù)據(jù)類型為 varchar(30)

mysql> alter table user1 add path varchar(30) after birthday;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0 ?Warnings: 0
?
mysql> desc user1;
+----------+-------------+------+-----+---------+-------+
| Field ?  | Type ? ? ?  | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id ? ? ? | int(11) ? ? | YES  | ? ? | NULL ?  | ? ? ? |
| name ? ? | varchar(12) | YES  | ? ? | NULL ?  | ? ? ? |
| birthday | date ? ? ?  | YES  | ? ? | NULL ?  | ? ? ? |
| path ? ? | varchar(30) | YES  | ? ? | NULL ?  | ? ? ? |
+----------+-------------+------+-----+---------+-------+

刪除 path 列

mysql> alter table user1 drop path;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0 ?Warnings: 0
?
mysql> desc user1;
+----------+-------------+------+-----+---------+-------+
| Field ?  | Type ? ? ?  | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id ? ? ? | int(11) ? ? | YES  | ? ? | NULL ?  | ? ? ? |
| name ? ? | varchar(12) | YES  | ? ? | NULL ?  | ? ? ? |
| birthday | date ? ? ?  | YES  | ? ? | NULL ?  | ? ? ? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

將 name 列數(shù)據(jù)類型修改為 varchar(20)

mysql> alter table user1 modify name varchar(20);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0 ?Warnings: 0
?
mysql> desc user1;
+----------+-------------+------+-----+---------+-------+
| Field ?  | Type ? ? ?  | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id ? ? ? | int(11) ? ? | YES  | ? ? | NULL ?  | ? ? ? |
| name ? ? | varchar(20) | YES  | ? ? | NULL ?  | ? ? ? |
| birthday | date ? ? ?  | YES  | ? ? | NULL ?  | ? ? ? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

將 name 列的列名修改為 xingming 數(shù)據(jù)類型不變文章來源地址http://www.zghlxwxcb.cn/news/detail-663095.html

mysql> alter table user1 change name xingming varchar(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0 ?Warnings: 0
?
mysql> desc user1;
+----------+-------------+------+-----+---------+-------+
| Field ?  | Type ? ? ?  | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id ? ? ? | int(11) ? ? | YES  | ? ? | NULL ?  | ? ? ? |
| xingming | varchar(20) | YES  | ? ? | NULL ?  | ? ? ? |
| birthday | date ? ? ?  | YES  | ? ? | NULL ?  | ? ? ? |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

到了這里,關(guān)于mysql 數(shù)據(jù)庫定義語言(DDL)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于mysql5.7制作自定義的docker鏡像,適用于xxl-job依賴的數(shù)據(jù)庫,自動執(zhí)行初始化腳本(ddl語句和dml語句)

    基于mysql5.7制作自定義的docker鏡像,適用于xxl-job依賴的數(shù)據(jù)庫,自動執(zhí)行初始化腳本(ddl語句和dml語句)

    xxl-job-admin依賴mysql數(shù)據(jù)庫,且需執(zhí)行初始化腳本,包括ddl和dml語句。 具體的步驟總結(jié)如下: 1、新建數(shù)據(jù)庫xxl_job 2、創(chuàng)建mysql表table 3、執(zhí)行dml語句,包括新建admin用戶及密碼,創(chuàng)建執(zhí)行器和任務(wù)。 毫無疑問,人工每次去操作這些,不僅耗費人力和時間,還容易出錯。 所以,本

    2024年02月11日
    瀏覽(780)
  • Oracle、達(dá)夢:☆獲取數(shù)據(jù)庫對象、獲取對象的DDL定義語句(達(dá)夢)

    以下方式在達(dá)夢DM數(shù)據(jù)庫中都能跑通,Oracle未測試所有的方式。 數(shù)據(jù)庫所有對象表:包括 表、視圖、物化視圖、函數(shù)、存儲過程……等 ①、ALL_OBJECTS視圖方式 OBJECT_TYPE 解釋: oracle 的ALL_OBJECTS中的OBJECT_TYPE表示: TABLE :表示表,這是用于存儲和管理數(shù)據(jù)庫中數(shù)據(jù)的主要結(jié)構(gòu)。

    2024年02月03日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫的DDL語法匯總

    DDL(數(shù)據(jù)定義語言):針對數(shù)據(jù)庫對象結(jié)構(gòu)的操作,如:數(shù)據(jù)庫、表、視圖、索引等 DML(數(shù)據(jù)操縱語言):對數(shù)據(jù)庫對象中的數(shù)據(jù)進(jìn)行操作,比如數(shù)據(jù)的增刪改查 DCL(數(shù)據(jù)控制語言):授權(quán)及取消授權(quán)等 TCL(事務(wù)控制語言):對事務(wù)的控制,如事務(wù)的提交及回滾 創(chuàng)建數(shù)據(jù)庫

    2024年02月09日
    瀏覽(48)
  • MySQL數(shù)據(jù)庫——DDL基本操作

    MySQL數(shù)據(jù)庫——DDL基本操作

    DDL 操作是與數(shù)據(jù)庫結(jié)構(gòu)相關(guān)的操作,它們不涉及實際的數(shù)據(jù)操作,而是用于管理數(shù)據(jù)庫的結(jié)構(gòu)和元數(shù)據(jù)。今天我將為大家分享關(guān)于MySQL數(shù)據(jù)庫的DDL操作。 SQL 功能 show databases; 查看所有的數(shù)據(jù)庫 create database [if not exists] 數(shù)據(jù)庫名 [charset/character=utf8]; 創(chuàng)建數(shù)據(jù)庫 use 數(shù)據(jù)庫名; 選

    2024年02月15日
    瀏覽(36)
  • MySQL-DDL-數(shù)據(jù)庫操作

    MySQL-DDL-數(shù)據(jù)庫操作

    開發(fā)項目流程 DDL:Data Definition Language,數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫對象(數(shù)據(jù)庫、表) 常見操作 查詢 查詢所有數(shù)據(jù)庫:show databases; 查詢當(dāng)前數(shù)據(jù)庫:select database(); 使用 使用數(shù)據(jù)庫:use 數(shù)據(jù)庫名稱; 創(chuàng)建 創(chuàng)建數(shù)據(jù)庫:creste database[if not exists] 數(shù)據(jù)庫名稱; 刪除

    2024年02月15日
    瀏覽(26)
  • 【MySQL 數(shù)據(jù)庫】1、MySQL 的 DDL、DML、DQL 語句

    【MySQL 數(shù)據(jù)庫】1、MySQL 的 DDL、DML、DQL 語句

    ?? (1) MySQL 基礎(chǔ)篇(初級工程師) ① MySQL 基礎(chǔ)概念 ② SQL 語句 ③ 函數(shù) ④ 約束 ⑤ 多表查詢 ⑥ 事務(wù) ?? (2) MySQL 進(jìn)階篇(中級工程師) ① 存儲引擎 ② 索引 ③ SQL 優(yōu)化 ④ 視圖、存儲過程、觸發(fā)器 ⑤ 鎖 ⑥ InnoDB 核心 ⑦ MySQL 管理 ?? (3) 運維篇(高級工程師) ① 日志 ② 主

    2024年02月05日
    瀏覽(20)
  • 【JaveWeb教程】(18) MySQL數(shù)據(jù)庫開發(fā)之 MySQL數(shù)據(jù)庫設(shè)計-DDL 如何查詢、創(chuàng)建、使用、刪除數(shù)據(jù)庫數(shù)據(jù)表 詳細(xì)代碼示例講解

    【JaveWeb教程】(18) MySQL數(shù)據(jù)庫開發(fā)之 MySQL數(shù)據(jù)庫設(shè)計-DDL 如何查詢、創(chuàng)建、使用、刪除數(shù)據(jù)庫數(shù)據(jù)表 詳細(xì)代碼示例講解

    下面我們就正式的進(jìn)入到SQL語句的學(xué)習(xí),在學(xué)習(xí)之前先給大家介紹一下我們要開發(fā)一個項目,整個開發(fā)流程是什么樣的,以及在流程當(dāng)中哪些環(huán)節(jié)會涉及到數(shù)據(jù)庫。 2.1 項目開發(fā)流程 需求文檔: 在我們開發(fā)一個項目或者項目當(dāng)中的某個模塊之前,會先會拿到產(chǎn)品經(jīng)理給我們提

    2024年01月25日
    瀏覽(104)
  • MySql數(shù)據(jù)庫從0到1學(xué)習(xí)-第一天DDL學(xué)習(xí)

    數(shù)據(jù)庫(查詢/創(chuàng)建/修改/刪除) 查詢數(shù)據(jù)庫 以下語句的database 可以替換為schema,效果一樣 創(chuàng)建數(shù)據(jù)庫 刪除數(shù)據(jù)庫 使用數(shù)據(jù)庫 表(創(chuàng)建/刪除/修改) 創(chuàng)建表 查詢表 修改表 表字段約束 約束 描述 非空約束 限制該字段不可為null not null 唯一約束 保證該字段的所欲數(shù)據(jù)都是唯一

    2024年04月08日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫---庫基本操作 以及 表結(jié)構(gòu)的操作(DDL)

    MySQL數(shù)據(jù)庫---庫基本操作 以及 表結(jié)構(gòu)的操作(DDL)

    目錄 前言 一.數(shù)據(jù)庫的操作 1.1顯示當(dāng)前數(shù)據(jù)庫 1.2創(chuàng)建數(shù)據(jù)庫 1.3使用數(shù)據(jù)庫? 1.4刪除數(shù)據(jù)庫 ?二.數(shù)據(jù)類型 2.1數(shù)值類型 2.2字符串類型 2.3日期類型 三.數(shù)據(jù)表的操作 ?3.1?創(chuàng)建表結(jié)構(gòu)。 ?3.2查看數(shù)據(jù)庫中擁有的數(shù)據(jù)表 ?3.3查看指定的表結(jié)構(gòu) ??3.4修改表結(jié)構(gòu) ??3.5刪除表結(jié)構(gòu) ?

    2024年02月09日
    瀏覽(21)
  • 開源數(shù)據(jù)庫Mysql_DBA運維實戰(zhàn) (DDL語句)

    開源數(shù)據(jù)庫Mysql_DBA運維實戰(zhàn) (DDL語句)

    例如:CREATE ?DROP ALTER 定義庫{ ????????????????創(chuàng)建業(yè)務(wù)數(shù)據(jù)庫: CREAATE DATABASE? ?___數(shù)據(jù)庫名___?; ????????????????數(shù)據(jù)庫名要求{ ????????????????????????????????????????a.區(qū)分大小寫 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? b.唯一性 ?

    2024年02月13日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包