15個(gè)MySQL常用基本SQL語(yǔ)句
在MySQL中,數(shù)據(jù)庫(kù)稱為database,數(shù)據(jù)表稱為table,一個(gè)數(shù)據(jù)庫(kù)軟件中有多個(gè)數(shù)據(jù)庫(kù)(databases),每個(gè)數(shù)據(jù)庫(kù)中又可以有多個(gè)數(shù)據(jù)表(tables),最終,數(shù)據(jù)是存儲(chǔ)在數(shù)據(jù)表中。
數(shù)據(jù)庫(kù)和數(shù)據(jù)表之間的關(guān)系可以用下面這個(gè)圖來(lái)表示,對(duì)于一個(gè)數(shù)據(jù)庫(kù)來(lái)說(shuō),有多個(gè)數(shù)據(jù)表。

在正式開(kāi)始寫(xiě)SQL語(yǔ)句之前,需要說(shuō)明兩點(diǎn)。
- SQL語(yǔ)句不區(qū)分大小寫(xiě)。
- 每條SQL語(yǔ)句以分號(hào)(;)結(jié)尾(英文輸入法下的分號(hào))。
這里通過(guò)MySQL Workbench來(lái)寫(xiě)SQL代碼,在Workbench中,執(zhí)行一條SQL語(yǔ)句的方式有兩種。
- 一種是通過(guò)上方快捷菜單中的按鈕。
- 另一種是通過(guò)快捷鍵Ctrl+Enter。

了解了這之后,接下來(lái)介紹一些常見(jiàn)的命令,分兩部分:數(shù)據(jù)庫(kù)常用命令和數(shù)據(jù)表常用命令。
一、數(shù)據(jù)庫(kù)常用SQL語(yǔ)句
1、查看有哪些數(shù)據(jù)庫(kù)
- show databases;
2、創(chuàng)建數(shù)據(jù)庫(kù)
- create database Testdb;
創(chuàng)建一個(gè)名為T(mén)estdb的數(shù)據(jù)庫(kù)。
3、創(chuàng)建數(shù)據(jù)庫(kù)并指定編碼格式
有些時(shí)候,為了防止中文亂碼,創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候需要指定編碼格式。
- create database mydb character set utf8mb4;
4、使用某個(gè)數(shù)據(jù)庫(kù)
- use mydb;
使用mydb這個(gè)數(shù)據(jù)庫(kù),或者進(jìn)入mydb這個(gè)數(shù)據(jù)庫(kù)。
5、刪除數(shù)據(jù)庫(kù)
- drop database Testdb;
刪除Testdb這個(gè)數(shù)據(jù)庫(kù)。
二、數(shù)據(jù)表常用SQL語(yǔ)句
1、查看有哪些數(shù)據(jù)表
進(jìn)入某個(gè)數(shù)據(jù)庫(kù)之后,想查看有哪些數(shù)據(jù)表,SQL語(yǔ)句為:
- use mydb;
- show tables;
mydb是一個(gè)新建的數(shù)據(jù)庫(kù),所以自然是沒(méi)有數(shù)據(jù)表。
2、創(chuàng)建數(shù)據(jù)表
建表SQL語(yǔ)句格式為:
- create table <tablename>(
- <字段名稱> <數(shù)據(jù)類(lèi)型>,
- <字段名稱> <數(shù)據(jù)類(lèi)型>,
- <字段名稱> <數(shù)據(jù)類(lèi)型>,
- ......
- );
說(shuō)明:每個(gè)字段以逗號(hào)分隔,最后一個(gè)字段不加逗號(hào)。
例如,給定一個(gè)學(xué)員信息表,如下表所示。

根據(jù)以上表格,建表SQL語(yǔ)句如下。
- create table stuInfo(
- stuid int unsigned primary key,
- stuname varchar(10) not null,
- gender varchar(5),
- birthdate date,
- age int(3),
- city varchar(20)
- );
以上語(yǔ)句中,primary key表示主鍵,意思是這個(gè)字段作為記錄的唯一標(biāo)識(shí),就像每個(gè)人的身份證號(hào),都是唯一確定的。
3、查看表結(jié)構(gòu)
查看表結(jié)構(gòu)的SQL命令為:
- describe stuinfo;
執(zhí)行該命令會(huì)顯示表stuinfo的基本結(jié)構(gòu),例如有哪些字段,每個(gè)字段是什么類(lèi)型,誰(shuí)是主鍵等。
4、修改數(shù)據(jù)表
修改數(shù)據(jù)表通過(guò)drop子句進(jìn)行,比如,建完表后,想增加一個(gè)字段,SQL語(yǔ)句的格式為:
- alter table <tablename> add <column> varchar(20);
想在指定位置增加一個(gè)字段,例如,在某個(gè)字段后增加一個(gè)字段,SQL語(yǔ)句的格式為:
- alter table <tablename> add <column> varchar(20) after <column>;
如果在某個(gè)字段之前增加字段,用before即可。
例如,在字段age后增加一個(gè)字段major(專業(yè)),SQL語(yǔ)句為:
- alter table stuinfo add major varchar(20) after age;
執(zhí)行這個(gè)命令,再通過(guò)describe查看表結(jié)構(gòu),會(huì)發(fā)現(xiàn)表中多了一個(gè)字段major。
如果要?jiǎng)h除major這個(gè)字段,通過(guò)drop子句,SQL語(yǔ)句為:
- alter table stuinfo drop major;
5、重命名表
重命名表通過(guò)alter+rename來(lái)實(shí)現(xiàn),SQL語(yǔ)句格式為:
- alter table <tablename> rename <new_tablename> ;
這里為了不影響之前創(chuàng)建的表,我們創(chuàng)建一個(gè)新表,SQL語(yǔ)句如下。
- create table stuInfoTest(
- stuid int unsigned primary key,
- stuname varchar(10)
- );
以上創(chuàng)建一個(gè)名為stuInfoTest的表,現(xiàn)在想將它的名稱改成stuinfotest1,SQL語(yǔ)句為:
- alter table stuinfotest rename stuinfotest1;
6、刪除數(shù)據(jù)表
刪除數(shù)據(jù)表通過(guò)drop進(jìn)行,SQL語(yǔ)句格式為:
- drop table <tablename>;
例如,刪除數(shù)據(jù)表stuinfotest1,SQL語(yǔ)句為:
- drop table stuinfotest1;
7、插入記錄
此時(shí)的表stuinfo是空的,沒(méi)有數(shù)據(jù),我們要向表中插入記錄。
插入記錄通過(guò)insert into進(jìn)行,SQL語(yǔ)句格式為:
- insert into <tablename>(字段1,字段2,......) values(字段1的值,字段2的值,......);
例如,向表stuinfo插入一條記錄,SQL語(yǔ)句為:
- insert into stuinfo(stuid,stuname,gender,birthdate,age,city)
- values(20161001,'Sunbin','男','1990/1/1',28,'Beijing');
注意:上方是一條SQL語(yǔ)句,為了可讀性換行,記住一條SQL語(yǔ)句默認(rèn)以分號(hào)結(jié)尾。
如果需要一次性插入多條記錄,SQL語(yǔ)句格式為:
- insert into <tablename>(字段1,字段2,......) values
- (字段1的值,字段2的值,......),
- (字段1的值,字段2的值,......),
- (字段1的值,字段2的值,......);
例如,向表stuinfo再插入兩條記錄,SQL語(yǔ)句為:
- insert into stuinfo(stuid,stuname,gender,birthdate,age,city)
- values(20161002,'Wangwu','女','1991/1/3',19,'Beijing'),
- (20161003,'Lisi','男','1990/11/4',21,'Shanghai');
注意:如果設(shè)置了主鍵,插入記錄的主鍵字段是不能重復(fù)的,也就是不能插入重復(fù)的記錄。
作業(yè):大家可以按照上述方法將上面的學(xué)員信息表中的所有記錄都插入表stuinfo中。
8、查詢記錄
有了數(shù)據(jù)之后,就可以查詢記錄了,查詢記錄通過(guò)select子句進(jìn)行。
例如,想查詢表stuinfo中的所有記錄,SQL語(yǔ)句為:
- select * from stuinfo;
執(zhí)行之后,就可以看到表stuinfo中的所有記錄了。
如果想查詢符合某個(gè)條件的記錄,就要用到where子句了,SQL格式為:
- select * from <tablename> where 字段名=某個(gè)值;
例如,想查詢stuid為20161001的記錄,SQL語(yǔ)句為:
- select * from stuinfo where stuid=20161001;
9、刪除記錄
刪除記錄通過(guò)delete子句進(jìn)行,SQL語(yǔ)句格式為:
- delete from <tablename> where 字段名=某個(gè)值;
例如,想刪除stuid為20161002的記錄,SQL語(yǔ)句為:
- delete from stuinfo where stuid=20161002;
10、修改記錄
修改記錄通過(guò)update子句進(jìn)行,update就是更新的意思,SQL語(yǔ)句格式為:
- update <tablename> set 字段1=某個(gè)值 where 字段2=某個(gè)值;
例如,想將學(xué)號(hào)(stuid)為20161001的記錄的姓名(stuname)更新為Jack,SQL語(yǔ)句為:
- update stuinfo set stuname='Jack' where stuid=20161001;
以上,就是MySQL中的基本SQL語(yǔ)句。