SQL语句(一)基础查询与过滤数据
一、数据库测试表
首先这里给出需要使用到的数据库表:
链接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg
提取码:gbb4
里面是一个.sql文件,直接运行即可得到如下几个测试表:


二、基础查询
1. 获得需要的记录的特定字段
语法:SELECT后加上需要的结果映射到的字段,若为*则为选取所有字段。
#单个字段查询
SELECT last_name
FROM employees;

#多个字段
SELECT last_name, salary, email
FROM employees;

#所有字段
SELECT *
FROM employees;
2. 查询常量值
#查询常量值
SELECT 100;
SELECT "john";
3. 查询表达式
例:
SELECT 100%98;
4. 查询函数
例:
SELECT VERSION();

5. 起别名
为查询结果的列起一个新的名字,语法:
SELECT 表中的列名 AS 自己起的新名字
FROM 表名;
或者省略AS:
SELECT 表中的列名 自己起的新名字
FROM 表名;
例:
SELECT last_name AS 姓, first_name AS 名
FROM employees;
SELECT last_name 姓, first_name 名
FROM employees;

6. 去重
SELECT DISTINCT 字段名
FROM 表名;
实际过程:
- 查询到对应的记录
- 映射到对应的字段
- 最终结果去重
例:
SELECT DISTINCT department_id
FROM employees;

7. CONCAT函数的简单使用
SELECT CONCAT( last_name, first_name ) AS 姓名
FROM employees;
实际过程:
- 到表中没有这个字段,然后为所有的记录添加这个新字段,内容为last_name字段和first_name字段的链接
- 查出相应的记录
- 将所有记录映射到姓名字段中
运行结果:

三、过滤数据
主要语法:
SELECT 查询列表
FROM 表名
WHERE 条件;
大纲
- 按条件表达式筛选:
- 简单条件运算符:
> < = != <> >= <=
- 简单条件运算符:
- 逻辑表达式:
&& || !AND OR NOT
- 模糊查询:
LIKE- 一般和通配符搭配使用
- 通配符:
%任意多个字符,包含0个字符_任意单个字符
BETWEEN AND- 简洁
- 闭区间
- 不可调换顺序
IN- 简洁
IN列表的值类型必须统一或兼容
IS NULL- 可用
IS NULL和IS NOT NULL来判断是否为空
- 可用
1. 按条件表达式筛选
查询工资>12000的员工信息:
SELECT *
FROM employees
WHERE salary > 12000;
查询部门编号不等于90号的员工名和部门编号
SELECT last_name, department_id
FROM employees
WHERE department_id <> 90
ORDER BY department_id; #排序

2. 使用逻辑表达式
查询工资在10000~20000之间的员工的员工名,工资及奖金
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
部门编号不在90到110之间,或者工资高于15000的员工信息:
SELECT *
FROM employees
WHERE department_id<90
OR department_id>110
OR salary>15000
或
SELECT *
FROM employees
WHERE NOT(department_id>=90 AND department_id<=110)
OR salary>15000
3. 模糊查询
LIKE
员工名中包含字符a的员工信息:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

员工名中第三个字符为n,第五个字符为t的员工名和工资:
SELECT last_name, salary
FROM employees
WHERE last_name LIKE '__n_t%';

员工名中第二个字符为_的员工名:
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';# 转义
BETWEEN AND
员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employee_id >= 100 AND employee_id <= 120;
#================使用BETWEEN AND================
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 120;
IN
查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个的员工名和工种编号
SELECT last_name, job_id
FROM employees
WHERE job_id IN ('IT_PROG','AD_VP','AD_PRES');
IS NULL
查询没有奖金的员工名和奖金律
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct IS NULL;

查询有奖金的员工名和奖金律
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

安全等于 <=>
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct <=> NULL;
SQL语句(一)基础查询与过滤数据的更多相关文章
- sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)
1 基础 1.说明:创建数据库 CREATE DATABASE database-name charset=utf8 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...
- [转]在Excel中使用SQL语句实现精确查询
本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...
- 使用SQL语句清空数据库所有表的数据
使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...
- 使用传入的总记录数实现一条sql语句完成分页查询
使用传入的总记录数实现一条sql语句完成分页查询 问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...
- mongodb 跟踪SQL语句及慢查询收集
有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行 ./mongostat -port 端口号 ...
- 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中
执行了save()方法 sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...
- 在JDBC中实现SQL语句的模糊查询
在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- 使用SQL语句的子查询批量复制表数据
批量复制表数据这里有两种方法,下面分别来介绍这两种方法: 一.手动创建新表,然后复制数据 如果是要复制整个表的话,可以使用SQL SERVER自动生成CREATE脚本: 然后在脚本中改改表名就可以了, ...
随机推荐
- Pytorch项目基本结构
梳理一下Pytorch项目的基本结构(其实TF的也差不多是这样,这种思路可以迁移到别的深度学习框架中) 结构树 -------checkpoints #存放训练完成的模型文件 ----xxx.pk ...
- 玩转STM32MP157- 使用fbtft驱动 lcd st7735r
什么是fbtft fbtft 在 github 中的介绍是" Linux Framebuffer drivers for small TFT LCD display modules,翻译过来 ...
- 什么是DDoS黑洞路由?
1. 什么是DDoS黑洞路由? DDoS黑洞路由/过滤(有时称为黑孔)是缓解DDoS攻击的一种对策,网络流量将被路由到"黑洞"中并且丢失.如果在没有特定限制条件下实施黑洞过滤,合法 ...
- 乘风破浪,Windows11设计和开发指导,全新图标字体和云母材质
Windows11全新的布局设计 Windows 11全新的布局设计已设计为支持现代应用体验.渐进的圆角.嵌套元素和一致的排水沟相结合,营造出柔和.平静.平易近人的效果,强调目的的统一和易用性. ht ...
- win10 共享文件夹设置无需用户名密码访问
文件夹设置共享,添加Everyone 文件夹右键属性,选择共享,添加Everyone,添加后可设置读写权限. 权限添加Everyone,不然没有权限访问 设置安全策略 Win+R 打开运行,输入 se ...
- 01_JVM与Java体系结构
JVM发展历程 Sun Classic VM Exact VM 为了解决上一个虚拟机问题,jdk1.2时,sun提供了此虚拟机. Exact Memory Management:准确式内存管理 SUN ...
- Java:代码高效优化
本文转自阿里技术站,感谢阿里前辈提供的技术知识,微信关注 "阿里技术" 公众号即可实时学习. 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创 ...
- rosbag 初尝试
overview ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件.它提供了硬件抽象.设备驱动.函数库.可视化工具. ...
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 方阵旋转(代码填空)
方阵旋转 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 转置后变为: 1 5 9 13 2 ...
- buu crackRTF
一.无壳,拖入ida,静态编译一下 整体逻辑还是很清晰,这里我的盲区是那个加密函数,是md5,没看出来,内存地址看错了,之前用黑盒动调一下,发现猜不出来,看某位wp发现有的老哥,直接sha1爆破的,狠 ...