【7】SQL 语句基础应用

SQL 语句基础应用

  • where (筛选)
    • [where 子句可使用到运算符](#where 子句可使用到运算符)
      • 查询表中所有的数据
      • [查询表中的数据,必须满足 1=1(相当于恒成立)](#查询表中的数据,必须满足 1=1(相当于恒成立))
      • [查询表中的 分数(score) 大于 80 分的学生](#查询表中的 分数(score) 大于 80 分的学生)
      • [查询表中 名称(name) 是 赵六 的数据](#查询表中 名称(name) 是 赵六 的数据)
      • [查询表中 名称(name) 不等于 哈哈 的数据.](#查询表中 名称(name) 不等于 哈哈 的数据.)
      • [查询表中 分数(score) 小于等于 60分 的学生数据](#查询表中 分数(score) 小于等于 60分 的学生数据)
  • 逻辑运算符
    • 查询
      • [查询满足 id 大于 3 并且 分数 大于等于 80 分的学生信息](#查询满足 id 大于 3 并且 分数 大于等于 80 分的学生信息)
      • [查询满足 id 大于 3 或者 分数大于等于 80 分的学生信息](#查询满足 id 大于 3 或者 分数大于等于 80 分的学生信息)
      • [查询名称(name) 不是 哈哈 的学生信息](#查询名称(name) 不是 哈哈 的学生信息)

where (筛选)

在 MySQL 数据表中可以使用 SQL select 语句来读取数据。如果需要有条件的从表中获取数据,可将 where 子句添加到 select 语句中。

语法如下:

sql 复制代码
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [into_option]
    [FOR {UPDATE | SHARE}
        [OF tbl_name [, tbl_name] ...]
        [NOWAIT | SKIP LOCKED]
      | LOCK IN SHARE MODE]
    [into_option]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}

SELECT is used to retrieve rows selected from one or more tables, and
can include UNION operations and subqueries. Beginning with MySQL
8.0.31, INTERSECT and EXCEPT operations are also supported. The UNION,
INTERSECT, and EXCEPT operators are described in more detail later in
this section. See also
https://dev.mysql.com/doc/refman/8.0/en/subqueries.html.

A SELECT statement can start with a WITH clause to define common table
expressions accessible within the SELECT. See
https://dev.mysql.com/doc/refman/8.0/en/with.html.

The most commonly used clauses of SELECT statements are these:

o Each select_expr indicates a column that you want to retrieve. There
  must be at least one select_expr.

o table_references indicates the table or tables from which to retrieve
  rows. Its syntax is described in [HELP JOIN].

o SELECT supports explicit partition selection using the PARTITION
  clause with a list of partitions or subpartitions (or both) following
  the name of the table in a table_reference (see [HELP JOIN]). In this
  case, rows are selected only from the partitions listed, and any
  other partitions of the table are ignored. For more information and
  examples, see
  https://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.

o The WHERE clause, if given, indicates the condition or conditions
  that rows must satisfy to be selected. where_condition is an
  expression that evaluates to true for each row to be selected. The
  statement selects all rows if there is no WHERE clause.

  In the WHERE expression, you can use any of the functions and
  operators that MySQL supports, except for aggregate (group)
  functions. See
  https://dev.mysql.com/doc/refman/8.0/en/expressions.html, and
  https://dev.mysql.com/doc/refman/8.0/en/functions.html.

SELECT can also be used to retrieve rows computed without reference to
any table.

URL: https://dev.mysql.com/doc/refman/8.0/en/select.html

where 子句可使用到运算符


初始化表数据

sql 复制代码
[root@localhost][db_test]> create table tb_student(
    -> id int not null auto_increment primary key,
    -> name varchar(20),
    -> score int
    -> );
Query OK, 0 rows affected (0.00 sec)

[root@localhost][db_test]> 
[root@localhost][db_test]> insert into tb_student(name, score) values('张三', 95);
Query OK, 1 row affected (0.00 sec)

[root@localhost][db_test]> insert into tb_student(name, score) values('李四', 90);
Query OK, 1 row affected (0.00 sec)

[root@localhost][db_test]> insert into tb_student(name, score) values('王五', 85);
Query OK, 1 row affected (0.00 sec)

[root@localhost][db_test]> insert into tb_student(name, score) values('赵六', 80);
Query OK, 1 row affected (0.01 sec)

[root@localhost][db_test]> insert into tb_student(name, score) values('哈哈', 50);
Query OK, 1 row affected (0.00 sec)

[root@localhost][db_test]> 

查询表中所有的数据

sql 复制代码
[root@localhost][db_test]> select * from tb_student;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
|  5 | 哈哈   |    50 |
+----+--------+-------+
5 rows in set (0.00 sec)

[root@localhost][db_test]> 

查询表中的数据,必须满足 1=1(相当于恒成立)

sql 复制代码
[root@localhost][db_test]> select * from tb_student where 1 = 1;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
|  5 | 哈哈   |    50 |
+----+--------+-------+
5 rows in set (0.00 sec)

[root@localhost][db_test]> 

查询表中的 分数(score) 大于 80 分的学生

sql 复制代码
[root@localhost][db_test]> select * from tb_student where score > 80;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
+----+--------+-------+
3 rows in set (0.00 sec)

[root@localhost][db_test]> 

查询表中 名称(name) 是 赵六 的数据

sql 复制代码
[root@localhost][db_test]> select * from tb_student where name = '赵六';
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  4 | 赵六   |    80 |
+----+--------+-------+
1 row in set (0.00 sec)

[root@localhost][db_test]> 

查询表中 名称(name) 不等于 哈哈 的数据.

sql 复制代码
[root@localhost][db_test]> select * from tb_student where name != '哈哈';
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
+----+--------+-------+
4 rows in set (0.00 sec)

[root@localhost][db_test]> 

查询表中 分数(score) 小于等于 60分 的学生数据

sql 复制代码
[root@localhost][db_test]> select * from tb_student where score <= 60;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  5 | 哈哈   |    50 |
+----+--------+-------+
1 row in set (0.00 sec)

[root@localhost][db_test]> 

逻辑运算符

查询

查询满足 id 大于 3 并且 分数 大于等于 80 分的学生信息

sql 复制代码
[root@localhost][db_test]> select * from tb_student where id > 3 and score >= 80;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  4 | 赵六   |    80 |
+----+--------+-------+
1 row in set (0.00 sec)

[root@localhost][db_test]> 

查询满足 id 大于 3 或者 分数大于等于 80 分的学生信息

sql 复制代码
[root@localhost][db_test]> select * from tb_student where id > 3 or score >= 80;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
|  5 | 哈哈   |    50 |
+----+--------+-------+
5 rows in set (0.00 sec)

[root@localhost][db_test]> 

查询名称(name) 不是 哈哈 的学生信息

sql 复制代码
[root@localhost][db_test]> select * from tb_student where not name = '哈哈';
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
+----+--------+-------+
4 rows in set (0.00 sec)

[root@localhost][db_test]> 

上述查询SQL,等同于 如下:

sql 复制代码
[root@localhost][db_test]> select * from tb_student where name <> '哈哈';
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  1 | 张三   |    95 |
|  2 | 李四   |    90 |
|  3 | 王五   |    85 |
|  4 | 赵六   |    80 |
+----+--------+-------+
4 rows in set (0.00 sec)

[root@localhost][db_test]> 
相关推荐
想摆烂的不会研究的研究生24 分钟前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
码熔burning35 分钟前
MySQL 8.0 新特性爆笑盘点:从青铜到王者的骚操作都在这儿了!(万字详解,建议收藏)
数据库·mysql
猫头虎42 分钟前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
@LetsTGBot搜索引擎机器人3 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
计算机毕设VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐3 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
Tony Bai4 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072015 小时前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风5 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存