MySQL的基本查询语句

一、数据准备

CREATE TABLE `customers` (`cust_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '顾客ID',`cust_name` varchar(50) NOT NULL COMMENT '顾客名称',`cust_address` varchar(100) DEFAULT NULL COMMENT '顾客详细地址',`cust_city` varchar(50) DEFAULT NULL COMMENT '顾客的城市',`cust_state` varchar(50) DEFAULT NULL COMMENT '顾客的省/州',`cust_zip` varchar(20) DEFAULT NULL COMMENT '顾客邮编',`cust_country` varchar(50) DEFAULT NULL COMMENT '顾客的国家',`cust_contact` varchar(50) DEFAULT NULL COMMENT '顾客的收件名',`cust_email` varchar(20) DEFAULT NULL COMMENT '顾客的邮箱',PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10006 DEFAULT CHARSET=utf8mb4 COMMENT='顾客表';INSERT INTO `customers` (`cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email`) VALUES (10001,'秦始皇','秦皇小区1号楼1单元304','长沙','湖南','44444','中国','秦小皇','ylee@coyote.com');
INSERT INTO `customers` (`cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email`) VALUES (10002,'汉武帝','汉唐小区2号楼1单元304','武汉','湖北','43333','中国','汉子',NULL);
INSERT INTO `customers` (`cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email`) VALUES (10003,'唐太宗','长安街3号楼1单元','洛阳','河南','42222','中国','小唐','rabbit@wascally.com');
INSERT INTO `customers` (`cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email`) VALUES (10004,'宋太祖','魏晋风华天字一号院','石家庄','河北','88888','中国','大宋','sam@yosemite.com');
INSERT INTO `customers` (`cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email`) VALUES (10005,'康熙','慈宁宫正大光明殿','昌平区','北京','54545','中国','我来康康',NULL);CREATE TABLE `orderitems` (`order_num` int(11) NOT NULL COMMENT '订单编号',`order_item` int(11) NOT NULL COMMENT '订单物品号(在某个订单中的顺序)',`prod_id` int(11) NOT NULL COMMENT '产品ID',`quantity` int(11) NOT NULL COMMENT '物品数量',`item_price` decimal(8,2) NOT NULL COMMENT '物品价格',PRIMARY KEY (`order_num`,`order_item`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单明细表';INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20005,1,60001,10,5.99);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20005,2,60002,3,9.99);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20005,3,60005,5,10.00);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20005,4,60005,1,10.00);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20006,1,60009,1,55.00);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20007,1,60005,100,10.00);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20008,1,60006,50,2.50);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20009,1,60005,1,10.00);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20009,2,60010,1,8.99);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20009,3,60012,1,4.49);
INSERT INTO `orderitems` (`order_num`, `order_item`, `prod_id`, `quantity`, `item_price`) VALUES (20009,4,60003,1,14.99);CREATE TABLE `orders` (`order_num` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',`order_date` datetime NOT NULL COMMENT '订单日期',`cust_id` int(11) NOT NULL COMMENT '客户ID',PRIMARY KEY (`order_num`)
) ENGINE=InnoDB AUTO_INCREMENT=20010 DEFAULT CHARSET=utf8mb4 COMMENT='用户-订单表(中间表)';INSERT INTO `orders` (`order_num`, `order_date`, `cust_id`) VALUES (20005,'2020-09-01 00:00:00',10001);
INSERT INTO `orders` (`order_num`, `order_date`, `cust_id`) VALUES (20006,'2020-09-12 00:00:00',10003);
INSERT INTO `orders` (`order_num`, `order_date`, `cust_id`) VALUES (20007,'2020-09-30 00:00:00',10004);
INSERT INTO `orders` (`order_num`, `order_date`, `cust_id`) VALUES (20008,'2020-10-03 00:00:00',10005);
INSERT INTO `orders` (`order_num`, `order_date`, `cust_id`) VALUES (20009,'2020-10-08 00:00:00',10001);CREATE TABLE `productnotes` (`note_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '注释ID',`prod_id` int(11) NOT NULL COMMENT '产品ID',`note_date` datetime NOT NULL COMMENT '添加注释的日期',`note_text` text COMMENT '注释文本内容',PRIMARY KEY (`note_id`)
) ENGINE=MyISAM AUTO_INCREMENT=115 DEFAULT CHARSET=utf8mb4 COMMENT='产品注释表';INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (101,60001,'2020-08-17 00:00:00','5G 速度、iPhone 迄今最快的芯片 A14 仿生、\r\nOLED 全面屏、将抗跌落能力提升至四倍的超瓷晶面板,以及遍布每个摄像头的夜间模式。这两款尺寸称手的 iPhone 12,该有的都有了。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (102,60002,'2020-08-18 00:00:00','快,来 iPhone 上随处畅享 5G 的速度5。在线看 HDR 高品质大片,巨流畅;玩多人在线游戏,巨畅快。延迟感?拜拜。而智能数据模式可灵活帮你省电。另外,iPhone 还支持众多频段,让你在全球各处都能用上 5G。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (103,60003,'2020-08-18 00:00:00','A14 仿生是 iPhone 迄今最快的芯片。 它开启了种种新可能,比如用神经网络引擎完成数万亿次运算,拍摄连专业摄像机都未必拿手的杜比视界视频。同时,它的能效超高,带来出色的电池续航。大大超前的实力,蕴藏着开创精彩未来的潜力。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (104,60004,'2020-08-19 00:00:00','目之所及,是对已知的追求。\r\n心之所念,是对未知的探索。\r\n超越,视界尽头。突破,想象边界。\r\nHUAWEI Mate 40 系列,跃见非凡。\r\n你的 Mate,自带光环。熟悉的中轴对称设计,尽显理性世界中的秩序美。标识性星环设计,来自宇宙的设计灵感,引发对未知的无限探索。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (105,60005,'2020-08-20 00:00:00','Redmi K40正面是一块 6.67 英寸居中打孔屏,屏幕刷新率最高120Hz,长度163.7毫米,宽度76.4毫米,厚度7.8毫米,重量196克,提供“亮黑”、“晴雪”(白)、“幻境”(蓝)三种颜色。Redmi K40 搭载骁龙 870 处理器,内置 4520mAh 电池,配备 X 轴线性马达与杜比全景声双扬声器,支持 NFC、红外与 33W 快充。\r\n开售23天,Redmi K40系列国内销量突破100万台。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (106,60006,'2020-08-22 00:00:00','方方面面的新突破,开启了 2021 年高端旗舰的新标准。\n它轻薄、出彩 - 带来一块创下 13 项纪录的高端屏幕。\n更快的速度、更强大的影像系统,以及全面飞跃的视听体验。\n种种突破,共同成就了这款 2021 年小米高端代表作,助你轻装上阵,一往无前。\n全新骁龙888,突破性的 5 纳米芯片工艺,\n性能、渲染、AI 算力突飞猛进。\n2K AMOLED 四曲面柔性屏,10 亿色原色屏,\n获 DisplayMate A+ 权威认证。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (107,60007,'2020-08-23 00:00:00','502胶水为用于多孔性及吸收性材质之接着,用于钢铁、有色金属、橡胶、皮革、塑料、陶瓷、木材、非金属陶瓷、玻璃及柔性材料像胶制品、皮鞋、软、硬塑胶等自身或相互间的粘合,但对聚乙烯、聚丙烯、聚四氟乙烯等难粘材料,其表面需经过特殊处理,方能粘结。广泛用于电器、仪表、机械、电子、光仪、医疗、轻工民用等等行业。\n相类似的产品还有401、415等,效果与502的相类似,在市场中价格相对来说较贵一些;价格低的还有青红胶,也是AB胶的一种,价格相对来说比较便宜。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (108,60008,'2020-08-25 00:00:00','本书主要包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与恢复、日志以及性能优化等。最后通过两个综合案例的数据库设计,进一步讲述MySQL在实际工作中的应用。重点介绍MySQL安装与配置、数据类型和运算符以及数据表的操作。本书注重实战操作,帮助读者循序渐进地掌握MySQL中的各项技术。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (109,60009,'2020-09-01 00:00:00','《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的mysql 和mysql相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。\n\n《高性能mysql(第3版)》不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (110,60010,'2020-09-01 00:00:00','《MySQL技术内幕:InnoDB存储引擎(第2版)》由国内资深MySQL专家亲自执笔,国内外多位数据库专家联袂推荐。作为国内唯一一本关于InnoDB的专著,《MySQL技术内幕:InnoDB存储引擎(第2版)》的第1版广受好评,第2版不仅针对最新的MySQL 5.6对相关内容进行了全面的补充,还根据广大读者的反馈意见对第1版中存在的不足进行了完善,《MySQL技术内幕:InnoDB存储引擎(第2版)》大约重写了50%的内容。《MySQL技术内幕:InnoDB存储引擎(第2版)》从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,能帮助你系统而深入地掌握InnoDB,更重要的是,它能为你设计管理高性能、高可用的数据库系统提供绝佳的指导。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (111,60011,'2020-09-02 00:00:00','坚持早起26年、风靡日本的“早起计划”发起人池田千惠,倾囊相授自己的1小时习惯改造法。不仅讲述了如何早起——早起的心理准备、早起的4个步骤、5个早起小技巧;还以图文并茂的形式,分步骤指导你如何养成习惯,提升工作效率——制订计划、确定优先内容简介顺序、切割工作内容、细化工作、付诸行动,从而让你扫除精进路上的障碍,有效增加可支配时间,增强行动力,改变人生!\n\n本书还针对不同人生阶段——工作上升期、结婚生子、副业和自由职业,制订不同的工\n\n作计划,明确对自己来说重要的事是什么,从而朝着理想努力践行。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (112,60012,'2020-09-02 00:00:00','沙宣是宝洁公司洗发水品牌中的后起之秀,他们请来国际著名美发专家维达·沙宣做自己的品牌形象大使,并用维达·沙宣本人的名字作为品牌,从而树立起专业洗发、护发的形象。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (113,60013,'2020-09-05 00:00:00','霸王洗发水是由“中药世家”研制出的洗发护发精品。2009年7月3日,霸王国际(集团)控股有限公司在香港联交所主板上市,成为首家在香港上市的全球性中草药日化企业,股票名称为霸王集团,代码为01338。霸王集团在中国拥有霸王(广州)有限公司、霸王(中国)饮料有限公司等数家子公司。公司拥有霸王、追风、本草堂、霸王凉茶等涵盖中药养发、中药养颜、中药养生等多个领域的品牌产品,畅销中国大陆、香港、澳门地区和新加坡、泰国、马来西亚等国家。');
INSERT INTO `productnotes` (`note_id`, `prod_id`, `note_date`, `note_text`) VALUES (114,60014,'2020-09-07 00:00:00','不知道从什么时候开始,格子衬衣成为了程序员的代名词。\r\n\r\n传说因为BUG音译为“霸格”,所以穿格子衫在身上,可以清除BUG,少加几个小时班。');CREATE TABLE `products` (`prod_id` int(11) NOT NULL COMMENT '产品ID',`vend_id` int(11) NOT NULL COMMENT '供应商ID',`prod_name` varchar(255) NOT NULL COMMENT '产品名称',`prod_price` decimal(8,2) NOT NULL COMMENT '产品价格',`prod_desc` text COMMENT '产品描述',PRIMARY KEY (`prod_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表';INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60001,1001,'iphone 12',5.99,'超快速度,超低延迟。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60002,1001,'iphone 13',9.99,'5G网络,更快连接。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60003,1001,'Iphone 14',14.99,'苹果,已不再是以前的苹果。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60004,1003,'Mate 40',13.00,'凤凰涅槃,浴火重生!');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60005,1003,'Redmi K40 Pro',10.00,'物超所值,超高性价比!');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60006,1003,'Xiaomi 11 Pro',2.50,'高端、大气、上档次!');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60007,1002,'502胶水',3.42,'今生今世,永不分离~');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60008,1005,'《MySQL从入门到精通》',35.00,NULL);
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60009,1005,'《高性能MySQL》',55.00,'书是好书,就是有点费头发~');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60010,1002,'《MySQL技术内幕》',8.99,'国内顶尖大牛DBA,倾囊相授,可读性强。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60011,1003,'《起床后的黄金1小时》',50.00,'【立即行动,每一个早晨都值得珍惜】有人说:“能够驯服早晨的人,オ能驯服人生。“时间是公平的,如何对待早晨,可以折射出一个人对待生活的态度,如何利用每天的时间,決定了你会成为怎样的人。有效利用起床后的一小时,建立一套规律的习惯,帮你开启高效的一天。行动起来,别辜负每一个当下,早安。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60012,1003,'沙宣去屑洗发水',4.49,'人到中年,头发的再生和焕新能力每况愈下,头发作为人与人交际的第一感观点,一定要注意洗发水的选择。');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60013,1003,'霸王育发防脱洗发水',2.50,'坚持经常洗头,保持头发健康,推荐购买,适合自己的就赶紧下单吧!');
INSERT INTO `products` (`prod_id`, `vend_id`, `prod_name`, `prod_price`, `prod_desc`) VALUES (60014,1003,'格子衫',10.00,'程序员,身份认同很高的一件衣服。');CREATE TABLE `vendors` (`vend_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '供应商ID',`vend_name` varchar(50) NOT NULL COMMENT '供应商名',`vend_address` varchar(50) DEFAULT NULL COMMENT '供应商的地址',`vend_city` varchar(50) DEFAULT NULL COMMENT '供应商的城市',`vend_state` varchar(50) DEFAULT NULL COMMENT '供应商的省/州',`vend_zip` varchar(20) DEFAULT NULL COMMENT '供应商的邮政编码',`vend_country` varchar(50) DEFAULT NULL COMMENT '供应商所在的国家',PRIMARY KEY (`vend_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1007 DEFAULT CHARSET=utf8mb4 COMMENT='供应商表';INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1001,'美国苹果电脑公司','库比蒂诺107路28号','库比蒂诺','加利福尼亚州','48075','美国');
INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1002,'开课吧胶水有限公司','昌平数字山谷A区1号楼','北京','北京','10000','中国');
INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1003,'华为技术有限公司','龙岗区育才路76号','深圳','广东省','90046','中国');
INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1004,'LUSH','迪斯瑟路327号','Lendon','伦敦','N16 6PS','England');
INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1005,'清华大学出版社','海淀区双清路学研大厦A座','北京',NULL,'103100','中国');
INSERT INTO `vendors` (`vend_id`, `vend_name`, `vend_address`, `vend_city`, `vend_state`, `vend_zip`, `vend_country`) VALUES (1006,'网飞公司','1 Rue Amusement','旧金山',NULL,'45678','美国');

  
  

二、语法

select [distinct]
* | 列名,列名
from 表
where 条件;

  

  

三、简单查询

  • 查询所有列

    列出所有的商品

SELECT * FROM products;

注意: * 是一个通配符,它和查询所有的列,效果是一样的,但底层数据执行的时候,效率是不一样的,所以项目开发时,一般都写出所有的列,而不用*

  • 查询单个列

    products表中查询所有的产品名称(prod_name)

SELECT prod_name FROM products;
  • 全限定列名和全限定表名
SELECT products.prod_name FROM mydb.products;
  • 查询指定(多个)列

    从products表中查询产品id(prod_id)、产品名称(prod_name)、产品价格(prod_price)

SELECT prod_id,prod_name,prod_price FROM products;
  • 去重复值(distinct)

  在 vend_id 列有很多重复值,如何去除重复值,让每一种厂商的id只保留一份呢?

SELECT DISTINCT vend_id FROM products;

注意:DISTINCT关键字应用于所有列,而不仅是跟它挨着的列。(只保留一份重复记录)

  

  

四、条数限制查询(limit)

LIMIT是MySQL特有的语法,其作用是用于限制查询结果的条数

格式: select 列名 from 表名 limit [m ,]n

不写m的时候,返回前n条数据。写m的时候,数据库会从 行m 开始,返回n条数据;
注意,MySQL中行号是从0开始的,也就是说第一条数据,是行0,而不是行1

select * from tablename limit 2,4 即取出第3条至第6条,4条记录

知识小扩展:

分页查询格式:
SELECT * FROM 表名 LIMIT startRow,pageSize;
例如:
select * from products limit 0,5; #第一页,每页显示5条。
select * from products limit 5,5; #第二页,每页显示5条。
select * from products limit 10,5; #第三页,每页显示5条。
select * from products limit startRow,5; #第curPage页,每页显示5条, startRow的值如
何计算呢?
-- 后台计算出页码、页数(页大小)
-- 分页需要的相关数据结果分析如下,
-- 注意:下面是伪代码不用于执行
int curPage = 2; -- 当前页数
int pageSize = 5; -- 每页显示数量
int startRow = (curPage - 1) * pageSize; -- 当前页, 记录开始的位置(行数)计算
int totalSize = select count(*) from products; -- 记录总数量
int totalPage = Math.ceil(totalSize * 1.0 / pageSize); -- 总页数

  
  

五、排序(order by … asc|desc)

# 格式
SELECT 列名,... FROM 表名 ORDER BY 排序字段 ASC|DESC;
# ASC 升序 (默认), 从小到大排序
# DESC 降序, 从大到小排序
# 练习
# 单列排序:查询商品表,并按价格进行递增、递减排序
SELECT prod_id,prod_name ,prod_price FROM products ORDER BY prod_price;
SELECT prod_id,prod_name ,prod_price FROM products ORDER BY prod_price DESC ;# 多列排序:# 先按供应商id升序,再按产品价格升序
SELECT vend_id,prod_price FROM products ORDER BY vend_id,prod_price ;# 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。
# 先按供应商id降序,再按产品价格升序
SELECT vend_id,prod_price FROM products ORDER BY vend_id DESC ,prod_price ;# 思考题:
# 如何利用order by 和limit 的组合找出最贵的三件商品名称
SELECT prod_name,prod_price FROM products ORDER BY prod_price DESC LIMIT 3;

  
  

六、条件查询

格式 描述
< 、>、<=、 >=、= 、<>、 != 小于、大于、小于等于、大于等于、不等于、不等于
BETWEEN xxx AND yyy 显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,例:in(100,200)
IS NULL 判断是否为空
and 多个条件同时成立
or 多个条件任一成立
not 不成立,例:WHERE vend_id NOT IN (1001,1002);
# 查询价格为55.00的商品名称和价格
SELECT prod_name,prod_price FROM products WHERE prod_price=55.00;# 查询价格不等于55.00的商品名称和价格
SELECT prod_name,prod_price FROM products WHERE prod_price!=55.00;
SELECT prod_name,prod_price FROM products WHERE prod_price<>55.00;# 查询价格在5-10元之间的商品名称和价格
SELECT prod_name,prod_price FROM products WHERE prod_price>=5.00 AND prod_price<=10.00;
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5.00 AND
10.00;# 查询产品描述为null的商品名称和商品描述
SELECT prod_name,prod_desc FROM products WHERE prod_desc IS NULL ;# 查询产品描述不为null的商品名称和商品描述
SELECT prod_name,prod_desc FROM products WHERE prod_desc IS NOT NULL ;# 查询供应商id为1001 或者1002的商品名称、供应商id、商品价格
SELECT prod_name,vend_id,prod_price FROM products WHERE vend_id =1001 OR
vend_id=1002;# 查询供应商id为1001 或者1002的商品名称、供应商id、商品价格 并且价格大于10元 --注意优先级,and优先级大于or
SELECT prod_name,vend_id,prod_price FROM products WHERE vend_id =1001 OR
vend_id=1002 AND prod_price>10;# 查询供应商id为1001 或者1002的商品名称、供应商id、商品价格 ---用in() 实现
SELECT prod_name,vend_id,prod_price FROM products WHERE vend_id IN (1001,1002);
# 注意:in() 和 or 的作用差不多,但in()更强大,因为in里面可以包含其他select语句,我们后面会讲到。# 查询供应商id不为1001 或者1002的商品名称、供应商id、商品价格 ---用not in() 实现
SELECT prod_name,vend_id,prod_price FROM products WHERE vend_id NOT IN(1001,1002);
# 注意:MySQL支持使用NOT对IN、BETWEEN和 EXISTS子句取反 ,EXISTS子句后面会讲。

  
  

七、模糊查询

# 格式
SELECT 列名,... FROM 表名 WHERE 列名 LIKE 条件;
-- like语句中,% 代表零个或多个任意字符,_ 代表一个字符
# 练习
# 查询产品名称中 i 开头的产品名称
SELECT prod_name FROM products WHERE prod_name LIKE 'i%';
# 注意:MySQL默认是不区分大小写的,所以查询小写 i , 大写 I 也会被查询出来# 如果想区分大小写呢?
# 有两种方式,一种是修改表结构,字段后面加 binary 关键字,但修改表结构一般不推荐
# 第二种是,在SQL语句中添加 BINARY 格式:SELECT 列名 FROM 表名 WHERE BINARY 列名 LIKE '字符‘;
SELECT prod_name FROM products WHERE BINARY prod_name LIKE 'i%';# % 可以匹配0到多个字符,但不能匹配 null
SELECT * FROM products WHERE prod_desc LIKE '%';# 查询产品名称中第二个字是’王‘的产品
SELECT * FROM products WHERE prod_name LIKE '_王%';# 注意:通配符虽然好用,但不要滥用,尽量不要把%放在最前面,比如:where like '%王'。因为这也搜索效率会很慢,具体原因,进阶阶段再深入探讨。

  
  

八、正则表达式

  正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

正则表达式部分使用场景:

  • 判断用户输入的邮箱格式是否合法

  • 判断用户密码是否包含特殊字符

  • 想从一个文本文件中提取电话号码

  • 查找名字中间有数字的所有文件

  • 格式
SELECT 列名 FROM 表名 WHERE 列名 REGEXP '条件';
  • 练习
# 查询产品名称中包含“水”或者“40” 这两个字的产品名称 -- 用 正则表达式 |
SELECT prod_name FROM products WHERE prod_name REGEXP '水|40';# 查询产品名称中包好字母的产品名称
SELECT prod_name FROM products WHERE prod_name REGEXP '[a-z]';

MySQL的基本查询语句相关推荐

  1. mysql 数据库里查询语句中不等于的两种写法

    mysql 数据库里查询语句中不等于的两种写法 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 1.my ...

  2. mysql联表查询语句示例

    mysql联表查询语句示例 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 示例: "sele ...

  3. MySQL多表查询语句

    MySQL多表查询语句 1.内连接查询 1.隐式内连接:使用where条件消除无用数据例子: --查询所有员工信息和对应的部门信息SELECT * FROM emp,dept WHERE emp.de ...

  4. mysql 在sql查询语句结果中,数字加千分逗号

    mysql 在sql查询语句结果中,数字加千分逗号 FORMAT(X,D) 将number X设置为格式 '#,###,###.##', 以四舍五入的方式保留到小数点后D位, 而返回结果为一个字符串. ...

  5. Datawhale MySQL 训练营 Task2 查询语句

    目录 MySQL 管理 MySQL 用户管理 参考 数据库管理 SQ查询语句 1. 导入示例数据库,教程 MySQL导入示例数据库 2. 查询语句 SELECT 3. 筛选语句 WHERE ,过滤 4 ...

  6. mysql面试关联查询语句_sql语句多表联查语句的练习(面试题)

    此篇文章中所示用的sql语句适用于mysql关系型数据库查询数据,其他类型的数据库是否支持,没有去尝试,想要在mysql 1.首先准备两个表,一个是学生表(student) 另一个是科目分数表(gra ...

  7. 【MySQL】MySQL中的查询语句的详解----等值连接、左连接、右连接、全连接

    用两个表(t_worker,t_depart),关联字段t_worker.deptno和t_depart.deptno来演示一下MySQL的等值连接.左连接.右连接.全连接.数据库表:t_worker ...

  8. MySQL基础之查询语句

    导入学习数据库 source /opt/yiibaidb.sql SQL是什么?MySQL是什么? SQL是结构化查询语言(Structured Query Language). SQL是一种专门用来 ...

  9. mysql的高级查询语句

    内容预知 1.本文前言 2. 高效查询方式 2.1 指定指字段进行查看 2.2 对字段进行去重查看 2.3  where条件查询 2.4  and 和 or 进行逻辑关系的增加 2.5 查询取值列表中 ...

最新文章

  1. 面试官问:硬盘里的苍老师每天以TB级别数据增长,你咋处理?我懵了。。。...
  2. 模型压缩高达75%,推理速度提升超20%,百度Paddle Lite v2.3正式发布
  3. tl494c封装区别_TL494参数,功能介绍,TL494应用电路图,封装,管脚及TL494 PDF中文资料手册...
  4. test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
  5. LINQ的Java等效项是什么? [关闭]
  6. 图论(一)—— 基本概念
  7. jquery 弹出窗口_jQuery弹出窗口和工具提示窗口动画效果
  8. 一个软件项目的成本构成及评估方法
  9. 2018年【计算机视觉+机器学习+人工智能】领域重要会议汇总
  10. php fatal error解决,这是为什么 Fatal Error,该怎么解决
  11. 【问题记录】运行python+selenium程序报错,NoSuchWindowException: Browsing context has been discarded
  12. java中IOException是什么异常
  13. C++输入和输出:控制台I/O(键盘和屏幕)及文件I/O详细笔记
  14. java将小写数字变成大写输出
  15. ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
  16. Shiro 框架详解
  17. 论文翻译:2021_DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on
  18. 7家顶级机构投资策略分析
  19. 1068 PTA 万花丛中一点绿(未完成)
  20. laravel Carbon 时间处理类使用

热门文章

  1. C1认证学习二十六(基础选择器)
  2. 2018春招前端面试: 闯关记(精排精校) | 掘金技术征文
  3. 关键字与保留词,ES2020版
  4. SpringBoot项目中自动加载datasourceConfig配置导致启动失败
  5. vrchat模型保存_VRchat下载别人的模型
  6. 互联网晚报 | 12月30日 星期四 | 百度网盘青春版正式上线;汽车之家回应“年底大裁员”;A股年内成交额创历史新高...
  7. python方差齐性检验_方差分析中的方差齐性检验_方差齐性检验结果分析
  8. 杨叔子院士:人生在勤,贵在励志
  9. 番茄插件安装及使用介绍
  10. 安徽大学计算机专业参考书目,安徽大学计算机科学与技术(专业学位)研究生考试科目和考研参考书目...