文章目录

  • SELECT的基本使用
    • 列的别名
    • 去除重复行
    • 空值
    • 着重号
    • 显示表的结构
    • 运算符
      • 算术运算符
      • 比较运算符
      • 逻辑运算符
      • 位运算符
      • 运算符的优先级
      • 正则表达式查询
    • 五类聚集函数
      • count计数
      • 统计值
      • 分组
        • group by
        • having
        • having和where之间的区别
    • 排序
    • 分页

SELECT的基本使用

SELECT 指定列/*
FROM 表名;

Tips:

一般情况下,最好不要使用通配符‘*’。

虽然*节省输入查询语句的时间,但降低查询和所使用的应用程序的效率。

通配符的优势是:当不知道所需要的列的名称时,可以通过它获取它们。

在生产环境下,不推荐你直接使用 SELECT * 进行查询

列的别名

SELECT last_name AS name, commission_pct comm
FROM employees;
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;

重命名一个列,可(不)使用AS,可(不)使用双引号

去除重复行

SELECT DISTINCT depatment
FROM employees;

空值

  • 所有运算符或者列值遇到null值,运算结果都是null
  • MySQL中,空值!=字符串,空字符串的长度是0,控制的长度为空。MySQL中,空值占用空间。

着重号

#错误
SELECT * FROM ORDER;
#正确
SELECT * FROM `ORDER`;

使用着重号防止表中的字段、表名等和保留字、数据库系统或常用方法冲突

显示表的结构

DESCRIBE employees;
或
DESC employees;
+----------------+-------------+------+-----+---------+-------+
| Field          |        Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id    |      int(6) |   NO | PRI |       0 |       |
| first_name     | varchar(20) |  YES |     |    NULL |       |
+----------------+-------------+------+-----+---------+-------+

各字段的含义:

  • Field:字段名称
  • Type:字段类型
  • Null:表示该列是否可以存储NULL值
  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次
  • Default:表示该列是否有默认值,如果有,那么值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

运算符

算术运算符

+ - * / %

mysql> select 1+2;
+-----+
| 1+2 |
+-----+
|   3 |
+-----+
1 row in set (0.01 sec)mysql> select 1/2;
+--------+
| 1/2    |
+--------+
| 0.5000 |
+--------+
1 row in set (0.00 sec)mysql> select '5a'+2;  -- a=1
+--------+
| '5a'+2 |
+--------+
|      7 |
+--------+
1 row in set, 1 warning (0.00 sec)mysql> select 'a5'+2; -- a=0
+--------+
| 'a5'+2 |
+--------+
|      2 |
+--------+
1 row in set, 1 warning (0.00 sec)

比较运算符

= !=/<> < > <= >=

  • in或者not in

    in用于判断某个列的取值是否为指定的值,使用in运算符时指定的值是离散的数据,不是连续值

select * from tb_student where age in(18,28,15)
含义是 age=18 or age=28 or age=15
select * from tb_student where age not in(18,28,15)
含义是 age!=18 and age!=28 and age!=15
  • between and

    用于判断数据是否在指定的范围内,连续值

select * from tb_student where score between 60 and 85;
  • like/not like

    主要针对字符串类型数据进行模糊查询,通配符_和%

select * from tb_student where name not like '张%';
  • is null/is not null

逻辑运算符

语法 说明
&&或and a and b或者 a && b 逻辑与,a和b都为true,则为true
||或者or a || b或者 a or b 逻辑或,一个为true,则为true
not或者! not a或者!a 逻辑非
mysql> SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;
+----------+---------+------------+------------+
| 1 AND -1 | 0 AND 1 | 0 AND NULL | 1 AND NULL |
+----------+---------+------------+------------+
|        1 |       0 |          0 |       NULL |
+----------+---------+------------+------------+
1 row in set (0.00 sec)mysql> SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;
+---------+--------+-----------+-----------+--------------+
| 1 OR -1 | 1 OR 0 | 1 OR NULL | 0 || NULL | NULL || NULL |
+---------+--------+-----------+-----------+--------------+
|       1 |      1 |         1 |      NULL |         NULL |
+---------+--------+-----------+-----------+--------------+
1 row in set, 2 warnings (0.00 sec)

位运算符

& | ^ ~ >> <<

运算符的优先级

正则表达式查询

五类聚集函数

聚集函数用于对一个集合中的数据进行处理,不是一行一行的数据

count统计行数 sum求和 max最大值 min最小值 avg平均值

count计数

语法:count([all/distinct] 列名称)

select count(*) from tb_student; select count(1) from tb_student; select count(distinct dept) from tb_student; -- 获取系的个数
mysql> select * from tb_student; select count(dept) from tb_student; -- 进行计数统计时,null不参与统计

统计值

用于数值类型的列,不要用于其他类型。max min sum avg

  • max/min可以用于日期类型比较,最新的日期最大
mysql> select max(age) from tb_student;
+----------+
| max(age) |
+----------+
|       19 |
+----------+
1 row in set (0.00 sec) mysql> select min(age) from tb_student;
+----------+
| min(age) |
+----------+
|       16 |
+----------+
1 row in set (0.00 sec)mysql> select avg(age) from tb_student; -- null值不参与计算,除非使用空值处理函数 将其转换为确定数值才可以
+----------+
| avg(age) |
+----------+
|  16.7143 |
+----------+
1 row in set (0.00 sec)mysql> select sum(age),max(age),min(age),avg(age) from tb_student;

分组

group by

可以使用group by子句对查询结果进行分组处理,经常会使用聚集函数

  • 如果不使用分组,聚集函数则用于处理所有查询结果数据

  • 如果使用分组,则分别作用于各个分组查询的结果数据

获取男女生的平均年龄

mysql> select sex,avg(age) from tb_student group by sex;
+------+----------+
| sex  | avg(age) |
+------+----------+
|    1 |  17.0000 |
|    0 |  16.0000 |
| NULL |  16.0000 |
+------+----------+
3 rows in set (0.00 sec)

having

可以对分组进行条件选择

需要获取人数多余2人的不同性别学生的平均年龄

  • 按照性别分组

  • 要统计的组必须人数多余2人,小于等于2人的分组不进行显示处理

select sex,avg(age) from tb_student group by sex having count(1)>2;

having和where之间的区别

只有满足条件的数据才会输出显示

最大区别在于:作用的对象不同

  • where子句用于基表或者视图,从中选择满足条件的元组

  • having子句用于分组,从多个分组中选择满足条件的分组

排序

ORDER BY
SELECT 指定列
FROM 表名
ORDER BY 某一列 ASC[升序]/DESC[降序]
#ORDER BY 在SELECT 语句的结尾
#多列排序,按顺序以此排列

分页

LIMIT[位置位移量] 行数
-- 前10条记录:
SELECT * FROM 表名 LIMIT 0,10;
或者SELECT * FROM 表名 LIMIT 10;
-- 第11至20条记录:
SELECT * FROM 表名 LIMIT 10,10;
-- 第21至30条记录:
SELECT * FROM 表名 LIMIT 20,10;

MySQL 8.0中可以使用“LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT 4,3;”返回的结果相同。

数据库学习——SQL之SELECT查询语句相关推荐

  1. sql select 语句_学习SQL:SELECT语句

    sql select 语句 The SELECT statement is probably the most important SQL command. It's used to return r ...

  2. 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...

  3. SQL语句基础4/select查询语句练习

    SQL语句基础4 注:除指明表格之外所有的数据来源于Oracle数据库自带的SCOTT用户表. 1. 表连接(99语法) 1.1 内连接 cross join语法:cross join即交叉连接,用于 ...

  4. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  5. mysql 伪表查询语句_MySQL数据库之select查询语句

    select查询语句 语法 select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制] ...

  6. python封装sql脚本 github_python-SQL查询语句精华使用简要

    一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名 ...

  7. 了解SQL Server SELECT INTO语句

    Hey, readers! Hope you all are well. In the series of SQL SERVER, today we will be having a look at ...

  8. SQL:简单查询语句操作实例

    一.SQL Server简单查询语句 背景知识: 一.查询:SQL中最基本.最常用的操作,用来对数据库进行查询 二.表达式: select 属性列 from 表 where 筛选条件 group by ...

  9. 实验二 SQL 语言——SELECT 查询操作(第一部分)

    SQL 语言--SELECT 查询操作 实验目的: -了解查询的概念和方法:-掌握 SQL Server 集成管理器查询子窗口中执行 SELECT 操作的方法:-掌握 SELECT 语句在单表查询中的 ...

  10. 基于SqlServer的DML(数据查询)实验,掌握select查询语句的使用、掌握有无条件查询、结果排序与分组、掌握视图用法

    实验三 数据库的查询一.实验目的及要求 1. 熟练掌握SELECT查询语句的使用 2. 掌握无条件.有条件查询及查询结果排序与分组 3. 掌握视图的用法二.实验任务 1.掌握查询语句的一般格式. 2. ...

最新文章

  1. debian10 更换阿里源
  2. AAAI 2021 | 时间序列相关论文汇总
  3. 使用WakeLock将Android应用程序保持后台唤醒
  4. C#窗体中的textBox怎么设置为密码框
  5. java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...
  6. 设计软件哪里找?图片素材哪里找?
  7. vue Class 与 Style 绑定
  8. 微软高管谈微软远程办公思考与实践,值得每个企业看看
  9. 一步步重构容器实现Spring框架——彻底封装,实现简单灵活的Spring框架(十一)...
  10. 监听短信增删以及短信会话增删
  11. PAT甲题题解-1010. Radix (25)-二分搜索
  12. 老年手机计算机的按键怎么调至桌面,怎样设置一键回到桌面啊,就是这个图标(如图)...
  13. 设计模式-建造者模式(Builder Pattern)
  14. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
  15. viewDidUnload方法的离去和替代
  16. oracle性能检测sql语句
  17. 机器学习前沿热点--Deep Learning
  18. Win10完美运行红色警戒2的安装包和补丁_我是亲民_新浪博客
  19. transition使用
  20. unity anysdk android,Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件

热门文章

  1. Unity3d 局域网小游戏DEMO学习
  2. iperf 的下载和使用
  3. 拆解兼容Qi充电标准的三星无线充电器
  4. Echarts迁徙图简单图片实现
  5. 基于C++编译的车牌识别系统
  6. ACDSee Photo Studio 7 Mac(数字图像处理软件)
  7. 文件传输的服务器软件有哪些,好用的数据传输软件有哪些?专业的数据传输软件排行榜...
  8. 深度linux 官网,深度OS
  9. 中图杯获奖作品计算机组,地理奥赛网-首页
  10. 使用phpquery采集小说