對于mysql數(shù)據(jù)表創(chuàng)建,修改,刪除命令也是最基本的數(shù)據(jù)庫入門基礎(chǔ)知識了,下面小編來給大家介紹一下MySQL中創(chuàng)建、修改和刪除表一些實例,希望對大家有所幫助.
其實對很多人來說對于SQL語句已經(jīng)忘了很多,或者說是不懂很多,因為有數(shù)據(jù)庫圖形操作軟件,方便了大家,但是我們不能忘記最根本的東西,特別是一些細(xì)節(jié)上的東西,可能你用慣了Hibernate,不用寫SQL語句,但是不是任何項目都要用到大框架的,如果不用,那你是不是就不會操作數(shù)據(jù)庫了呢,所以我們最好還是熟悉一點好,對我們以后找工作和工作都有幫助.
在說創(chuàng)建、修改和刪除表前,我們還是要進(jìn)行一個操作的簡單說明.
1、登陸數(shù)據(jù)庫系統(tǒng)
在命令行中登陸MySQL數(shù)據(jù)庫管理系統(tǒng),輸入以下內(nèi)容:
mysql -h localhost -u root -p
很多人都知道這個,但是其中參數(shù)的具體表示什么我們還是要了解的,其中:
-h:指連接的主機名,默認(rèn)情況下是localhost,可以忽略此參數(shù).
-u:表示用戶名,此處的用戶名為root.
-p:表示用戶的密碼
按下Enter鍵后就顯示“Enter password:”,輸入密碼即可登錄進(jìn)去了,代碼如下:
- Welcome to the MySQL monitor. Commands end with ; or g.
- Your MySQL connection id is 2
- Server version: 5.6.13 Source distribution
- Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
- mysql>
2、創(chuàng)建數(shù)據(jù)庫
在創(chuàng)建數(shù)據(jù)庫之前,我們可以查看已經(jīng)存在的數(shù)據(jù)庫.
格式:CREATE DATABASE 數(shù)據(jù)庫名;
示例:查看已經(jīng)存在的數(shù)據(jù)庫,代碼如下:
- mysql> SHOW DATABASES;
- ++
- | Database |
- ++
- | information_schema |
- | mysql |
- | performance_schema |
- ++
- 3 rows in set (0.00 sec)
示例:創(chuàng)建一個名為example的數(shù)據(jù)庫,代碼如下:
- mysql> CREATE DATABASES `example`;
- Query OK, 1 row affected (0.00 sec)
- mysql> SHOW DATABASES;
- ++
- | Database |
- ++
- | information_schema |
- | example |
- | mysql |
- | performance_schema |
- ++
- 4 rows in set (0.00 sec)
3、刪除數(shù)據(jù)庫:
格式:DROP DATABASE 數(shù)據(jù)庫名;
示例:刪除example數(shù)據(jù)庫,代碼如下:
- mysql> DROP DATABASE `example`;
- Query OK, 0 rows affected (0.02 sec)
- mysql> SHOW DATABASES;
- ++
- | Database |
- ++
- | information_schema |
- | mysql |
- | performance_schema |
- ++
- 3 rows in set (0.00 sec)
4、數(shù)據(jù)庫存儲引擎
存儲引擎就是指表的類型,數(shù)據(jù)庫存儲引擎決定了表在計算機的存儲方式,MySQL中查詢存儲引擎的類型命令:SHOW ENGINES;代碼如下:
- mysql> SHOW ENGINES;
- ++-+++++
- | Engine | Support | Comment | Transactions | XA | Savepoints |
- ++-+++++
- | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
- | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
- | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
- | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
- | CSV | YES | CSV storage engine | NO | NO | NO |
- | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
- | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
- | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
- | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
- ++-+++++
- 9 rows in set (0.00 sec)
查詢結(jié)果中:
Engine參數(shù)指存儲引擎名稱;
Support參數(shù)說明MySQL是否支持該類型引擎;
Comment參數(shù)表示對該引擎的評論;
Transaction參數(shù)表示是否支持事務(wù)處理;
XA參數(shù)表示是否分布式交易處理的XA規(guī)范;
Savepoints參數(shù)表示是否支持保存點,以方便事務(wù)的回滾操作;
由上面我們看到InnoDB存儲引擎是default的,也就是數(shù)據(jù)庫默認(rèn)的存儲引擎,下面我們簡單介紹一下InnoDB.
InnoDB是MySQL的一種存儲引擎,InnoDB給MySQL提供了事務(wù)、回滾、崩潰修復(fù)能力和多版本并發(fā)控制的事務(wù)安全,InnoDB是MySQL上第一個提供外鍵約束的表引擎,而且對事務(wù)處理的能力,也是其他存儲引擎不能比擬的,不過這種引擎的缺點就是讀寫效率稍差,占用的數(shù)據(jù)空間相對比較大.
下面就是正式的內(nèi)容:
5、創(chuàng)建表:
5.1、創(chuàng)建表的形式:
- CREATE TABLE 表名 (
- 屬性名 數(shù)據(jù)類型 [完整約束條件],
- 屬性名 數(shù)據(jù)類型 [完整約束條件],
- ...
- ...
- 屬性名 數(shù)據(jù)類型 [完整約束條件]
- );
如果你很急的登陸進(jìn)去就創(chuàng)建表,恭喜你,你會出現(xiàn)“No database selected”的錯誤,因為你沒有告訴別人你要選擇在哪個數(shù)據(jù)庫創(chuàng)建表,所以在創(chuàng)建之前要選擇數(shù)據(jù)庫.
格式:
USE 數(shù)據(jù)庫名;
示例:創(chuàng)建一個student表,代碼如下:
- mysql> CREATE DATABASE `example`;
- Query OK, 1 row affected (0.01 sec)
- mysql> USE `example`;
- Database changed
- mysql> CREATE TABLE `student` (
- -> `id` INT,
- -> `name` VARCHAR(20)
- -> );
- Query OK, 0 rows affected (0.11 sec)
上面創(chuàng)建表的時候涉及到一個完整性約束條件,下面就列出一個完整性約束條件表:
約束條件 說明
PRIMARY KEY 標(biāo)識該屬性為該表的主鍵,可以唯一的標(biāo)識對應(yīng)的元組
FOREIGN KEY 標(biāo)識該屬性為該表的外鍵,是與之聯(lián)系某表的主鍵
NOT NULL 標(biāo)識該屬性不能為空
UNIQUE 標(biāo)識該屬性的值是唯一的
AUTO_INCREMENT 標(biāo)識該屬性的值是自動增加,這是MySQL的SQL語句的特色
DEFAULT 為該屬性設(shè)置默認(rèn)值
下面講解一下上面完整性約束條件的應(yīng)用:
5.2、設(shè)置表的主鍵
5.2.1、單字段主鍵
格式:
屬性名 數(shù)據(jù)類型 PRIMARY KEY
示例,代碼如下:
- mysql> CREATE TABLE `student1` (
- -> `id` INT PRIMARY KEY,
- -> `name` VARCHAR(20)
- -> );
- Query OK, 0 rows affected (0.07 sec)
5.2.2、多字段主鍵
格式:PRIMARY KEY(屬性名1,屬性名2....屬性名n)
示例,代碼如下:
- mysql> CREATE TABLE `student2` (
- -> `id` INT,
- -> `stu_id` INT,
- -> `name` VARCHAR(20),
- -> PRIMARY KEY(`id`, `stu_id`)
- -> );
- Query OK, 0 rows affected (0.05 sec)
5.3、設(shè)置表的外鍵
格式:CONSTRAINT 外鍵別名 FOREIGN KEY(屬性1,屬性2,....屬性n) REFERENCES 表名(屬性1',屬性2',...屬性n')
示例,代碼如下:
- mysql> CREATE TABLE `teacher` (
- -> `id` INT PRIMARY KEY,
- -> `stu_id` INT,
- -> `name` VARCHAR(20),
- -> CONSTRAINT `STUID` FOREIGN KEY(`stu_id`) REFERENCES `student1`(`id`)
- -> );
- Query OK, 0 rows affected (0.08 sec)
新聞熱點
疑難解答
圖片精選