数据定义语言
操作对象:数据库和表
关键词:create alter drop
1. 登入数据库
mysql -uroot
2. 查看所有数据库
show databases
3. 创建数据库
create database 数据库名称;
4. 删除数据库
drop database 数据库名称;
5. 切换或者进入数据库
use 数据库名称;
6. 查看当前数据库下的所有表
show tables;
7. 查看表结构
desc 表名;
8. 查看建表语句
show create table 表名;
9. 创建表
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(10)
);
10. 修改表
- 修改表名:
alter table 旧表名 rename to 新表名;
eg:alter table user1 rename to user10; - 添加字段:
alter table 表名 add 字段描述;
eg:alter table user add password varchar(20); - 修改字段名:
alter table 表名 change 旧字段名称 新字段描述;
eg:alter table user change password pwd varchar(20); - 修改字段描述:
alter table 表名 modify 字段名称 字段类型;
eg:alter table user modify pwd int; - 删除字段:
alter table 表名 drop 字段名;
eg:alter table user drop pwd;
11. 删除表
drop table 表名;
数据操作语言
操作对象:记录(行)
关键词:insert update delete
1. 插入
- 格式1:
insert into 表名 values(字段值1,字段值2…,字段值n); - 格式2:
insert into 表名 (字段名1,字段名2…,字段名n) values(字段值1,字段值2…,字段值n);
eg:insert into user (username,pwd) values (‘tom’,123);
2. 修改
update 表名 set 字段名1=字段值1,字段名2=字段值2…[where 条件];
eg:update user set username=‘jack’where username=‘tom’;
3. 删除
delete from 表名 [where 条件];
eg:delete from user where username=‘jack’;
数据查询语言
关键词:select
1. 格式
select … from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 ase|desc
2. 简单查询
- 查询所有商品:
select * from 表名;
eg:select * from products; - 查询商品名和商品价格:
select 字段名1,字段名2 from 表名;
eg:select pname,price from products; - 查询商品价格:
eg:select price from products; - 查询商品价格并去除重复:
select distinct 字段名 from 表名;
eg:select distinct price from products;
将所有商品价格+10元进行显示(可以在查询的结果之上进行运算,但不影响数据库中的值)
eg:select price+10 from products;
3. 条件查询
- 查询商品名称为十三香的商品所有信息:
eg:select * from products where pname=‘十三香’; - 查询商品价格>60元的所有的商品信息:
eg:select * from products where price>60; - 查询商品名称中包含“新”的商品(模糊匹配):
匹配规则:
1.匹配内容 %
“新” 值为新
“%新” 值以“新”结尾
“新%” 值以“新”开头
“%新%” 值包含“新”
2.匹配个数 _
一个下划线代表占一个位置
字段名 like “匹配规则”;
eg:select * from products where pname like ‘%新%’; - 查询价格为38,68,98的商品:
eg:select * from products where price=38 or price=68 or price=98;
eg:select * from products where price in(38,68,98); - 查询价格区间在50到60之间的商品的信息:
eg:select * from products where price between 50 and 60;
4. 高级查询
- 排序查询:
- 查询所有的商品,按价格进行排序(asc-升序,desc-降序)
eg:select * from products order by price desc; - 查询名称有“新”的商品的信息并且按价格降序排序
eg:select * from products where pname like ‘%新%’ order by price desc;
- 聚合函数(对一列进行计算,返回值只有一个):
sum(),avg(),max(),min(),count();- 获得所有商品的价格的总和
eg:select sum(price) from products; - 获得商品表中价格的平均数
eg:select avg(price) from products;
round(值,保留小数位)
eg:select round(avg(price),2) from products; - 获得商品表中有多少条记录
eg:select count(*) from products;
- 获得所有商品的价格的总和
- 分组(使用group by):
- 根据cno字段分组,分组后统计商品的个数
eg:select cno,count(*) from products group by cno; - 根据cno分组,分组统计每组商品的总数量,并且总数量>200
eg:select cno,sum(pnum) from products group by cno having sum(pnum)>200;
where和having的区别:
where是对分组前的数据进行过滤
having是对分组后的数据进行过滤
where后面不能使用聚合函数,having可以使用