數(shù)據(jù)庫(kù)的基本操作
在MySQL數(shù)據(jù)庫(kù)中,對(duì)于一個(gè)MySQL示例,是可以包含多個(gè)數(shù)據(jù)庫(kù)的。
在連接MySQL后,我們可以通過(guò) show databases; 來(lái)進(jìn)行查看有那么數(shù)據(jù)庫(kù)。這里已經(jīng)存在一些庫(kù)了,其中information_schema、auth、mysql、performance_schema這幾個(gè)庫(kù)時(shí)是MySQL內(nèi)置的(不同版本略有差異)。

那如何新建自己的數(shù)據(jù)庫(kù)呢?使用CREATE DATABASE 數(shù)據(jù)庫(kù)名; 即可。
CREATE DATABASE 數(shù)據(jù)庫(kù)名;
這里我們已經(jīng)成功創(chuàng)建了mysql_xuexi這個(gè)數(shù)據(jù)庫(kù)了,然后我們?cè)俅蝧how databases; 查詢,就可以看到mysql_xuexi已經(jīng)在列表了。

在建完這個(gè)庫(kù)后,我覺(jué)得取得名字不好,想改成mysql_study,因?yàn)檫€沒(méi)有任何表在里面,所以我想刪了重建(如果有表存在,修改數(shù)據(jù)庫(kù)名還是有些復(fù)雜的,所以取名這件事生下來(lái)還是要慎重對(duì)待)。
刪除數(shù)據(jù)庫(kù)使用DROP DATABASE 數(shù)據(jù)庫(kù)名;語(yǔ)句、
DROP DATABASE 數(shù)據(jù)庫(kù)名;
當(dāng)然刪庫(kù)是一個(gè)危險(xiǎn)的動(dòng)作,為了避免刪庫(kù)跑路,刪庫(kù)前務(wù)必做兩件事,一確認(rèn)自己沒(méi)有發(fā)燒,二確認(rèn)自己的確認(rèn)是對(duì)的。這里我的庫(kù)剛建的,所以確認(rèn)無(wú)誤了。
然后創(chuàng)建了mysql_study數(shù)據(jù)庫(kù),那我們現(xiàn)在想使用這個(gè)庫(kù),該怎么做?
我們需要先切換到該庫(kù)下,使用USE 數(shù)據(jù)庫(kù)名稱;語(yǔ)句。
USE 數(shù)據(jù)庫(kù)名稱;
切換到對(duì)應(yīng)庫(kù)后,我們可以使用SHOW TABLES;來(lái)查看庫(kù)中的表。因?yàn)閯倓倓?chuàng)建的,還是熱乎的,所以里面什么也沒(méi)有。

表的基本操作
那我們快來(lái)創(chuàng)建第一個(gè)表吧,使用CREATE TABLE 語(yǔ)句,當(dāng)然還需要定義表的列屬性等。
CREATE TABLE 表名 (
列名1 數(shù)據(jù)類型 [列的屬性],
列名2 數(shù)據(jù)類型 [列的屬性],
...
列名n 數(shù)據(jù)類型 [列的屬性]
);
例如我們創(chuàng)建最簡(jiǎn)單的user表,包含int類型的id,和varchar(5)的name列。
CREATE TABLE user (
id INT,
name VARCHAR(5)
);

對(duì)于創(chuàng)建的表,我們可以使用以下命令查看具體細(xì)節(jié)。
DESC 表名;
DESCRIBE 表名;
EXPLAIN 表名;
SHOW COLUMNS FROM 表名;
SHOW FIELDS FROM 表名;

對(duì)于數(shù)據(jù)庫(kù)的名字,修改不方便, 那表呢?更改表名還是比較容易的,使用ALTER TABLE 表名 RENAME TO 新的表名;即可
ALTER TABLE 表名 RENAME TO 新的表名;

這樣就將表名改為了user_info。那如果要?jiǎng)h除表呢?使用DROP TABLE 表名;
DROP TABLE 表名;

列的基本操作
刪完了我又默默將user表創(chuàng)建回來(lái)了,因?yàn)檫€要繼續(xù)使用呢。
如果我們想在user表中增加列屬性,如何操作?
ALTER TABLE 表名 ADD COLUMN 列名 數(shù)據(jù)類型 [列的屬性];
新增age列。

如果要修改列,可以使用下面的語(yǔ)句,MODIFY只支持改列的屬性,而CHANGE支持修改列名稱和列屬性。
# 修改列屬性
ALTER TABLE 表名 MODIFY 列名 新數(shù)據(jù)類型 [新屬性];
# 修改列名稱
ALTER TABLE 表名 CHANGE 舊列名 新列名 新數(shù)據(jù)類型 [新屬性];
比如age,我想改成user_age,且長(zhǎng)度只想定義為2位。

要?jiǎng)h除列,既然有ADD、MODIFY、CHANGE,那就應(yīng)該有DROP,沒(méi)錯(cuò)。
ALTER TABLE 表名 DROP 列名;

數(shù)據(jù)的基本操作
有了表,也會(huì)操作基本的列,但我們平時(shí)說(shuō)的增刪改查,沒(méi)有數(shù)據(jù)怎么叫增刪改查,所以我們需要來(lái)點(diǎn)兒數(shù)據(jù)。
使用INSERT插入數(shù)據(jù),在不指定列的時(shí)候,按列的順序插入,而且必須是列的值必須包含全量的列,而聲明列則自由的多
INSERT INTO 表名 VALUES(列1的值,列2的值, ...);
INSERT INTO 表名(列1, 列2, ...) VALUES(列1的值,列2的值, ...);
例如在user表插入數(shù)據(jù)。
INSERT INTO user VALUES(1,'zs');
INSERT INTO user(id,name) VALUES(2,'ls');
INSERT INTO user(name,id) VALUES('ww',3);

至于查詢,相信你已經(jīng)看到了,使用SELECT語(yǔ)句,SELECT * FROM 表名;是最基本的查詢,*表示查看所有的列屬性,查詢一般需要配合WHERE等條件篩選,操作較復(fù)雜,后面會(huì)繼續(xù)深入。
SELECT 列1, 列2, ... FROM 表名 [WHERE條件];
修改數(shù)據(jù),我們使用UPDATE語(yǔ)句。更新的本質(zhì)是修改那些符合條件的數(shù)據(jù),也即先查詢出對(duì)應(yīng)數(shù)據(jù),然后再對(duì)其做更改。所以一般查詢也是需要結(jié)合WHERE語(yǔ)句的,不帶WHERE的語(yǔ)句會(huì)將表中的數(shù)據(jù)全部更改,這個(gè)日常中一定要注意。
UPDATE 表名 SET 列1=列的新值1, 列2=列的新值2, ... [WHERE 條件]

至于刪除,使用DELETE語(yǔ)句,該語(yǔ)句一樣是個(gè)危險(xiǎn)語(yǔ)句,注意千萬(wàn)要帶上WHERE,除非你是真的要?jiǎng)h除所有數(shù)據(jù),或者一時(shí)腦子發(fā)燒了。
DELETE FROM 表名 [WHERE 條件];

至此,MySQL的基本使用就差不多OK了,當(dāng)然還有些復(fù)雜的語(yǔ)句,我們將在后續(xù)繼續(xù)學(xué)習(xí)。