一、符号
注释:
使用双中划线,--
xxx
通配符:
一般用作条件,查询或修改某字段对应的值
%
:占位符,代表任意长度,任意内容;举例:like %xxx%
_
:占位符,代表一个长度,任意内容;举例:like x_
like
:模糊匹配;举例:
-
like ‘s%’
:模糊匹配以s开头任意长度、任意内容的值 -
like ‘s_’
:模糊匹配s后一个长度、任意内容的值 -
like ‘%s%’
:模糊匹配s两头任意长度、任意内容的值
or
:两个以上或条件;举例:name = ‘张三’or
age = 18and
:两个以上与条件;举例:name = ‘张三’and
age = 18in
:两个以上包含条件;举例:agein
(1,3,6)
二、查询:SELECT
- 常用基本查询
select * from 表名
select 字段1,字段2... from 表名
-
where
:查询条件约束
select * from 表名 where 字段名=‘值’
-
limit
:查询个数约束(分页)
select * from 表名 limit 2
limit 2:查询count限制n数据
limit 1,2:查询下标1~2的数据
limit 0,-1:查询所有数据,高版本已不可用
-
count
:表的行数查询
select count(*) from 表名
-
distinct
:不重复的行数查询(去重查询)
-- 写法1
select count(distinct 字段名) from 表名
-- 写法2,省略count()
select distinct 字段名 from 表名
-
length
:查询约束长度
value是中文的情况下查询时需注意:
- 在utf-8编码下,一个汉字占3个长度;
- 在gbk编码下,一个汉字占2个长度;
- 在Oracle的gbk编码下,一个汉字占1个长度
-- 如果值是纯中文,以下语句查询到的会是2个汉字以上的条件
select * from 表名 where length(字段名) >= 6
-- aCHAR_LENGTH() 能够做到一个汉字一个字符,以下语句查询到的是6个汉字或字符以上的条件
select * from 表名 where char_length(字段名) >= 6
三、插入:INSERT INTO
注意:不可空字段是必传的
- 字段名与值一一对应
insert into 表名(字段1, 字段2 ...) value(字段1值, 字段2值 ...)
- 无关字段名,必须传入所有字段
insert into 表名 value(字段1值,字段2值 ...)
四、修改:UPDATE
- 无条件修改所有该字段的值
update 表名 set 字段 = 值
- 加条件修改某字段的值
update 表名 set 字段1=字段1值 where 字段2=字段2值 or 字段3=字段3值
五、删除:DELETE
- 清空表
delete from 表名
- 加条件删除字段
delete from 表名 where 字段1=字段1值
六、高级用法
一、别名:AS
别名不修改原字段,只是在查询结果中显示,一旦拥有别名,必须使用 别名.字段
-- 表别名
select 字段 from 表名 as xxx
select xxx.字段1, xxx.字段2 from 表名 as xxx
-- 字段别名
select 字段1 as 别名1, 字段2 别名2 from 表名
二、时间
-- yyyy-MM-dd HH:mm:ss
select NOW()
select SYSDATE()
-- yyyy-MM-dd
select CURRENT_DATE
三、排序:ORDER BY
(asc是升序(默认),desc是降序)
-- 升序
select 字段 from 表名 order by 字段条件
-- 降序
select 字段 from 表名 order by 字段条件 desc
四、分组:GROUP BY
select 字段 from 表名 group by 字段条件
五、区间:BETWEEN、OR、IN
-- BETWEEN,查询区间的值
select 字段 from 表名 where 字段条件 between ‘start值’ AND ‘end值’
-- OR,查询符合的其中一个值
select 字段 from 表名 where 字段1=字段1值 or 字段2=字段2值
-- IN,查询包含的值
select 字段 from 表名 where 字段条件 in(1, 3, 5)
六、聚合函数
-
SUM
:总数
select sum(字段) from 表名
-
AVG
:平均数
select avg(字段) from 表名
-
MAX
:最大值
select max(字段) from 表名
-
MIN
:最小值
select min(字段) from 表名
七、连表查询
内连接:单表查询
外连接:多表查询
where
-- 内连接
select * from a表名 where id = 1
-- 外连接
select * from a表名, b表名
where a.id = b.aid
-
inner join
:相连的表均有同一个字段,返回结果
使用场景:对所有数据的完整性要求较高,不允许出现空数据时使用
举例:a(1、2、3、4) b(1、3、4、5),结果(1、3、4)
select * from a表名
inner join b表名
on a.id = b.aid
-
left join
:罗列左表所有数据,右表关联数据显示,未关联数据显示NULL
使用场景:以父级表id,查询每条数据所关联的每一条子级数据,子级无数据显示NULL
举例:a(1、2、3、4) b(1、3、4、5),结果(1、2、3、4)
select * from a表名
left join b表名
on a.id = b.aid
-
right join
:罗列→表所有数据,左表关联数据显示,未关联数据显示NULL
使用场景:快速检索与上一级表关联脱钩的数据
举例:a(1、2、3、4) b(1、3、4、5),结果(1、3、4、5)
select * from a表名
right join b表名
on a.id = b.aid
tips:
- 不允许有遗漏数据时,不可使用
inner join
- 别名不修改原字段,只是在查询结果中显示,一旦拥有别名,必须使用
别名.字段