美文网首页
单表查询

单表查询

作者: 超音速6 | 来源:发表于2020-03-17 23:40 被阅读0次

创建数据库

CREATE DATABASE chapter04;

选择数据库

USE chapter04;

创建表

CREATE TABLE student(
id INT(3) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
grade FLOAT,
gender CHAR(2)
);

插入数据

INSERT INTO student(name,grade,gender) VALUES
('songjiang',40,'男'),
('wuyong',100,'男'),
('qinming',90,'男'),
('husanniang',88,'女'),
('sunerniang',66,'女'),
('wusong',86,'男'),
('linchong',92,'男'),
('yanqing',90,NULL);

SELECT 语句

# 在 SELECT 语句中指定所有字段
`SELECT id,name,grade,gender FROM student;`
# 在 SELECT 语句中使用星号(“*”)通配符代替所有字段
`SELECT * FROM student;`
# 查询指定字段
`SELECT name,gender FROM student;`

带关系运算符的查询

# 查询student表中id为4的学生姓名
SELECT id,name FROM student WHERE id=4;
# 使用SELECT语句查询name为“wusong”的学生性别
SELECT name,gender FROM student WHERE name='wusong';
# 查询student表中grade大于80的学生姓名
SELECT name,grade FROM student WHERE grade>80;

带IN关键字的查询

# 查询student表中id值为1、2、3的记录
SELECT id,grade,name,gender FROM student WHERE id IN (1,2,3);
# 查询student表中id值不为1、2、3的记录
SELECT id,grade,name,gender FROM student WHERE id NOT IN (1,2,3);

带BETWEEN AND关键字的查询

# 查询student表中id值在2~5之间的学生姓名
SELECT id,name FROM student WHERE id BETWEEN 2 AND 5;
# 查询student表中id值不在2~5之间的学生姓名
SELECT id,name FROM student WHERE id NOT BETWEEN 2 AND 5;

空值查询

# 查询student表中gender为空值的记录
SELECT id,name grade,gender FROM student WHERE gender IS NULL;
# 查询student表中gender不为空值的记录
SELECT id,name,grade,gender FROM student WHERE gender IS NOT NULL;

带DISTINCT关键字的查询

SELECT DISTINCT gender FROM student;

添加一条新数据

INSERT INTO student(name,grade,gender) VALUES ('songjiang',20,'男');

DISTINCT关键字作用于多个字段

SELECT DISTINCT gender,name FROM student;

带LIKE关键字的查询

百分号(%)通配符

# 查找student表中name字段值以字符“s”开头的学生id
SELECT id,name FROM student WHERE name LIKE "s%";
# 查询student表中name字段值以字符“w”开始,以字符“g”结束的学生id
SELECT id,name FROM student WHERE name LIKE 'w%g';
# 查询student表中name字段值包含字符“y”的学生id
SELECT id,name FROM student WHERE name LIKE '%y%';
# 查询student表中name字段值不包含字符“y”的学生id
SELECT id,name FROM student WHERE name NOT LIKE '%y%';

下划线(_)通配符

# 查询student表中name字段值以字符串“wu”开始,以字符串“ong”结束,并且两个字符串之间只有一个字符的记录
SELECT * FROM student WHERE name LIKE  'wu_ong';
# 查询student表中name字段值包含7个字符,并且以字符串“ing”结束的记录
SELECT * FROM student WHERE name LIKE '____ing';

添加一条新数据

INSERT INTO student(name,grade,gender) VALUES ('sun%er',95,'男');

使用百分号和下划线通配符进行查询操作

# 查询student表中name字段值包括“%”的记录
SELECT * FROM student WHERE name LIKE '%\%%';

带AND关键字的多条件查询

# 查询student表中id字段值小于5,并且gender字段值为“女”的学生姓名
SELECT id,name FROM student WHERE id<5 AND gender='女';
# 查询student表中id字段值在1、2、3、4之中,name字段值以字符串“ng”结束,并且grade字段值小于80的记录
SELECT id,name,grade,gender FROM student WHERE id in (1,2,3,4) AND name LIKE '%ng' AND grade<80;

带OR关键字的多条件查询

# 查询student表中id字段值小于3或者gender字段值为“女”的学生姓名
SELECT id,name,gender FROM student WHERE id<3 OR gender='女';
# 查询student表中满足条件name字段值以字符“h”开始,或者gender字段值为“女”,或者grade字段值为100的记录
SELECT id,name,grade,gender FROM student WHERE name LIKE 'h%' OR gender='女' OR grade=100;

OR和AND关键字一起使用的情况

需要注意的是,AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式

# 查询student表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为100的学生姓名
SELECT name,grade,gender FROM student WHERE (gender='女' OR gender='男') AND grade=100;

聚合函数

  1. COUNT()函数
# 查询student表中一共有多少条记录
SELECT COUNT(*) FROM student;
  1. SUM()函数
# 求出student表中grade字段的总和
SELECT SUM(grade) FROM student;
  1. AVG()函数
# 求出student表中grade字段的平均值
SELECT AVG(grade) FROM student;
  1. MAX()函数
# 求出student表中所有学生grade字段的最大值
SELECT MAX(grade) FROM student;
  1. MIN()函数
求出student表中grade字段的最小值
SELECT MIN(grade) FROM student;

对查询结果排序

# 查询出student表中的所有记录,并按照grade字段进行排序
SELECT * FROM student ORDER BY grade;
# 查询出student表中的所有记录,使用参数ASC按照grade字段升序方式排序
SELECT * FROM student ORDER BY grade ASC;
# 查询出student表中的所有记录,使用参数DESC按照grade字段降序方式排序
SELECT * FROM student ORDER BY grade DESC;
# 查询student表中的所有记录,按照gender字段的升序和grade字段的降序进行排序
SELECT * FROM student ORDER BY gender ASC,grade DESC;

分组查询

  1. 单独使用GROUP BY分组
# 查询student表中的记录,按照gender字段值进行分组
SELECT * FROM student GROUP BY gender;
  1. GROUP BY和聚合函数一起使用
# 将student表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生
SELECT COUNT(*),gender FROM student GROUP BY gender;
  1. GROUP BY和HAVING关键字一起使用
# 将student表按照genderr字段进行分组查询,查询出grade字段值之和小于300的分组
SELECT sum(grade),gender FROM student GROUP BY gender HAVING SUM(grade)<300;

使用LIMIT限制查询结果的数量

# 查询student表中的前4条记录
SELECT * FROM student LIMIT 4;
# 查询student表中grade字段值从第5位到第8位的学生(从高到底)
SELECT * FROM student ORDER BY grade DESC LIMIT 4,4;

函数

# 查询student表中的所有记录,将各个字段使用下划线“_”链接起来
SELECT CONCAT(id,'_',name,'_',grade,'_',gender) FROM student;
# 查询student表中的id和gender字段值,如果gender字段的值位“男”则返回1,如果不为“男”则返回0
SELECT id,IF(gender='男',0,1) FROM student;

为表和字段取别名

  1. 为表取别名
# 为student表起一个别名s,并查询student表中gender字段值为“女”的记录
SELECT * FROM student AS s WHERE s.gender="女";
  1. 为字段取别名
# 查询student表中的所有记录的name和gender字段值,并未这两个字段起别名stu_name和stu_gender
SELECT name AS stu_name,gender stu_gender FROM student;

相关文章

  • spring-data-jpa 复杂查询:使用

    单表查询 多表查询

  • 单表数据查询

    单表查询示例Student表: Student表 Course表 SC表 查询若干列 查询指定列 查询Studen...

  • 延迟加载

    意义 在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快。 如果查询单...

  • SQL常用操作

    1、单表查询 SELECT 基本信息表.姓名,基本信息表.性别FROM 基本信息表 2、单表条件查询 SELECT...

  • SQL查询单表数据(一)

    本节讲述 基本的 select 查询单表数据语句 1 从单表中查询所有的行和列 查询表中所有的数据 在 SQL 中...

  • Python学习笔记十九(MySQL、SQL、查找、单表查询)

    查找 查找分为单表查询与多表查询 单表查询 查看现有数据表 查看所有数据 查看某些字段 比如我只关心title 字...

  • 查询SQL

    单表查询: 常规查询: SELECT 列名 From 表名 去重式查询: DISTINCT SELECT DIST...

  • mysql表格查询命令

    全表查询 语法: Select * from 表名称; 描述: 查询指定表中的所有数据 案例: 单条件查询 语法:...

  • Mysql索引优化

    1、单表索引优化 单表索引优化分析 创建表 建表 SQL 表中的测试数据 查询案例 查询category_id为1...

  • SQL干货篇之查询数据

    单表查询 只在一个表中查询数据 多表查询 同时查询多个表 说明:这是在学生表student和成绩表SC中查询成绩大...

网友评论

      本文标题:单表查询

      本文链接:https://www.haomeiwen.com/subject/mdkzehtx.html