在學習SQL語句之前,首先需要區分幾個概念,我們常說的數據庫是指數據庫軟件,例如MySQL、Oracle、SQL Server等,而本文提到的數據庫是指數據庫軟件中的一個個用于存儲數據的容器。
在MySQL中,數據庫稱為database,數據表稱為table,一個數據庫軟件中有多個數據庫(databases),每個數據庫中又可以有多個數據表(tables),最終,數據是存儲在數據表中。
數據庫和數據表之間的關系可以用下面這個圖來表示,對于一個數據庫來說,有多個數據表。
在正式開始寫SQL語句之前,需要說明兩點。
- SQL語句不區分大小寫。
- 每條SQL語句以分號(;)結尾(英文輸入法下的分號)。
這里通過MySQL Workbench來寫SQL代碼,在Workbench中,執行一條SQL語句的方式有兩種。
- 一種是通過上方快捷菜單中的按鈕。
- 另一種是通過快捷鍵Ctrl+Enter。
了解了這之后,接下來介紹一些常見的命令,分兩部分:數據庫常用命令和數據表常用命令。
一、數據庫常用SQL語句
1、查看有哪些數據庫
show databases;
2、創建數據庫
create database Testdb;
創建一個名為Testdb的數據庫。
3、創建數據庫并指定編碼格式
有些時候,為了防止中文亂碼,創建數據庫的時候需要指定編碼格式。
create database mydb character set utf8mb4;
4、使用某個數據庫
use mydb;
使用mydb這個數據庫,或者進入mydb這個數據庫。
5、刪除數據庫
drop database Testdb;
刪除Testdb這個數據庫。
二、數據表常用SQL語句
1、查看有哪些數據表
進入某個數據庫之后,想查看有哪些數據表,SQL語句為:
use mydb;
show tables;
mydb是一個新建的數據庫,所以自然是沒有數據表。
2、創建數據表
建表SQL語句格式為:
create table <tablename>(
<字段名稱> <數據類型>,
<字段名稱> <數據類型>,
<字段名稱> <數據類型>,
......
);
說明:每個字段以逗號分隔,最后一個字段不加逗號。
例如,給定一個學員信息表,如下表所示。
根據以上表格,建表SQL語句如下。
create table stuInfo(
stuid int unsigned primary key,
stuname varchar(10) not null,
gender varchar(5),
birthdate date,
age int(3),
city varchar(20)
);
以上語句中,primary key表示主鍵,意思是這個字段作為記錄的唯一標識,就像每個人的身份證號,都是唯一確定的。
3、查看表結構
查看表結構的SQL命令為:
describe stuinfo;
執行該命令會顯示表stuinfo的基本結構,例如有哪些字段,每個字段是什么類型,誰是主鍵等。
4、修改數據表
修改數據表通過drop子句進行,比如,建完表后,想增加一個字段,SQL語句的格式為:
alter table <tablename> add <column> varchar(20);
想在指定位置增加一個字段,例如,在某個字段后增加一個字段,SQL語句的格式為:
alter table <tablename> add <column> varchar(20) after <column>;
如果在某個字段之前增加字段,用before即可。
例如,在字段age后增加一個字段major(專業),SQL語句為:
alter table stuinfo add major varchar(20) after age;
執行這個命令,再通過describe查看表結構,會發現表中多了一個字段major。
如果要刪除major這個字段,通過drop子句,SQL語句為:
alter table stuinfo drop major;
5、重命名表
重命名表通過alter+rename來實現,SQL語句格式為:
alter table <tablename> rename <new_tablename> ;
這里為了不影響之前創建的表,我們創建一個新表,SQL語句如下。
create table stuInfoTest(
stuid int unsigned primary key,
stuname varchar(10)
);
以上創建一個名為stuInfoTest的表,現在想將它的名稱改成stuinfotest1,SQL語句為:
alter table stuinfotest rename stuinfotest1;
6、刪除數據表
刪除數據表通過drop進行,SQL語句格式為:
drop table <tablename>;
例如,刪除數據表stuinfotest1,SQL語句為:
drop table stuinfotest1;
7、插入記錄
此時的表stuinfo是空的,沒有數據,我們要向表中插入記錄。
插入記錄通過insert into進行,SQL語句格式為:
insert into <tablename>(字段1,字段2,......) values(字段1的值,字段2的值,......);
例如,向表stuinfo插入一條記錄,SQL語句為:
insert into stuinfo(stuid,stuname,gender,birthdate,age,city)
values(20161001,'Sunbin','男','1990/1/1',28,'Beijing');
注意:上方是一條SQL語句,為了可讀性換行,記住一條SQL語句默認以分號結尾。
如果需要一次性插入多條記錄,SQL語句格式為:
insert into <tablename>(字段1,字段2,......) values
(字段1的值,字段2的值,......),
(字段1的值,字段2的值,......),
(字段1的值,字段2的值,......);
例如,向表stuinfo再插入兩條記錄,SQL語句為:
insert into stuinfo(stuid,stuname,gender,birthdate,age,city)
values(20161002,'Wangwu','女','1991/1/3',19,'Beijing'),
(20161003,'Lisi','男','1990/11/4',21,'Shanghai');
注意:如果設置了主鍵,插入記錄的主鍵字段是不能重復的,也就是不能插入重復的記錄。
作業:大家可以按照上述方法將上面的學員信息表中的所有記錄都插入表stuinfo中。
8、查詢記錄
有了數據之后,就可以查詢記錄了,查詢記錄通過select子句進行。
例如,想查詢表stuinfo中的所有記錄,SQL語句為:
select * from stuinfo;
執行之后,就可以看到表stuinfo中的所有記錄了。
如果想查詢符合某個條件的記錄,就要用到where子句了,SQL格式為:
select * from <tablename> where 字段名=某個值;
例如,想查詢stuid為20161001的記錄,SQL語句為:
select * from stuinfo where stuid=20161001;
9、刪除記錄
刪除記錄通過delete子句進行,SQL語句格式為:
delete from <tablename> where 字段名=某個值;
例如,想刪除stuid為20161002的記錄,SQL語句為:
delete from stuinfo where stuid=20161002;
10、修改記錄
修改記錄通過update子句進行,update就是更新的意思,SQL語句格式為:
update <tablename> set 字段1=某個值 where 字段2=某個值;
例如,想將學號(stuid)為20161001的記錄的姓名(stuname)更新為Jack,SQL語句為:
update stuinfo set stuname='Jack' where stuid=20161001;
以上,就是MySQL中的基本SQL語句。