注释:在SQL中可以使用"--空格+描述"来表示注释说明
CRUD 即增加(Create).查询(Retrieve).更新(Update).删除(Delete)
insert into 表名 values (列,列...);
insert into 表名(列名,列名...) values (列,列...);
insert into 表名 values(),(),()...; 一个()里是一行数据
a.全列查询
select * from 表名;
select * 这个操作其实非常危险,在公司生产环境服务器不要随便敲select * 很可能让服务器挂了
b.指定列查询
select 列名,列名... from 表名;
这个操作也不是万无一失,万一查这一列有很多行数据,也能把网络通道堵死
c.表达式查询
1) 当前表达式查询,没有修改服务器上硬盘中存储的数据库 在查询结果基础之上进行运算 得到一个临时表
2) 此时查询出来的临时表 每列的类型不再受限于原始表
d.别名
select 表达式 as 别名 from 表名;
e.去重:distinct
select distinct 列名 from 表名;
把列的值相同记录合并成一个
f.排序: order by
select 列名 from 表名 order by 列名;
1.没有order by 子句的查询,返回的值是未定义的,永远不要依赖这个顺序
2.null 数据排序,视为比任何值都小,
注:asc 为升序(从小到大) desc 为降序(从大到小) 默认为 asc
可以对多个字段进行排序,排序优先级随书写顺序
g.条件查询:where
比较运算符:
运算符 | 说明 |
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option, ...) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
注:
1. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
h.分页查询:limit
可以限制这一次查询,最多查多少个记录
update 表名 set 列名 = 值 where 条件;
给定一个sql 语句,就是一个整体,要么整个执行成功,要是失败,就全部不执行
delete from 表名 where 条件/limit /order by;
没有指定任何条件,删掉所有数据,删除所有记录和删表还是有区别的
update delete 修改的硬盘上的数据库数据
新增:
单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
查询
-- 全列查询
select * from 表
-- 指定列查询
select 字段1,字段2... from 表
-- 查询表达式字段
select 字段1+100,字段2+字段3 from 表
-- 别名
select 字段1 别名1, 字段2 别名2 from 表
-- 去重DISTINCT
select distinct 字段 from 表
-- 排序ORDER BY
select * from 表 order by 排序字段
-- 条件查询WHERE:
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件
修改:
update 表 set 字段1=value1, 字段2=value2... where 条件
删除:
delete from 表 where 条件/limit/order by