第三课、数据库的基本查询

一、课程介绍

  1.1 课程介绍

学习目标

  • 数据的简单查询

    • 无条件查询记录,字段的计算和字段的别名
  • 数据的高级查询
    • 数据排序、分页、去除重复记录
  • 数据的有条件查询
    • 条件表达式:数学运算符、比较运算符、逻辑运算符、按位运算符

二、数据操作语言的基本操作

  2.1 数据表的基本查询

数据操作语言:普通查询

记录查询

  • 最基本的查询语句是由SELECT和FROM关键字组成的

    • SELECT * FROM t_emp;
    • SELECT empno,ename,sal FROM t_emp;
  • SELECT语句屏蔽了物理层的操作,用户不必关心数据的真实储存,交由数据库高效的查找数据

使用列别名

  • 通常情况下,SELECT子句中使用了表达式,那么这列的名字就默认为表达式,因此需要一种对列名重命名的机制

    • SELECT empno,sal*12 as "income" FROM t_emp;

查询语句的字句执行顺序

  1. 词法分析与优化——读取SQL语句
  2. FROM——选择数据来源
  3. SELECT——选择输出内容·

  2.2 如何让数据分页展示

数据操作语言:数据分页

数据分页

  • 比如我们查看朋友圈,只会加载少量部分信息,不用一次性加载全部朋友圈,那样只会浪费CPU时间、内存和网络宽带
  • 如果结果的记录很多,则可以使用LIMIT关键字限定结果集数量。
    • SELECT ...... FROM ...... LIMIT 起始位置,偏移量;
    • SELECT empno,ename FROM t_emp LIMIT 0,5;

数据分页的简写用法

  • 如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0

    • SELECT empno,ename FROM t_emp LIMIT 5;
    • SELECT empno,ename FROM t_emp LIMIT 0,5;
  • 顺序:FROM-->SELECT-->LIMIT

  2.3 如何对查询结果集进行排序

结果集排序

  • 如果没有设置,查询语句不会对结果集进行排序。也就是说,如果想让结果集按照某种顺序排列,就必须使用ORDER BY子句。

    • SELECT ...... FROM ......ORDER BY 列名 [ASC|DESC];
    • SELECT empno,ename FROM t_emp ORDER BY sal;

排序关键字

  • ASC代表升序(默认),DESC代表降序
  • 如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型就按照日期大小排序,如果是字符串就按照字符集序号排序。

排序字段内容相同的情况

  • 默认情况下,如果两条数据排列字段内容相同,那么排序会是什么样子?(默认按主键升序排列)

多个排序字段

  • 我们可以使用ORDER BY 规定首要排序条件和次要排序条件。数据库会按照首要排序条件排序,如果遇到首要排序内容相同的记录,那么就会启用次要排序条件接着排序

排序+分页

  • ORDER BY子句书写的时候放在LIMIT子句的前面
  • 顺序:FROM-->SELECT-->ORDER BY-->LIMIT

  2.4 如何去除结果集中的重复记录

数据操作语言:去除重复记录

结果集中的重复记录

  • 假如我们要查询员工表有多少种职业,写出来的SQL语句如下:

    • SELECT job FROM t_emp;

去除重复记录

  • 如果我们需要去除重复的数据,可以使用DISTINCT关键字来实现

    • SELECT DISTINCT 字段 FROM ......;
    • SELECT DISTINCT job FROM t_emp;

注意事项

  • 使用DISTINCT的SELECT子句中只能查询一例数据,如果查询多列,去除重复记录就会失效。

    • SELECT DISTINCT job,ename FROM t_emp;(X)
  • DISTINCT关键字只能在SELECT子句中使用一次
    • SELECT DISTINCT job,DISTINCT ename FROM t_emp;(X)
    • SELECT job,DISTINCT ename FROM t_emp;(X)

三、条件查询

  3.1 条件查询的语句

数据操作语言:条件查询(一)

条件查询

  • 很多时候,用户感兴趣的并不是逻辑表里的全部记录,而只是他们当中能够满足某一种或某几种条件的记录。这类条件要用WHERE子句来实现数据的筛选

    • SELECT......FROM......WHERE 条件 [AND|OR] 条件 ......;
    • SELECT empno,enamel,sal FROM t_emp WHERE deptno=10 AND sal>=2000;

四类运算符

  • WHERE语句中的条件运算会用到以下四种运算符:

    • 符号 运算符
      1 数学运算符
      2 比较运算符
      3 逻辑运算符
      4 按位运算符

  算术运算符

  • 序号 表达式 意义 例子
    1 + 加法 1+2+3
    2 - 减法 1-2-3
    3 * 乘法 5*35
    4 / 除法 231/15
    5 % 求模 10%3

  比较运算符

  • 序号 表达式 意义 例子
    1 > 大于 age>18
    2 >= 大于等于 age>=18
    3 < 小于 sal<3000
    4 <= 小于等于 sal<=3000
    5 = 等于 deptno=10
    6 != 不等于 deptno!=30
    7 IN 包含 deptno IN (10,30,40)
    8 IS NULL 为空 comm IS NULL
    9 IS NOT NULL 不为空 comm IS NOT NULL
    10 BETWEEN AND 范围 sal BETWEEN 2000 AND 3000
    11 LIKE 模糊查询 ename LIKE "A%"
    12 REGEXP 正则表达式 ename REGEXP "[a-zA-Z]{4}"

  逻辑运算符

  • 序号 表达式 意义 例子
    1 AND age > 18 AND sex = “男”
    2 OR empno = 8000 OR deptno = 20
    3 NOT NOT deptno = 20
    4 XOP 异或 age > 18 XOR sex = "男"

  按位运算符

  • 序号 表达式 意义 例子
    1 & 位与关系 3&7
    2 | 位或关系 3|7
    3 ~ 位取反 ~10
    4 ^ 位异或 3^7
    5 << 左移 10<<1
    6 >> 右移 10>>1

二进制按位运算

  • 二进制位运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑运算。

WHERE子句的注意事项

  • WHERE子句中,条件执行的顺序是从左到右的。所以我们应该把索引条件,或者筛选掉记录最多的条件写在最左侧
  • 执行顺序
    • FROM->WHERE->SELECT->ORDER BY->LIMIT

四、课程总结

  4.1 课程总结

技能清单

  • 掌握了SELECT子句中的列别名和去除重复记录
  • 掌握了数据排序语法
  • 掌握了数据分页的语法
  • 掌握有条件查询的语法和运算符

【python】第二模块 步骤一 第三课、数据库的基本查询的更多相关文章

  1. MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

    在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...

  2. oracle,mysql,SqlServer三种数据库的分页查询的实例。

    MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...

  3. oracle,mysql,SqlServer三种数据库的分页查询

    MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...

  4. Python实战 :2017国考职业表excel转数据库,再查询生成excel

    最近看2017年国考的职业表,多而杂,不好过滤我想要的信息,特此把它转成Sqlite3数据库,再从数据库里把查询结果导出成excel,方便找职业. (后附上整套代码) 环境:python2.7   x ...

  5. Python 第二模块学习总结

    学习总结: 1.掌握对装饰器的用法 2.掌握生成器的用法 3.掌握迭代器的用法 4.熟悉Python内置函数 5.熟悉Python shutil/shelve/configparse/hashlib/ ...

  6. python 安装模块步骤

    1.下载 pyocr-0.4.1.tar.gz   tar.gz文件  解压  放到 c:/python27 文件夹下面 C:\Python27\pyocr-0.4.1  直接 cmd 命令 进入   ...

  7. python基础-------模块与包(三)正则表达式

    re模块正则表达式 正则表达式常用符号: [ re模块使用方法]: match(string[, pos[, endpos]]) | re.match(pattern, string[, flags] ...

  8. Python第二模块(文件和函数)

    1. 集合操作    集合的特点:无序,不重复的数据组合 集合的作用: 去重,将列表变为集合,就会自动去重 关系测试,测试两组数据之间的交集.差集.并集关系 常用操作: #创建集合 s = {1,2, ...

  9. Python命令模块argparse学习笔记(三)

    参数组 ArgumentParser.add_argument_group(title=None, description=None) 默认情况下,当显示帮助消息时,ArgumentParser将命令 ...

  10. MongoDB创建表步骤,Mongo常用的数据库操作命令,查询,添加,更新,删除_MongoDB 性能监测

    ->use Admin         (切换到创建用户) ->db.TestDb          (创建数据库) ->db.addUser(“userName”,”Pwd”)   ...

随机推荐

  1. 查看树莓派CPU当前工作频率

    参考: https://raspberrypi.stackexchange.com/questions/1219/how-do-i-determine-the-current-mhz /proc/cp ...

  2. MyBatis_07(动态SQL)

    动态SQL: Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能, 它存在的意义是:"为了解决拼接SQL语句字符串时的痛点问题". 一.If if标签可通 ...

  3. springcloud(六) - 配置中心

    功能介绍 设置和业务代码获取配置 功能实现 <!-- 添加configjar --> <dependency> <groupId>org.springframewo ...

  4. spring mvc @Configuration addConverterFactory 无效问题

    spring 版本: 4.3.7 addFormatters(FormatterRegistry registry) 不生效 <!-- 此处与 @EnableWebmvc 冲突, 配置此处后 E ...

  5. regex cheat sheet

    regex pattern visualizer : regex101: build, test, and debug regex https://regex101.com/ regex regex ...

  6. debian11用iso制作本地apt源

    摘抄记录,原文链接: https://blog.csdn.net/leejearl/article/details/122708953?spm=1001.2101.3001.6650.1&ut ...

  7. git(后悔药)版本回退

    版本回退 查看提交记录 git log remotes/origin/test --pretty=oneline (建议获取远程日志记录,防止本地没有更新到最新版本) 如果本地是最新版本可以使用:gi ...

  8. office365启动突然提示注册表错误,无法打开“规则”配置的解决方案

    感觉目前网上的资料,暂无清晰的解答,根据现象分析是outlook的原始邮件文件即psd文件中的规则相关字段存在问题,导致outlook无法打开. 因此网上的各种答疑如重装,调整注册表等等措施都是无效的 ...

  9. Oracle数据库字符集与国家字符集

    一般情况下数据库字符集UTF-8:国家字符集:UTF-16.   服务器端:(oracle服务器端字符集)数据库字符集在创建数据库时指定,在创建后通常不能更改.在创建数据库时,可以指定字符集(CHAR ...

  10. 从create-react-app 学点东西1:web-vitals

    导言 市场中流行的框架有很多地方是值得我们深入的去探究或学习的,<从create-react-app学点东西>这系列文章从create-react-app创建的项目中找出一些重要或者容易忽 ...