mysql dql语言_mysql DQL语言操作

SQL语句的执行顺序:from-where-group by-having-select-order by

where 可以筛选多个条件,如 where  A and B

1.排序

order by 列名  asc|desc

asc:升序排列 默认就是升序 所以可以省略

desc:降序排列

永远sql语句的最后

2.distinct 去除重复,只能指定一个字段,指定多个字段是distinct无效

无效:SELECT DISTINCT price,pname FROM product ORDER BY price

有效:SELECT DISTINCT price FROM product ORDER BY price

3.alter table 从表 add constraint 外键名(自定义) foreign key 从表(列名)

references 主表(列名);

4.如果时间的类型是date,则使用符号比较大小

SELECT empno,ename,hiredate FROM emp WHERE hiredate > '1981-02-01'

AND hiredate < '1987-05-01'

l  简单查询

去除重复数据

Select distinct  *|列名,列名  from  表  where 条件

别名(as可以省略)

Select *  from  product as  p

Select   pname        as  pn  from product

查询结果是表达式(运算查询):将所有商品的价格+10元进行显示

select  pname,price+10  from  product;

l  条件查询

比较运算符

>  =   =  <>

大于、小于、大于(小于)等于、不等于

BETWEEN  ...AND...

显示在某一区间的值(含头含尾)

IN(set)

显示在in列表中的值,例:in(100,200)

LIKE ‘张pattern’

模糊查询,Like语句中,

%代表零个或多个任意字符,

_代表一个字符,

例如:first_name like ‘_a%’;

IS NULL

判断是否为空

逻辑运算符

and

多个条件同时成立

or

多个条件任一成立

not

不成立,例:where not(salary>100);

#查询商品价格在200到1000之间所有商品

SELECT * FROM product WHERE price >= 200 AND price <=1000;

SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

#查询商品价格是200或800的所有商品

SELECT * FROM product WHERE price = 200 OR price = 800;

SELECT * FROM product WHERE price IN (200,800);

#查询含有'霸'字的所有商品

SELECT * FROM product WHERE pname LIKE '%霸%';

#查询以'香'开头的所有商品

SELECT * FROM product WHERE pname LIKE '香%';

#查询第二个字为'想'的所有商品

SELECT * FROM product WHERE pname LIKE '_想%';

#商品没有分类的商品

SELECT * FROM product WHERE category_id IS NULL

#查询有分类的商品

SELECT * FROM product WHERE category_id IS NOT NULL

l  排序查询

#通过order by语句,可以将查询出的结果进行排序。

SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;

#在价格排序(降序)的基础上,以分类排序(降序)

SELECT * FROM product ORDER BY price DESC,category_id DESC;

#显示商品的价格(去重复),并排序(降序)

SELECT DISTINCT price FROM product ORDER BY price DESC;

l  聚合查询

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

今天我们学习如下五个聚合函数:

count:统计指定列不为NULL的记录行数;

sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

l  查询分类为'c001'的所有商品价格的总和

SELECT SUM(price) FROM product WHERE category_id = 'c001';

l  查询分类为'c002'所有商品的平均价格

SELECT AVG(price) FROM product WHERE category_id = 'c002';

l   查询商品的最大价格和最小价格

SELECT MAX(price),MIN(price) FROM product;

l  分组查询

分组查询是指使用group by字句对查询信息进行分组。

格式:

SELECT 字段1,字段2… FROM 表名 GROUPBY分组字段 HAVING 分组条件;

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。

having与where的区别:

having是在分组后对数据进行过滤.

where是在分组前对数据进行过滤

having后面可以使用分组函数(统计函数)

where后面不可以使用分组函数。

1 统计各个分类商品的个数

SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;

2 统计各个分类商品的个数,且只显示个数大于1的信息

SELECT category_id ,COUNT(*) FROM product GROUP BY category_idHAVING COUNT(*) > 1;

l  外键约束

l  声明外键约束

语法:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

[外键名称]用于删除外键约束的,一般建议“_fk”结尾

altertable 从表 drop foreignkey 外键名称

l  使用外键目的:

保证数据完整性

l  多表查询

SQL语句的执行顺序:from-where-group by-having-select-order by

1.        交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]

语法:select *from A,B;

2.        内连接查询(使用的关键字 inner join  -- inner可以省略)

隐式内连接:select* from A,B where 条件;

显示内连接:select* from A inner join B on 条件;

3.        外连接查询(使用的关键字 outer join -- outer可以省略)

左外连接:leftouter join

select * from A left outer join B on 条件;

右外连接:rightouter join

select * from A right outer join B on 条件;

三种连接的区别:

例如:

CREATE TABLE category (

cidVARCHAR(32) PRIMARY KEY ,

cnameVARCHAR(50)

);

CREATE TABLE products(

pidVARCHAR(32) PRIMARY KEY ,

pnameVARCHAR(50),

price INT,

flagVARCHAR(2),              #是否上架标记为:1表示上架、0表示下架

category_idVARCHAR(32),

CONSTRAINTproducts_fk FOREIGN KEY (category_id) REFERENCES category (cid)

);

#分类

INSERT INTO category(cid,cname) VALUES('c001','家电');

INSERT INTO category(cid,cname) VALUES('c002','服饰');

INSERT INTO category(cid,cname) VALUES('c003','化妆品');

#商品

INSERT INTO products(pid,pname,price,flag,category_id) VALUES('p001','联想',5000,'1','c001');

INSERT INTO products(pid,pname,price,flag,category_id) VALUES('p002','海尔',3000,'1','c001');

INSERT INTO products(pid,pname,price,flag,category_id) VALUES('p003','雷神',5000,'1','c001');

INSERT INTO products (pid,pname,price,flag,category_id) VALUES('p004','JACK JONES',800,'1','c002');

INSERT INTO products (pid,pname,price,flag,category_id) VALUES('p005','真维斯',200,'1','c002');

INSERT INTO products (pid,pname,price,flag,category_id) VALUES('p006','花花公子',440,'1','c002');

INSERT INTO products (pid, pname,price,flag,category_id)VALUES('p007','劲霸',2000,'1','c002');

INSERT INTO products (pid,pname,price,flag,category_id) VALUES('p008','香奈儿',800,'1','c003');

INSERT INTO products (pid,pname,price,flag,category_id) VALUES('p009','相宜本草',200,'1','c003');

#1.查询哪些分类的商品已经上架

#隐式内连接

SELECT DISTINCT c.cname FROM category c , productsp

WHEREc.cid = p.category_id AND p.flag = '1';

#内连接

SELECT DISTINCT c.cname FROM category c

INNER JOINproducts p ON c.cid = p.category_id

WHEREp.flag = '1';

#2.查询所有分类商品的个数

#左外连接

INSERT INTO category(cid,cname) VALUES('c004','奢侈品');

SELECT cname,COUNT(category_id) FROM category c

LEFT OUTER JOIN products p

ONc.cid = p.category_id

GROUP BYcname;

l  子查询

子查询:一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等)。

select ....查询字段 ... from ... 表.. where ...查询条件

#3 子查询,查询“化妆品”分类上架商品详情

#隐式内连接

SELECT p.* FROM products p , category c

WHEREp.category_id=c.cid AND c.cname = '化妆品';

#子查询

##作为查询条件

SELECT * FROM products p

WHEREp.category_id =

(

SELECTc.cid FROM category c

WHEREc.cname='化妆品'

);

##作为另一张表

SELECT * FROM products p ,

(SELECT * FROM category WHERE cname='化妆品') c

WHERE p.category_id = c.cid;

#查询“化妆品”和“家电”两个分类上架商品详情

SELECT * FROM products p

WHEREp.category_id in

(

SELECTc.cid FROM category c

WHEREc.cname='化妆品' or c.name='家电'

)

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值