数据表(4张)数据情况:
一、基本的查询语句
1.通过客服端向mysql数据库发送SQL查询语句,mysql数据库里运行SQL语句,将查询结果返回
select
2.从student表里,查询列名为姓名,性别的所有结果
select 姓名,性别
from student;
3.查询student表里的所有结果
select *
from student;
4.使用as,为列名设定其他别名
select 姓名 as s_name, 性别 as '人类性别'
from student;
5.使用distinct,查询所有列名唯一值的结果
select distinct 姓名
from student;
-- 虽然“姓名”列里有两个“猴子”,但学号不相同,这两行数据都会显示;如果学号相同,则只会显示其中一行结果
select distinct 姓名,学号
from student;
6.SQL书写规则
二、指定查询条件
1.使用“where”子句指定查找条件
select<列名1>,<列名2>,....
from<table >
where 条件;
例如从student表,根据姓名是“猴子”过滤后,得出列名为“姓名”和“学号”的结果:
select 姓名,学号
from student
where 姓名='猴子';
2.SQL运行顺序:首选from哪个表,然后根据where条件过滤,最后select目标列名结果
三、注释和sql语句注意事项
- 单行注释-- (这里有英文空格),多行注释/ * */
- SQL中易犯错误的符号“,”";"
- SQL语句使用换行或者半角空格来分割单词。
四、运算符
1.算术运算符
1.从score表里,查询列名为“学号”,“成绩”,“成绩百分比”(用“成绩”除以100,并以别名为“成绩百分比”)的所有结果:
select 学号,成绩,
成绩/100 as'成绩百分比'
from score;
2.比较运算符
(1)从score表里,查询成绩<80的所有结果,列名包含“学号”和“成绩”:
select 学号,成绩
from score
where 成绩<80;
(2)从student表里,查询出生日期在“1990-01-01”之前的所有结果,列名包含“姓名”和“出生日期”:
select 姓名,出生日期
from student
where 出生日期<'1990-01-01';
(3)从teacher表里,查询教师姓名是空值的结果,列名包含“教师号”和“教师姓名”:
select 教师号,教师姓名
from teacher
where 教师姓名 is null;
(4)从teacher表里,查询教师姓名不是空值的结果,列名包含“教师号”和“教师姓名”:
-- 教师号为"0004"的教师姓名并不是空值null
select 教师号,教师姓名
from teacher
where 教师姓名 is not null;
3.逻辑运算符
(1)Not例子:从score表里,查询成绩不是>=80的所有结果,列名包含“学号”和“成绩”(以下两个SQL语句,结果是一样)
select 学号,成绩
from score
where not 成绩>=80;
select 学号,成绩
from score
where 成绩<80;
(2)And例子:从score表里,查询成绩>=60且<=90的所有结果,列名包含“学号”和“成绩”(跟between...and...的用法差不多)
select 学号,成绩
from score
where 成绩>=60 and 成绩<=90;
select 学号,成绩
from score
where 成绩 between 60 and 90;
(3)Or例子:从score表里,查询成绩>90或<80的所有结果,列名包含“学号”和“成绩”
select 学号,成绩
from score
where 成绩>90 or 成绩<80;
(4)or和and搭配用法:从student表里,查询姓名为“猴子”或“马云”,且性别为“男”的所有结果,列名包含(学号,姓名,出生日期,性别):
-- where条件里,优先执行小括号()里的or条件,然后再执行and条件
select 学号,姓名,出生日期,性别
from student
where 性别='男'
and (姓名='猴子' or 姓名='马云');
(5)in和and搭配用法:从student表里,查询姓名是“猴子”或“马云”,且性别为“男”的所有结果,列名包含(学号,姓名,出生日期,性别)
-- 跟(4)的结果一致
select 学号,姓名,出生日期,性别
from student
where 性别='男'
and 姓名 in('猴子','马云');
(6)not in和and搭配用法:从student表里,查询姓名不是“猴子”和“马云”,且性别为“男”的所有结果,列名包含(学号,姓名,出生日期,性别)
select 学号,姓名,出生日期,性别
from student
where 性别='男'
and 姓名 not in('猴子','马云');
五、字符串模糊查询:like(关键词)
1.%表示任意字符串
--查询姓"猴"的学生名单
select *
from student
where 姓名 like '猴%';
/*
查询姓名中最后一个字是“猴”
的学生名单
*/
select *
from student
where 姓名 like '%猴';
--查询姓名中带“猴“的学生名单
select *
from student
where 姓名 like '%猴%';
2._表示任意一个字符
/*
查询姓“王”且名字是三个字
的学生名单
*/
select *
from student
where 姓名 like '王__';
六、练习题
链接:https://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorialsqlzoo.net
往期专栏:转行数据分析师专栏(Excel篇)zhuanlan.zhihu.com