前言
作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的 SQL 查询语法必须要掌握。最近有部分做测试小伙伴表示 SQL 查询不太会,问我有没有 SQL 查询语法这一块的文档可以学习,于是小编就整理了这篇超详细的 SQL 查询语法教程,来给大家参考学习!
1、数据准备
创建数据库、数据表
-- 创建数据库
create database test1 charset=utf8;
-- 使用数据库
use test1;
-- 创建students表
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','中性','保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
学生表字段说明
-- 创建classes表
create table classes (
id int unsigned auto_increment primary key not null,
name varchar(30) not null
);
班级表字段说明
准备数据
-- 向classes表中插入数据
insert into classes values (6, "python01"), (0, "python02");
-- 向students表中插入数据
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月',18,180.00,2,2,1),
(0,'项羽',29,185.00,1,1,0),
(0,'刘刘',59,175.00,1,2,1),
(0,'王老麻子',38,160.00,2,1,0),
(0,'老李',28,150.00,4,2,1),
(0,'老张',18,172.00,2,1,1),
(0,'老牛',36,NULL,1,1,0),
(0,'张飞',58,181.00,1,2,0),
(0,'关羽',74,166.00,2,2,0),
(0,'刘备',66,162.00,3,3,1),
(0,'孙权',77,180.00,2,4,0),
(0,'曹操',66,170.00,1,4,0),
(0,'周瑜',55,176.00,2,5,0);
2、基本查询
- 查询所有字段
select * from 表名;
例:
select * from students;
- 查询指定字段
select 列1,列2,... from 表名;
例:
select name from students;
- 使用 as 给字段起别名
select id as 序号, name as 名字, gender as 性别 from students;
- 可以通过 as 给表起别名
-- 如果是单表查询 可以省略表明
select id, name, gender from students;
-- 表名.字段名
select students.id,students.name,students.gender from students;
-- 可以通过 as 给表起别名
select s.id,s.name,s.gender from students as s;
- 消除重复行
- 在 select 后面列前使用 distinct 可以消除重复的行
select distinct 列1,... from 表名;
例:
select distinct gender from students;
3、条件查询
使用 where 子句对表中的数据筛选,结果为 true 的行会出现在结果集中