第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > MySQL数据操作之高级查询——别名 去重 where子句 排序

MySQL数据操作之高级查询——别名 去重 where子句 排序

时间:2019-12-16 06:32:26

相关推荐

MySQL数据操作之高级查询——别名 去重 where子句 排序

目录

1.数据准备2.别名3.去重4.where子句5.where子句-运算符6.where子句-模糊查询7.where子句-范围查询8.where子句-空判断9.排序

前言:本期咱们学习as(别名)、distinct(去重)、where子句、order by(排序)。在实际工作中会遇到各种各样的查询需求,如果只学习前面的一些基础的话,是满足不了日常工作中的需求的,大家继续加油哦!

1.数据准备

-- 创建mydb库:mydbcreate database mydb default character set utf8 collate utf8_general_ci;/*创建学生表:students,学生号为Sid,数据类型为varchar(10),主键,姓名为name,数据类型为varchar(10),性别为sex,数据类型为varchar(1),年龄为age,数据类型为int,班级为class,数据类型为varchar(10),身份证号为card,数据类型为varchar(20),城市为city,数据类型为varchar(20)*/create table students(Sid varchar(10) primary key,name varchar(10),sex varchar(1),age int,class varchar(10),card varchar(20),city varchar(20));-- 插入数据insert into students values('001','王昭君','女',30,'3班','634101199003157654','北京'),('002','诸葛亮','男',29,'2班','110102199104262354','上海'),('003','鲁班大师','男',30,'1班','82199003047654','南京'),('004','白起','男',35,'4班','84098505177654','安徽'),('005','大乔','女',28,'3班','215301199204067654','天津'),('006','孙尚香','女',25,'1班','130502199506137654','河北'),('007','百里玄策','男',39,'2班','140102198107277654','山西'),('008','小乔','女',25,'3班',null,'河南'),('009','百里守约','男',31,'1班','','湖南'),('010','妲己','女',24,'2班','440701199607147654','广东'),('011','廉颇','男',30,'1班','11099005017754','北京'),('012','孙膑','男',36,'3班','650102198401297655','新疆');

2.别名

语法:

字段别名:

select 字段名 as 别名 from 表名;

select 字段名 别名 from 表名;

表别名:

select * from 表名 as 别名;

select * from 表名 别名;

注意:as是可以省略的

练习一:

-- 查询students表中的age字段,要求查询结果以字段名‘年龄’显示select age as 年龄 from students;-- 或select age 年龄 from students;

练习二:

-- 查询students表中的name、sex、age字段,要求查询结果以‘姓名’、‘性别’、‘年龄’显示select name as 姓名,sex as 性别,age as 年龄 from students;-- 或select name 姓名,sex 性别,age 年龄 from students;

练习三:

-- 查询students表中的所有数据,并且给students起个别名 stselect * from students as st;-- 或select * from students st;

3.去重

语法:select distinct 字段名 from 表名;

作用:过滤查询结果中的重复记录

练习一:

-- 查询students表中班级字段中有哪些不同的值select distinct class from students;

4.where子句

语法:select * from 表名 where 条件;

注意:where子句在修改和删除语句中同样适用

练习一:

-- 查询students表中城市为北京的记录select * from students where city='北京';

练习二:

-- 查询students表中班级为1班的记录,并且查询结果以‘name’、‘sex’、‘class’显示select name,sex,class from students where class='1班';

5.where子句-运算符

where后面支持多种运算符,来进行条件处理。

运算符的种类:

比较运算符:=(等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、!=或<>(不等于)

练习一:

-- 查询students表中姓名为‘廉颇’的年龄select age from students where name='廉颇';

练习二:

-- 查询students表中年龄大于等于30岁的所有记录select * from students where age>=30;

练习三:

-- 查询students表中年龄小于等于25岁的所有记录select * from students where age<=25;

练习四:

-- 查询students表中年龄不等于30岁的所有记录select * from students where age!=30;-- 或select * from students where age<>30;

逻辑运算符:

and(与):两个条件必须都满足

语法:where 条件 and 条件

练习五:

-- 查询students表中年龄为30并且性别为女的所有记录select * from students where age=30 and sex='女';

or(或):两个条件只要有一个条件满足即可

语法:where 条件 or 条件

练习六:

-- 查询students表中班级为2班或者城市为北京的所有记录select * from students where class='2班' or city='北京';

not(非):否定的意思,结果取反

语法:where not 条件

练习七:

-- 查询students表中城市不为河北的学生姓名select name from students where not city='河北';

6.where子句-模糊查询

语法:select * from 表名 where 字段名 like '模糊匹配的内容';

分类:

%表示任意多个任意字符;

_表示一个任意字符;

练习一:

-- 查询students表中姓名以‘王’开头的学生记录select * from students where name like '王%';

练习二:

-- 查询students表中姓名以‘白’开头,且名只有一个字的学生记录select * from students where name like '白_';

练习三:

-- 查询students表中姓名以‘诸’开头,且名只有两个字的学生记录(注意:下划线'_'为2个)select * from students where name like '诸__';

练习四:

-- 查询students表中姓名为任意姓,名为‘约’的学生记录select * from students where name like '%约';

练习五:

-- 查询students表中姓名包含‘里’的学生记录select * from students where name like '%里%';

7.where子句-范围查询

in:

语法:select * from 表名 where 字段名 in ('值','值','值');

作用:in表示在一个非连续的范围内查找

练习一:

-- 查询students表中学生姓名为‘白起’、‘小乔’、‘妲己’的学生记录select * from students where name in ('白起','小乔','妲己');

between…and…:

语法:select * from 表名 where 字段名 between 开始值 and 结束值;

作用:表示在一个连续的范围内(闭区间)查找

练习二:

-- 查询students表中年龄为25至30的学生记录select * from students where age between 25 and 30;

练习三:

-- 查询students表中年龄为25至30岁以外的学生记录select * from students where not age between 25 and 30;

8.where子句-空判断

判断为空:select * from 表名 where 字段名 is null;

判断不是空:select * from 表名 where 字段名 is not null;

注意:null代表什么都没有,’'代表长度为0的字符串

练习一:

-- 查询students表中身份证号为null的学生记录select * from students where card is null;

练习二:

-- 查询students表中身份证号为非null的学生记录select * from students where card is not null;

9.排序

语法:select * from 表名 where 条件 order by 字段名1 asc/desc,字段名2 asc/desc;

说明:

将查询出来的结果按照字段名1排序,如果字段名1的值相同则按照字段名2排序;

asc为从小到大排序,即升序,默认为升序(asc可以省略不写);

desc为从大到小排序,即降序;

练习一:

-- 查询students表中所有学生记录,并且按年龄从小到大排序select * from students order by age asc;-- 或select * from students order by age;

练习二:

-- 查询students表中所有学生记录,并且按年龄从大到小排序,若年龄相同,则按照学生号从小到大排序select * from students order by age desc,Sid asc;-- 或select * from students order by age desc,Sid;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。