(1) DDL:数据库的定义:主要操作数据库和表结构,主要命令有:create(创建),drop(删除),alter(修改)
(2) DML:数据操纵语言:操作表数据,insert(插入),update(修改),delete(删除)
(3) DCL:数据控制语言:设置用户的访问权限,安全设置
(4) DQL:数据查询语言: select(控制显示) from(获取) where(条件表达式)
(1) 创建数据库:
① create database 数据库名称;
② create database 数据库名称 character set 字符集;
③ create database 数据库名称 character set 字符集 collate 校对规则;
(2) 删除数据库:drop database 数据库名称;
(3) 修改数据库:alert database character set 字符集;
(4) 查看数据库:
① 查看所有数据库:show databases;
② 查看数据库定义:show create database 数据库名称;
③ 查看正在使用的数据库:select database();
(5) 选择使用数据库:use 数据库名称;
注意:mysql语句必须以;作为结束
create table 表名(列名1 列的类型(长度) 列的约束 ,列名2 列的类型(长度) 列的约束);
数据类型:int char(长度) varchar(长度) float double time(HH:MM:SS) datetime(YYYY-MM-DD HH:MM:SS) timestamp(获取当前时间)
char(长度)—> 固定长度,如果字符不占满,则用null填满 varchar(长度)—>非固定长度,如果字符不占满则以有效位为长度,两者都不能超出指定长度
④ 列的约束:
(2) 删除表:
(3) 修改表:
① 添加列:alter table 表名 add(列名,列的类型,列的约束);
② 修改列:alter table 表名 modify(列名,列的类型,列的约束);
③ 修改列名:alter table 表
名 change 旧列名 新列名 列的类型 列的约束;
④ 删除列: alter table 表名 drop 列名;
⑤ 修改表的字符集:alter table 表名 character set 字符集;
⑥ 修改表名:rename table 旧表名 to 新表名;
(4) 查看表:
① 查看数据库中所有的表:show tables;
② 查看表的定义格式:show create table 表名;
③ 查看表的结构:desc 表名;
1) 设置数据库结构为指定字符集:set names gbk;
2) 查看数据库结构:show variables like ‘char%’;
① delete from 表名 where 条件表达式;
注意:如果指明where 的条件表达式,会将所有数据全部删除
示例:delete from student where name=’张三’;
(3) 清空表中数据:truncate table 表名;
① 会先删除该表,再重新创建该类型的空表
② 与delete相比主要适用于清空大量数据时(效率高),delete适用于少量数据(效率高)
(4) 更新数据:update 表名 set 列名=值,列名=值 where 条件表达式;
① 示例:update student set name=’王五’,age=25 where cid=2; 表示将cid为2的行中的列为name的值改为王五,age改为25;
② 如果不给出where 条件表达式,则会将表中的数据全部修改;
select [distinct] [*] [列名,列名] from 表名 [where 条件表达式]
distinct:去除重复的数据
*:表示显示所有列,如果需要,可以指定显示列
--商品分类
1.分类的ID
2.分类的名称
3.分类的描述
create table catepory(
cid int primary key auto_increment, //primary key主键约束, auto_increment自动递增
cname varchar(10);
cdesc varchar(31)
);
insert into category values(null,'手机数码','手机,相机');
insert into category values(null,'衣服配饰','温州制衣厂');
insert into category values(null,'香烟酒水','中华,茅台');
insert into category values(null,'牛奶乳品','蒙牛,伊利');
insert into category values(null,'馋嘴零食','辣条,瓜果');
--所有商品
1.商品ID
2.商品名称
3.商品价格
4.生产日期
5.商品分类的ID
--商品和商品分类:所属关系
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
insert into product values(null,'小米Mix3',3999,null,1);
insert into product values(null,'努比亚Z18s',2999,null,1);
insert into product values(null,'衣服',199,null,2);
insert into product values(null,'帽子',99,null,2);
insert into product values(null,'白酒',35,null,3);
insert into product values(null,'安慕希',6,null,4);
insert into product values(null,'卫龙',1,null,5);
insert into product values(null,'溜溜梅',8,null,5);
--查询所有列
select * from 表名;
--查询指定列
select 列名,列名,... from 表名;
--别名查询
select 列名 as 自定义字段, 列名 as 自定义字段,... from 表名;
查询显示结果不会影响存储的的数据,不会保留到数据库表中
--去重查询
select distinct 列名 from 表名;
指定一项进行去重,不可以多项去重;
--条件查询
select * from 表名 where 条件表达式;
示例:select price from product where price>60;
--关系运算符
> >= < <= != <>
<>和!=都表示不等于,效果上无区别,<>是标准的SQL语句,!=是非标注的SQL语句
--逻辑运算符
and or not 与 或 非
between...and...可以表示与,但是范围必须是从小到大,否则报错
示例:select * from product where price<35 and price>900;
--模糊查询
关键字:like
_:表示一个字符
%:表示多个字符
示例:select * from product where pname like '_米%';
表示显示匹配商品名称在米之前只有一个字符,在米之后有多个字符或没有字符的项
--范围查询
关键字:in
示例: select * from product where price in(35,900);
表示显示范围大于35小于900的price项
关键字段:between...and...
示例: select * from product where price 35 and 900;
表示显示范围大于等于35小于等于900的price项
注意:无论是inhi啊是between...and...范围必须是从小到大;否则报错
--排序查询
关键字:order by 列名 排序方式;
desc:descend降序
asc:ascend升序(默认方式,不指定排序方式时的默认方式);
示例: select * from product order by price asc;
--聚合函数
sum():求和
示例: select sun(price) from product;
avg():平均值
示例: select avg(price) from product;
count():计数
示例: select count(*) from product;
max():最大值
示例: select max(price) from product;
min():最小值
示例: select min(price) from product;
--注意:where 条件后面不能跟聚合函数;
--分组查询
关键字:group by
--1.根据cno分组,分组后统计每一组商品个数
select cno,count(cno) from product group by cno;
--2.根据cno分组,分组后统计每组商品个数,并且显示平均值大于200的
select cno,count(cno) from product group by cno having avg(price) > 200;
--having和where的区别
having跟在group by后面,后面可以使用聚合函数
where出现在group by前面,后面不能跟随聚合函数
--编写顺序
--S..F..W..G..H..O
select...from..where..group by..having..order by
--执行顺顺序
--F..W..G..H..S..O
from先获取表,where筛选条件,group by分组,having筛选分组条件,select控制显示,order by排序显示