一、實(shí)驗(yàn)介紹
1.1 實(shí)驗(yàn)內(nèi)容
本次課程將介紹 MySQL 新建數(shù)據(jù)庫,新建表,插入數(shù)據(jù)以及基本數(shù)據(jù)類型的相關(guān)知識(shí)。本節(jié)實(shí)驗(yàn)將創(chuàng)建一個(gè)名為 mysql_shiyan 的數(shù)據(jù)庫,其中有兩張表 employee 和 department。
1.2 實(shí)驗(yàn)知識(shí)點(diǎn)
基本數(shù)據(jù)類型
插入數(shù)據(jù)
1.3 實(shí)驗(yàn)環(huán)境
課程使用的實(shí)驗(yàn)環(huán)境為 Ubuntu Linux 14.04 64 位版本。實(shí)驗(yàn)中會(huì)用到程序:
Mysql 5.5.50
Xfce終端
二、開發(fā)準(zhǔn)備
在使用實(shí)驗(yàn)樓 Linux 環(huán)境進(jìn)行本次實(shí)驗(yàn)之前,先用以下兩條命令打開MySQL 服務(wù)并使用 root 登錄:
打開 MySQL 服務(wù)
sudo service mysql start
使用 root 用戶登錄,密碼為空
mysql -u root
后續(xù)的實(shí)驗(yàn)都在 MySQL 的控制臺(tái)輸入命令進(jìn)行操作。
三、實(shí)驗(yàn)步驟
3.1 新建數(shù)據(jù)庫
首先,我們創(chuàng)建一個(gè)數(shù)據(jù)庫,給它一個(gè)名字,比如 mysql_shiyan,以后的幾次實(shí)驗(yàn)也是對(duì) mysql_shiyan 這個(gè)數(shù)據(jù)庫進(jìn)行操作。 語句格式為 CREATE DATABASE <數(shù)據(jù)庫名字>;,(注意不要漏掉分號(hào) ;),前面的 CREATE DATABASE 也可以使用小寫,具體命令為:
CREATE DATABASE mysql_shiyan;
創(chuàng)建成功后輸入命令 show databases; (注意不要漏掉;)檢查一下:
在大多數(shù)系統(tǒng)中,SQL 語句都是不區(qū)分大小寫的,因此以下語句都是合法的:
create database name2;
CREATE database name3;
create DAtabaSE name4;
但是出于嚴(yán)謹(jǐn),而且便于區(qū)分保留字(保留字(reserved word):指在高級(jí)語言中已經(jīng)定義過的字,使用者不能再將這些字作為變量名或過程名使用。)和變量名,我們把保留字大寫,把變量和數(shù)據(jù)小寫。
3.2 連接數(shù)據(jù)庫
接下來的操作,就在剛才創(chuàng)建的 mysql_shiyan 中進(jìn)行,首先要連接數(shù)據(jù)庫,使用語句 use <數(shù)據(jù)庫名字>:
use mysql_shiyan;
如圖顯示,則連接成功:
輸入命令 show tables; 可以查看當(dāng)前數(shù)據(jù)庫里有幾張表,現(xiàn)在mysql_shiyan 里還是空的:
3.3 數(shù)據(jù)表
數(shù)據(jù)表(table)簡(jiǎn)稱表,它是數(shù)據(jù)庫最重要的組成部分之一。數(shù)據(jù)庫只是一個(gè)框架,表才是實(shí)質(zhì)內(nèi)容。
而一個(gè)數(shù)據(jù)庫中一般會(huì)有多張表,這些各自獨(dú)立的表通過建立關(guān)系被聯(lián)接起來,才成為可以交叉查閱、一目了然的數(shù)據(jù)庫。如下便是一張表:
01 Tom 110110110
02 Jack 119119119
03 Rose 114114114
3.4 新建數(shù)據(jù)表
在數(shù)據(jù)庫中新建一張表的語句格式為:
CREATE TABLE 表的名字
(
列名a 數(shù)據(jù)類型(數(shù)據(jù)長(zhǎng)度),
列名b 數(shù)據(jù)類型(數(shù)據(jù)長(zhǎng)度),
列名c 數(shù)據(jù)類型(數(shù)據(jù)長(zhǎng)度)
);
我們嘗試在 mysql_shiyan 中新建一張表 employee,包含姓名,ID 和電話信息,所以語句為:
CREATE TABLE employee (id int(10),name char(20),phone int(12));
然后再創(chuàng)建一張表 department,包含名稱和電話信息,想讓命令看起來更整潔,你可以這樣輸入命令:
這時(shí)候再 show tables; 一下,可以看到剛才添加的兩張表:
3.5 數(shù)據(jù)類型
在剛才新建表的過程中,我們提到了數(shù)據(jù)類型,MySQL 的數(shù)據(jù)類型和其他編程語言大同小異,下表是一些 MySQL 常用數(shù)據(jù)類型:
數(shù)據(jù)類型 大小(字節(jié)) 用途 格式
INT 4 整數(shù)
FLOAT 4 單精度浮點(diǎn)數(shù)
DOUBLE 8 雙精度浮點(diǎn)數(shù)
ENUM 單選,比如性別 ENUM('a','b','c')
SET 多選 SET('1','2','3')
DATE 3 日期 YYYY-MM-DD
TIME 3 時(shí)間點(diǎn)或持續(xù)時(shí)間 HH:MM:SS
YEAR 1 年份值 YYYY
CHAR 0~255 定長(zhǎng)字符串
VARCHAR 0~255 變長(zhǎng)字符串
TEXT 0~65535 長(zhǎng)文本數(shù)據(jù)
整數(shù)除了 INT 外,還有 TINYINT、SMALLINT、MEDIUMINT、BIGINT。
CHAR 和 VARCHAR 的區(qū)別: CHAR 的長(zhǎng)度是固定的,而 VARCHAR 的長(zhǎng)度是可以變化的,比如,存儲(chǔ)字符串 “abc",對(duì)于 CHAR(10),表示存儲(chǔ)的字符將占 10 個(gè)字節(jié)(包括 7 個(gè)空字符),而同樣的 VARCHAR(12) 則只占用4個(gè)字節(jié)的長(zhǎng)度,增加一個(gè)額外字節(jié)來存儲(chǔ)字符串本身的長(zhǎng)度,12 只是最大值,當(dāng)你存儲(chǔ)的字符小于 12 時(shí),按實(shí)際長(zhǎng)度存儲(chǔ)。
ENUM和SET的區(qū)別: ENUM 類型的數(shù)據(jù)的值,必須是定義時(shí)枚舉的值的其中之一,即單選,而 SET 類型的值則可以多選。
想要了解更多關(guān)于 MySQL 數(shù)據(jù)類型的信息,可以參考下面兩篇博客。
MySQL 中的數(shù)據(jù)類型介紹
MySQL 數(shù)據(jù)類型
3.6 插入數(shù)據(jù)
剛才我們新建了兩張表,使用語句 SELECT * FROM employee; 查看表中的內(nèi)容,可以看到 employee 表中現(xiàn)在還是空的:
剛才使用的SELECT語句將在下一節(jié)實(shí)驗(yàn)中詳細(xì)介紹
我們通過 INSERT 語句向表中插入數(shù)據(jù),語句格式為:
INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);
我們嘗試向 employee 中加入 Tom、Jack 和 Rose:
INSERT INTO employee VALUES(02,'Jack',119119119);
INSERT INTO employee(id,name) VALUES(03,'Rose');
你已經(jīng)注意到了,有的數(shù)據(jù)需要用單引號(hào)括起來,比如 Tom、Jack、Rose 的名字,這是由于它們的數(shù)據(jù)類型是 CHAR 型。此外 VARCHAR,TEXT,DATE,TIME,ENUM 等類型的數(shù)據(jù)也需要單引號(hào)修飾,而 INT,FLOAT,DOUBLE 等則不需要。
第一條語句比第二條語句多了一部分:(id,name,phone) 這個(gè)括號(hào)里列出的,是將要添加的數(shù)據(jù) (01,'Tom',110110110) 其中每個(gè)值在表中對(duì)應(yīng)的列。而第三條語句只添加了 (id,name) 兩列的數(shù)據(jù),所以在表中Rose的phone為NULL。
現(xiàn)在我們?cè)俅问褂谜Z句 SELECT * FROM employee; 查看 employee 表,可見 Tom 和 Jack 的相關(guān)數(shù)據(jù)已經(jīng)保存在其中了:
四、實(shí)驗(yàn)總結(jié)
經(jīng)過本次實(shí)驗(yàn),我們已經(jīng)有了一個(gè)名為 mysql_shiyan 的數(shù)據(jù)庫,其中有兩張表,我們已經(jīng)向其中插入了一些數(shù)據(jù)。務(wù)必完整地操作一遍,以熟練SQL語句的使用。下一節(jié)我們將進(jìn)入 SQL 約束的學(xué)習(xí)。
實(shí)驗(yàn)人:新海
實(shí)驗(yàn)平臺(tái):實(shí)驗(yàn)樓
實(shí)驗(yàn)時(shí)間:4.30日