五天搞定Mysql基础知识-Day02

学习目标:

        1、精确掌握where的子句

        2、理解掌握数据排序的方式

第一章 数据准备

一、创建学生表、向表插入数据

        将准备的数据导入Navicat中,运行SQL文件。

/* 如果学生表students存在,就删除学生表students */

drop table if exists students;

/* 创建学生表students */

create table students (

  studentNo varchar(10) primary key, /*学号,主键,值不能重复*/

  name varchar(10), /*姓名*/

  sex varchar(1), /*性别*/

  hometown varchar(20), /*家乡*/

  age tinyint, /*年龄*/

  class varchar(10), /*班级*/

  card varchar(20) /*身份证号码*/

);

/* 向学生表students插入数据 */

insert into students values

('001', '王迪', '女', '北京', '30', '1班', '110101199003157654'),

('002', '白芬', '男', '上海', '29', '2班', '310102199104262354'),

('003', '张超', '男', '南京', '30', '3班', '320102199003047654'),

('004', '白琳', '男', '安徽', '35', '4班', '340202198505177654'),

('005', '刘华', '女', '天津', '28', '3班', '120101199204067654'),

('006', '孙常', '女', '河北', '25', '1班', '130502199506137654'),

('007', '李白', '男', '山西', '39', '2班', '140102198107277654'),

('008', '乔丹', '女', '河南', '25', '3班', null),

('009', '孙鑫', '男', '湖南', '31', '1班', ''),

('010', '苏吉', '女', '广东', '24', '2班', '440701199607147654'),

('011', '李楠', '男', '北京', '30', '4班', '110202199005017754'),

('012', '王冰', '男', '新疆', '36', '3班', '650102198401297655');

第二章 别名与重复记录

一、查询所有字段

例1:查询students表所有字段

        select * from students;

二、查询指定字段

例1:查询students表name,sex和age字段

        select name,sex,age from students;

三、字段的别名

1、通过字段名as别名的语法,可以给字段起一个别名,别名可以是中文

2、as可以省略

3、字段名 as 别名 和 字段名 别名 结果是一样的

-- 通过as给字段起一个别名

        SELECT card AS 身份证, name AS 姓名, sex AS 性别 FROM students;

-- 别名的as可以省略

        SELECT card 身份证, name 姓名, sex 性别 FROM students;

四、表的别名

1、在from后面的表名,可以使用as为表起别名

2、as可以省略

-- 通过as给表students起一个别名

        SELECT * FROM students AS s;

-- 别名的as可以省略

        SELECT * FROM students s;

五、消除重复记录

1、在select后面字段前使用distinct可以消除重复的记录

2、语法

        select distinct 字段 from 表名;

-- 查询students表的sex字段,用distinct取消重复记录

        SELECT DISTINCT sex FROM students;

第三章 条件查询

一、where子句

1、使用where子句对表中的数据筛选,符合条件的数据会出现在结果集中

2、语法:

        select 字段1,字段2...from 表名 where 条件;

例1:查询students表中学号studentsNo等于'001'的记录

        SELECT * FROM students WHERE studentNo = '001';

例2:查询students表中年龄age等于30的姓名name,班级class

        SELECT name,class FROM students WHERE age=30;

注:

        1、select后面的 * 或者字段名,决定了返回什么样的字段(列);

        2、select中where子句,决定了返回什么样的记录(行);

        3、where后面支持多种运算符,进行条件处理(比较运算、逻辑运算、模糊查询、范围查询、空判断)

二、比较运算符

等于:=

大于:>

大于等于:>=

小于:

小于等于:

不等于:!= 或 <>

例1:查询students表中name(姓名)等于‘小乔’学生的age(年龄)

        SELECT age FROM students WHERE name = '小乔';

例2:查询students表中30岁以下的学生记录

        SELECT * FROM students WHERE age < 30;

练习:

练习1:查询studentNo学号是‘007’的学生的身份证号card;

        SELECT card FROM students WHERE studentNo = '007';

练习2:查询class班级为'1班'以外的学生记录

        SELECT * FROM students WHERE class != '1班';

练习3:查询age年龄大于25的学生的name(姓名)和sex(性别)

        SELECT name,sex FROM students WHERE age > 25;

三、逻辑运算符

1、and(与):

        and有两个条件

        条件1和条件2

        两个条件必须同时满足

例1:查询age年龄小于30,并且sex性别为‘女’的同学记录

        SELECT * FROM students WHERE age < 30 AND sex = '女';

2、or(或):

        or有两个条件

        条件1和条件2

        两个条件只要有一个满足即可

例2:查询sex(性别)为‘女’或者class(班级)为‘1班’的学生记录

        SELECT * FROM students WHERE sex = '女' or class = '1班';

3、not(非):

        not只有一个条件

        not 条件

        如果条件为满足,not后变为不满足,如果条件为不满足,not后变为满足

例3:查询hometown老家非‘天津’的学生的记录

        SELECT * FROM students WHERE NOT hometown = '天津';

练习:

练习1:查询hometown老家是‘河南’或‘河北’的学生记录

        SELECT * FROM students WHERE hometown = '河南' OR hometown = '河北';

练习2:查询class班级为‘1班’,并且hometown老家为北京的学生记录

        SELECT * FROM students WHERE class = '1班' and hometown = '北京';

练习3:查询age年龄并非30岁的学生记录

        SELECT * FROM students WHERE NOT age = 30;

四、模糊查询

like

%表示任意多个任意字符

_表示一个任意字符

例1:查询name姓名中以‘孙’开头的学生记录

        SELECT * FROM students WHERE name LIKE '孙%';

例2:查询name姓名中以‘孙’开头,且名只有一个字的学生记录

        SELECT * FROM students WHERE name LIKE '孙_';

例3:查询name为任意性,名叫‘乔’的学生记录

        SELECT * FROM students WHERE name LIKE '%乔';

例4:查询name姓名中含‘白’的学生记录

        SELECT * FROM students WHERE name LIKE '%白%';

练习:

练习1:查询name姓名为两个字的学生记录

        SELECT * FROM students WHERE name LIKE '__';

练习2:查询name姓‘白’且年龄大于30的学生记录

        SELECT * FROM students WHERE name LIKE '白%' and age > 30;

练习3:查询studentNo学号以1结尾的学生记录

        SELECT * FROM students WHERE studentNo LIKE '%1';

六、空判断

注意:null与“”是不同的

null代表什么都没有

“”代表长度为0的字符串

判断空:is null

判断非空:is not null

例1:查询card身份证为null的学生记录

        SELECT * FROM students WHERE card is null;

例2:查询card身份证非null的学生记录

        SELECT * FROM students WHERE card is NOT null;

七、where子句在update与delete语句中同样有效

例1:修改age为25,并且name为‘孙尚香’的学生class为‘2班’

        UPDATE students set class = '2班' WHERE age = 25 AND name = '孙尚香';

例2:删除class为‘1班’,且age大于30的学生记录

        DELETE FROM students WHERE class = '1班' AND age > 30;

练习:

练习1:修改students表中姓孙的同学,班级为‘1班’

        UPDATE students SET class = '1班' WHERE name LIKE '孙%';

练习2:删除students年龄在20到30之间的所有男同学

        DELETE FROM students WHERE age BETWEEN 20 and 30 and sex = '男';

        SELECT * FROM students;
 

第四章 排序

为了方便查看数据,可以对数据进行排序

语法:

        select * from 表名

        order by 字段1 asc|desc,字段2 asc|desc,......

        将行数据按照字段1进行排序,如果某些行字段1的值相同时,则按照字段2排序,以此类推;

        默认字段值从小到大排序;

        asc(默认值)从小到大排序,即升序;

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

例1:查询所有学生记录,按age年龄从小到大排序

        SELECT * FROM students ORDER BY age ASC;

查询所有学生记录,按age年龄从大到小排序

        SELECT * FROM students ORDER BY age DESC;

例2:查询所有学生记录,按age年龄从大到小排序,年龄相同时,再按studentNo学号从小到大排序

        SELECT * FROM students ORDER BY age DESC, studentNo asc;

当一条select语句出现where和order by

语法:

        select * from 表名 where条件 order by 字段1,字段2;

        一定要把where写在order by的前面

例:查询所有男学生记录,按class班级从小到大排序,班级相同时再按studentsNo学号按从大到小排序

        SELECT * FROM students WHERE sex = '男' ORDER BY class asc,studentNo desc;

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

畅畅菜鸟

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值