【python】第二模块 步骤一 第三课、数据库的基本查询
第三课、数据库的基本查询
一、课程介绍
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;
查询语句的字句执行顺序
- 词法分析与优化——读取SQL语句
- FROM——选择数据来源
- 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】第二模块 步骤一 第三课、数据库的基本查询的更多相关文章
- MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法
在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...
- oracle,mysql,SqlServer三种数据库的分页查询的实例。
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...
- oracle,mysql,SqlServer三种数据库的分页查询
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...
- Python实战 :2017国考职业表excel转数据库,再查询生成excel
最近看2017年国考的职业表,多而杂,不好过滤我想要的信息,特此把它转成Sqlite3数据库,再从数据库里把查询结果导出成excel,方便找职业. (后附上整套代码) 环境:python2.7 x ...
- Python 第二模块学习总结
学习总结: 1.掌握对装饰器的用法 2.掌握生成器的用法 3.掌握迭代器的用法 4.熟悉Python内置函数 5.熟悉Python shutil/shelve/configparse/hashlib/ ...
- python 安装模块步骤
1.下载 pyocr-0.4.1.tar.gz tar.gz文件 解压 放到 c:/python27 文件夹下面 C:\Python27\pyocr-0.4.1 直接 cmd 命令 进入 ...
- python基础-------模块与包(三)正则表达式
re模块正则表达式 正则表达式常用符号: [ re模块使用方法]: match(string[, pos[, endpos]]) | re.match(pattern, string[, flags] ...
- Python第二模块(文件和函数)
1. 集合操作 集合的特点:无序,不重复的数据组合 集合的作用: 去重,将列表变为集合,就会自动去重 关系测试,测试两组数据之间的交集.差集.并集关系 常用操作: #创建集合 s = {1,2, ...
- Python命令模块argparse学习笔记(三)
参数组 ArgumentParser.add_argument_group(title=None, description=None) 默认情况下,当显示帮助消息时,ArgumentParser将命令 ...
- MongoDB创建表步骤,Mongo常用的数据库操作命令,查询,添加,更新,删除_MongoDB 性能监测
->use Admin (切换到创建用户) ->db.TestDb (创建数据库) ->db.addUser(“userName”,”Pwd”) ...
随机推荐
- [转载] Image Types
转载自https://www.mathworks.com/help/matlab/creating_plots/image-types.html Image Types Indexed Images ...
- tool script to convert back slash
Back slash is used in windows, which makes so many headache for me. Then an idea came to my mind. It ...
- Linux 查找并杀死进程
1.查找包含java的所有进程 ps -ef | grep java 2.根据端口号查看进程号 lsof -i:8080 sudo lsof -i:8080 3.杀死进程 kill -9 proces ...
- Vue + Element table中的某行触发enter事件后,使该行disabled
废话不罗嗦,上硬菜. 1.html下: <el-table-column label="名称" sortable> <template slot-scope=&q ...
- noi 2.1基本算法之枚举
7647:余数相同问题 1.描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同. 请问满足上述条件的x的最小值是多少? 数据保证x有解. 2.输入 ...
- codeforces 165C Another Problem on Strings 二分or双指针
题意:给一个01字符串s,找出s包含恰好k个1的连续字串个数 解法: 显然是简单的双指针or二分的题,但由于k=0的存在,使得双指针的边界条件十分难写,所以应该选择二分! #include<bi ...
- git切换到某个tag
git checkout tags/some_tag_name -b a_new_branch_name
- CentOS 6.7 hadoop free版本Spark 1.6安装与使用
最近的工作主要围绕文本分类,当前的解决方案是用R语言清洗数据,用tm包生成bag of words,用libsvm与liblinear训练模型.这个方案可以hold住6/70万的训练集: LIBLIN ...
- db2存储过程很慢如何查看
存储过程很慢 ,如何处理? #查看包的情况select r.routineschema, r.routinename, r.routinemodulename, rd.bname as package ...
- fatal error: openssl/ssl.h: No such file or director
$ sudo apt-get install libssl-dev