MySQL数据库可以分为definition, manipulation和control三个部分,这篇文章主要是关于DML数据查询及修改的学习笔记,
SQL语句可以分为3类:
- Data Definition Languages (DDL)
- Data Manipulation Language (DML)
- Data Control Language (DCL)
DML
Data Manipulation Language(DML)是对数据库中的表记录的操作。
1. 插入记录 insert
1 | INSERT INTO tbname(field1,field2, …) VALUES(value1, value2, …); |
2. 更新记录 update
1 | UPDATE tbname SET field1=value1, …, fieldn=valuen [WHERE CONDITION] |
可以同时更新多个表中的数据,多用于根据一个表的字段来动态更新另外一个表的字段。
3. 删除记录 delete
1 | DELETE FROM tbname [WHERE CONDITION] |
如果不加where condition,则会把表的所有记录删除!
4. 查询记录 select
1 | SELECT * FROM tbname [WHERE CONDITION] |
limit 和order by常一起用于分页显示
5. 聚合 group by
1 | SELECT [field1, field2, …] fun_name |
fun_name表示要做的聚合操作,如sum, count, max, min
group by要聚合的字段,
with rollup表明是否对分类聚合的结果进行再汇总,
having表示对分类后的结果再进行条件过滤(where是聚合前的筛选,having是之后)
6. 表连接
表连接可以分为内连接和外连接,内连接仅选出两张表中相互匹配的记录,外连接会选出其他不匹配的记录。
其中,外连接还分为左连接和右连接(包含左/右表中的所有记录,即使另一边没有匹配的记录)
例子(内连接)
select ename,deptname from emp1, dept where emp1.deptno=dept.deptno
7. 子查询
1 | SELECT * FROM tbname WHERE CONDITION ( in/ not in / = / != / exists / not exists) |
8. 记录联合
1 | SELECT * FROM tb1 |
union all是把结果集直接合并在一起,union是将union all的结果进行一次distinct。
9. 通配符
% 可以匹配任意字符
_ 能且只能匹配一个字符
10. 拼接字段
concat()
1 | SELECT Concat(vend_name, ’ (‘, vend_country, ‘)’ ) |
显示name(location)
可以用Trim()、RTrim()或者LTrim()去掉左右的空格