1.基本查询语句
/* ---第2关 简单查询--- */
/* SQL注意事项:SQL子句之间可以换行或者空格,但是不能隔一行 */
/* 1.基本查询语句 */
select 姓名,性别
from student;
-- (*)查询出全部列
select *
from student;
-- as为列设定别名,别名加不加引号都可以
select 姓名 as name,性别 as '人类性别'
from student;
-- distinct删除重复数据,只保留一个
select distinct 姓名
from student;
-- distinct后面若有两个列名,则当两列数据都相同时才算重复
select distinct 学号,姓名
from student;
运行结果:
简单查询的练习题:https://sqlzoo.net/wiki/SELECT_basics/zh
答案:https://mp.weixin.qq.com/s/dSUs63fvh_4OppaToJkH0w
2.指定查询条件
/* -----------------------------2.指定查找条件where---------------------- */
-- select子句最后运行,其余子句按照书写顺序运行
select 姓名,学号
from student
where 姓名='猴子'
运行结果:
3.运算符
/* -----------------------------3.运算符--------------------------------- */
-- (1)算数运算符:+-*/运算
-- 如(1+2)*3;
-- 注意:5+Null=Null,即任何数与空值相加等于空值
select 学号,成绩,
成绩/100 as '百分比成绩'
from score;
-- (2)比较运算符:=,>,>=,<,<=,不等于<>
select 学号,成绩
from score
where 成绩<60;
select 姓名,出生日期
from student
where 出生日期<'1990-01-01';
/*
注意事项:
字符串比较规则:按照字符串顺序进行比较,
例如:'10'<'2',因为'10'的第一个字符为1,小于2
因此若出现数字小的排前面,就要去检查以下是不是把数字的格式设置成了字符串类型varchar
*/
-- 如何查询Null值
select 教师号,教师姓名
from teacher
where 教师姓名 is null;
select 教师号,教师姓名
from teacher
where 教师姓名 is not null;
运行结果:
/* -----------------------------3.运算符--------------------------------- */
/* ----(3)逻辑运算符 not,and,between,or,in ----*/
-- not 否定某一条件
select 学号,成绩
from score
where not 成绩>=60;
-- where 成绩<60;
-- and 并且,两个条件都需要满足
select 学号,成绩
from score
where 成绩>=60 and 成绩<=90;
select 姓名,性别
from student
where 性别='男' and 姓名 in ('马云','猴子');
-- where 性别='男' and (姓名='马云' or 姓名='猴子');
-- between,范围查询,包括边界值
select 学号,成绩
from score
where 成绩 between 60 and 90;
-- where 成绩>=60 and 成绩<=90;
-- or 或者,只要一个条件成立即可
select 学号,成绩
from score
where 成绩<60 or 成绩>90;
-- in:or的简便书写
select 姓名,性别
from student
where 姓名 in ('马云','猴子');
-- not in
select 姓名,性别
from student
where 姓名 not in ('马云','猴子');
运行结果:
运算符练习题:https://sqlzoo.net/wiki/SQLZOO:SELECT_from_WORLD_Tutorial/zh
答案:https://mp.weixin.qq.com/s/dSUs63fvh_4OppaToJkH0w
4.字符串模糊查询
/* -----------------------------4.字符串模糊查询 like--------------------------------- */
/*----------%表示任意字符串---------*/
-- 查询姓猴的学生名单
select *
from student
where 姓名 like '猴%';
-- 查询姓名中最后一个字是猴的学生名单
select *
from student
where 姓名 like '%猴';
-- 查询姓名中间有猴的学生名单
select *
from student
where 姓名 like '%猴%';
/* -----------------------------------------------*/
/* _ 一个下划线表示任意一个字符串*/
-- 查询姓王的学生名单,并且姓名是3个字的
select *
from student
where 姓名 like '王__'; -- 这里是两个下划线
运行结果:
字符串模糊查询练习题:https://sqlzoo.net/wiki/SELECT_names/zh
答案:https://mp.weixin.qq.com/s/dSUs63fvh_4OppaToJkH0w
5.注意事项
(1)SQL注意事项:SQL子句之间可以换行或者空格,但是不能隔一行
(2)select子句最后运行,其余子句按照书写顺序运行
(3)字符串比较规则:按照字符串顺序进行比较, 例如:'10'<'2',因为'10'的第一个字符为1,小于2 因此若出现数字小的排前面,就要去检查以下是不是把数字的格式设置成了字符串类型varchar
(4)SQL书写规则:末尾为英文分号,关键词不区分大小写,标点符号要用英文格式,列名不加引号,列名的命名不能有空格,具体的数据内容要加英文格式的单引号,数字不需要单引号。