一.对数据库的操作
1.1 创建及删除数据库
create database 库名
create database 库名 character set 编码
SQL语句 | 功能 |
create database 库名; | 创建一个数据库 |
create database 库名 character set 编码; | 创建一个数据库并设置数据库的编码 |
show create database 库名; | 查看数据库编码 |
drop database 库名; | 删除数据库 |
1.2 选择数据库
SQL语句 | 功能 |
use 库名; | 锁定想要操作的数据库 |
select database(); | 查看当前选择的数据库 |
二.对数据库表的操作
2.1 创建表
SQL语句 | 功能 |
create table 表名(字段名 类型(长度) [约束], 字段名 类型(长度) [约束], ……); | 创建表 |
drop table 表名; | 删除表 |
2.2 查看表
SQL语句 | 功能 |
show tables; | 列出数据库中所有表的表名 |
desc 表名; | 可以查看表的结构 |
2.3 表的修改
SQL语句 | 功能 |
alter table 表名 add 字段名 类型(长度) [约束]; | 添加一列 |
alter table 表名 modify 要修改的字段名 类型(长度) [约束]; | 修改列的类型(长度,约束) |
alter table 表名 change 旧字段名 新字段名 类型(长度) [约束]; | 修改列的列名(列名即字段名) |
alter table 表名 drop 字段名; | 删除一列 |
rename table 表名 to 新表名; | 修改表名 |
alter table 表名 character set 编码; | 修改表的字符集 |
show create table 表名; | 查看当前表的编码 |
三.表中数据的增删改查
设置数据库的编码,解决乱码问题
set names gbk;
3.1 插入记录
insert into 表名(字段名1,字段名2,字段名3……) values(值1,值2,值3……)
insert into 表名 values(值1,值2,值3……)//也可以省略字段名
3.2 修改记录
update 表名 set 字段名=值, 字段名=值, 字段名=值……
3.3 删除记录
delete from 表名;
关键字delete和truncate都可用于删除表中数据,单是删除方式不同
关键字 | 特点 |
delete | 删除是一条一条的删除记录,它配合事务,可以将删除的数据找回。uid不会重置 |
truncate | 删除是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。uid会重置 |
四.查询操作
准备一些数据,shop数据库orderitem表
sql文件
4.1 简单查询
SQL模板 | 功能 |
select * from 表名; | 查询表中所有数据 |
select 字段名,字段名,… from 表名; | 查询表中几列数据 |
select * from 表名 as 别名; | 使用别名 |
select distinct(字段名) from 表名; | 查询一列数据并去掉重复值显示 |
select 字段名+100 from 表名; | 查询表中的列,并将此列的数据进行数学计算(+10)后显示 |
4.2 条件查询
SQL语句示例 | 功能 |
select * from 表名 where 字段名=’关键字’; | 关键字匹配查询 |
select * from 表名 where 字段名 like ‘%关键字%’; | 含有关键字的条件查询 |
select * from 表名 where id in<1,2,3>; | 查询id值为1,2,3的数据 |
select * from 表名 where id>10; | 查询id值大于10数据 |
select * from 表名 where id>10 or id=8; | 查询id值大于10数据或等于8的数据 |
4.3 查询后排序显示
SQL模板 | 功能 |
select * from 表名 order by id asc; | 查询表中数据,并按id升序排列显示 |
select * from 表名 order by id desc; | 查询表中数据,并按id降序排列显示 |
4.4 使用聚合函数
SQL语句示例 | 功能 |
select sum(subtotal) from orderitem; | 获得orderitem表中subtotal列的数据的和 |
select avg(subtotal) from orderitem; | 获得orderitem表中subtotal列的数据的平均值 |
select count(*) from orderitem; | 获得orderitem表中数据的总列数 |
4.4 分组查询
SQL模板 | 功能 | SQL语句示例 | 功能 |
select 字段1,sum(字段2) from 表名 group by 字段1; | 查询表中字段1的列的值并根据字段1的列的值分组,值相同的分为一组,并为每组求字段2的列的值的和 | select count,sum(subtotal) from orderitem group by count; | 查询orderitem表中count列的值并根据count列的值分组,值相同的分为一组,并为每组求subtotal列的值的和 |
select 字段1,sum(字段2) from 表名 group by 字段1 having sum(字段2)>15000; | 查询表中字段1的列的值并根据字段1的列的值分组,值相同的分为一组,并为每组求字段2的列的值的和,将和大于15000的数据显示 | select count,sum(subtotal) from orderitem group by count having sum(subtotal)>15000; | 查询orderitem表中count列的值并根据count列的值分组,值相同的分为一组,并为每组求subtotal列的值的和,将和大于15000的数据显示 |
上述两条SQL语句的查询结果显示:
第一条:
第二条:
关键字 | 特点 |
select | 后面的内容一般是要查询的字段(即列名),或聚合函数 |
having | 分组后带有条件只能使用having |
order by | 它必须放到最后面 |