第二十九天 预习6

一、简单查询
1、

SELECT  [DISTINCT] *|{字段名1, 字段名2, 字段名3,……}
                       FROM 表名
	         [WHERE 条件表达式1]
	         [GROUP BY 字段名 [HAVING 条件表达式2]]
	         [ORDER BY 字段名 [ASC|DESC]]
	         [LIMIT [OFFSET] 记录数]

2、使用星号(“*”)通配符查询数据:ELECT * FROM 表名;即查询该表的所有数据
3、查询指定字段:SELECT 字段名1,字段名2,…… FROM 表名;
二、按条件查询:WHERE子句指定查询条件,带有WHERE子句的查询有八种
1、带关系运算符的查询:(运算符有=,!=,<,>,<=,>=)
SELECT 字段名1,字段名2,……
FROM 表名
WHERE 条件表达式
2、带IN关键字的查询:
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名 [NOT] IN (元素1,元素2,……)
3、带BETWEEN AND关键字的查询—判断某个字段的值是否在指定的范围之内
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2
4、空值查询—判断某些列是否有NULL值

SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名IS [NOT] NULL

5、带DISTINCT关键字的查询—去重复:
SELECT DISTINCT 字段名 FROM 表名;
6、带LIKE关键字的查询—判断两个字符串是否相匹配
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] LIKE ‘匹配字符串’;
7、带AND关键字的多条件查询—连接两个或者多个查询条件
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 […… AND 条件表达式n];
8、带OR关键字的多条件查询—记录满足任意一个条件即被查出
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 OR […… OR 条件表达式n];

注:AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式。

9、百分号和下划线统称为通配符
① 百分号(%):可以匹配任意长度的字符串,包括空字符串;
② 下划线(_):下划线通配符只匹配单个字符,如果要匹配多个字符,
需要使用多个下划线通配符。

注:若要查询通配符%和-与药品用“\”转义:“%”匹配百分号字面值,“_”匹配下划线字面值
例如:
字段名 类型 描述
id INT 商品编号
name VARCHAR(20) 商品名称
expiry_date DATE 生产日期
price FLOAT 商品价格
创建表格:

CREATE TABLE `goods` (
	`id` int(11) NOT NULL COMMENT '商品编号',
	`name` varchar(20) DEFAULT NULL COMMENT '商品名称',
	`expiry_date` date DEFAULT NULL COMMENT '生产日期',
	`price` float DEFAULT NULL COMMENT '商品价格',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

插入数据:

insert  into `goods`(`id`,`name`,`expiry_date`,`price`) values 
	(1,'洗衣粉','2016-03-01',NULL),(2,'肥皂','2015-12-22',2),
	(3,'毛巾','2015-01-20',9.9),(4,'清洗剂','2016-02-19',8.6),
	(5,'卫生纸','2015-11-06',NULL),(6,'牙刷','2014-11-14',4.5),
	(7,'牙膏','2016-07-05',13),(8,'洗面奶','2016-03-29',43.8),
	(9,'香水','2015-09-16',NULL),(10,'口罩','2015-01-30',5);

1) 查询出goods表中所有字段

desc goods;

2) 查询出goods表中生产日期在一年前的商品(以当前日期为准)

select * from goods where expiry_date < '2015-03-25';

3) 查询出goods表中商品名称中带“洗”字的商品

select * from goods where name like '%洗%';

4) 查询出goods表中商品编号为2,4,6,8的商品

select * from goods where id in(2,4,6,8);

5) 查询出goods表中price字段值为NULL的商品

select * from goods where price is null;

6) 查询出goods表中price字段不为NULL并且商品编号在4到10范围内的商品
第一种查询方式:

select * from goods where price is not null and (id>=4 and id <= 10)

第二种查询方式:

select * from goods where price is not null and (id between 4 and 10)

三、高级查询
1、常见的查询函数:
AVG()函数用于求出某个字段所有值的平均值:SELECT AVG(字段名) FROM student;
MIN()函数是用于求出某个字段的最小值:SELECT MIN(grade) FROM student;
COUNT()函数用来统计记录的条数:SELECT COUNT(*) FROM 表名;
MAX()函数用于求出某个字段的最大值:SELECT MAX(grade) FROM student;
SUM()是用于求出表中某个字段所有值的总和:SELECT SUM(字段名) FROM 表名;
2、分组查询:GROUP BY:查询的是每个分组中的一条记录。
SELECT 字段名1,字段名2,……
FROM 表名
GROUP BY 字段名1,字段名2,……[HAVING 条件表达式];
三种使用情况:
① 单独使用:查询的是每个分组中的一条记录;
② 和聚合函数:统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等。
③ 和HAVING:HAVING和WHERE都用于设置条件对查询结果进行过滤。两者区别在于HAVING后可以跟聚合函数,而WHERE不能。
3、使用LIMIT限制查询结果的数量:

  SELECT 字段名1,字段名2,……
     FROM 表名
     LIMIT [OFFSET,] 记录数

4、MySQL中的函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、加密函数等:

四、 为表和字段取别名
为表取别名:SELECT * FROM 表名 [AS] 别名;
为字段取别名:SELECT 字段名 [AS] 别名[,字段名 [AS] 别名,……] FROM 表名;
例如:
student表结构如下:
字段名 类型 描述
id INT(11) 学生的编号
name VARCHAR(20) 学生的姓名
grade FLOAT 学生的成绩
gender CHAR(2) 性别
创建表:

CREATE TABLE `student` (
	`id` int(11) NOT NULL COMMENT '学生的编号',
	`name` varchar(20) DEFAULT NULL COMMENT '学生的姓名',
	`grade` float DEFAULT NULL COMMENT '学生的成绩',
	`gender` char(2) DEFAULT NULL COMMENT '性别',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

插入数据:

insert  into `student`(`id`,`name`,`grade`,`gender`) values 
(1,'小明',80,'男'),(2,'小红',51,'女'),(3,'小花',77,'女'),
(4,'小华',78,'男'),(5,'小琴',69,'女'),(6,'小伟',90,'男'),
(7,'小白',88,'男'),(8,'小建',65,'男'),(9,'小梅',72,'女'),
(10,'小超',55,'男'),(11,'小燕',95,'女'),(12,'小康',81,'男'),
(13,'小蒙',72,'女');

要求如下:
1) 查询出student表中所有学生的姓名和成绩,并按照成绩的降序排列

select name,grade from student order by grade desc;

2) 分别查询出student表中男生、女生的平均分

select gender,AVG(grade) 平均分  from student group by gender;

3) 查询出student表中的最高分和最低分

select max(grade) 最高分,min(grade) 最低分 from student;

4) 查询出student表中班级成绩前五名学生信息

select * from student order by grade desc limit 0,5;

5) 查询student表中成绩在第6名到第10名并且成绩大于70分的学生姓名和成绩

select name,grade from student where grade > 70 order by grade desc limit 5,5;
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Web前端开发这一领域是现代互联网行业中非常重要的一个职业岗位,负责将设计师设计的网站页面转化为实际可交互的网页。为了适应这个职业的要求,我进行了一段时间的预习,并整理了一些笔记。 首先,了解HTML(超文本标记语言)是十分重要的。它是构建网页结构的标准,可以通过标签定义不同的元素,如标题、段落、链接等。我学习了HTML的基本语法,如标签的使用规范、嵌套关系等。 其次,对CSS(层叠样式表)的理解也是必要的。通过CSS,我可以为HTML元素添加样式或者布局,使页面更加美观和易于阅读。我学习了CSS的选择器、属性和值,以及如何对文本、盒模型进行样式设置。 另外,JavaScript是实现网页交互性的重要一环。我了解了JavaScript的基本语法和DOM(文档对象模型),可以通过JavaScript操作网页元素,实现动态效果、表单验证等功能。 在学习的过程中,我还关注了响应式设计的概念。响应式设计可以使网页在不同设备上提供良好的用户体验,通过CSS媒体查询和弹性布局等技术,使页面适应不同的屏幕大小和分辨率。 此外,我还进行了一些实践练习,通过编写一些小项目来巩固所学知识。这些实践项目包括创建静态网页、制作简单的动画效果、实现表单验证等,帮助我理解和应用所学的技术。 综上所述,我的Web前端开发预习笔记主要包括HTML、CSS、JavaScript以及响应式设计的基础知识和实践经验。我相信这些准备工作可以为我之后的学习和工作打下良好的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值