1. 基本语法
SQL(Structured Query Language)结构化查询语言,通过SQL,我们就可以查询数据库中的数据,而数据再数据库中又是以表的形式保存的,所以SQL查询,主要就是对表进行查询。
SQL的语法就和学习英语的语法、汉语拼音一样,满足给定的套路,去使用就可以了。
当我们拿到了数据库的连接信息,连接到一个数据库上,我们就可以开始写SQL了。
简单介绍客户端Navicat的使用
这一个一个圆柱形的,就是一个数据库实例,下面那些电子表格图标的就是表,数据就存储在表中。
使用Navicat查看表结构信息,介绍下表、字段、注释等
select
下面,我们来看看,怎样查看一张表的数据;SQL的语法呢,就好比是一个公式,初学的话我们去套用就可以了。
SELECT 列名称 FROM 表名称
或者
SELECT * FROM 表名称
使用Navicat执行查询
-- 查看学生表数据,指定字段
select s_id,s_name from t_student;
-- 查看所有字段
select *from t_student;
排序
排序是很常用的功能,我们想要对结果集进行指定的排序,就要使用order by
order by 字段名
默认升序,可以使用desc降序排列
-- 学生ID降序排列
select *from t_student order by s_id desc;
多字段排序
-- 班级ID升序排列,班级ID一样的按学生ID降序排列
select *from t_student order by c_id,s_id desc;
limit
指定返回记录的数目
我们上面,都是查询一张表所有的数据,有的时候表的数据量很大,或者我们只想看看排名前3的数据,我们就可以使用limit
-- 学生ID降序排列,取前3条记录
select *from t_student order by s_id desc limit 3;
where
前面,我们可以查看一张表的所有数据、做排序、然后只取前几行,实际使用时,一定会有这样的需求,比如我们只想看学生ID是105的记录,就需要使用where了,它可以对数据进行过滤。
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
-- 查看学生ID是105的学生信息
select *from t_student where s_id = 105;
-- 查看学生ID不是105的其他学生信息
select *from t_student where s_id <> 105 ;
-- 查看学生ID在103和108之间的学生信息
select *from t_student where s_id between 103 and 108;
这里还有一个操作符很常用,就是 in 和 not in。
in 表示在多个值中存在,加上not则表示不存在
-- 查看学生ID是103,105,,107的学生信息
select *from t_student where s_id in (103,105,107);
-- 查看学生ID不在102中的其他学生信息
select *from t_student where s_id not in (102);
like
匹配字符串,像‘xxxx’一样
%: 表示任意个或多个字符
_:表示任意单个字符
-- 查看喜欢吃肉的学生信息
select *from t_student where s_hobby like '吃肉%';
select *from t_student where s_hobby like '%吃肉%';
and 和 or
上面,我们都是一个单独的过滤条件,实际上,我们的会有各种各样的情况,需要同时满足多种过滤条件,这就用到了 and 和 or。
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
-- 查看班级ID是901的所有男生信息
select *from t_student where c_id=901 and s_gender=0;
-- 查看班级ID是901或者s_id大于107的学生信息
select *from t_student where c_id=901 or s_id > 107;