1.数据库概述
1.1 什么是数据库
数据库是用于保存数据的容器。你可以把它想象成一个虚拟的文件柜,其中可以放入多个文件,按照一定的结构保存和管理数据,而数据间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库。
1.2 数据库分类
- 关系型数据库:mysql,Oracle,SQL Server等
- 文档型数据库:MongoDB,Couchbase等
- 键值数据库:Redis,Memcached
- 搜索引擎:Elasticsearch
2. sql的基本语法
2.1 插入数据
INSERT INTO people_tab(people_name,people_age) VALUES("zhangsan",20);
2.2 删除数据
DELETE * FROM student_tab WHERE student_id = 2
如果不带where子语句,则删除整个表中的记录,但是表不会被删除
2.3 更改数据
UPDATE student_tab SET student_name = "Tom" WHERE student_name = "Alice"
将student_tab中名字为alice的改为tom
2.4 查询数据
SELECT * FROM student_tab
子句 | 说明 |
---|
from | 指定查询数据的表 | where | 查询数据的过滤条件 | group by | 对匹配where子句的查询结果进行分组 | having | 对分组后的结果进行条件限制 | order by | 对查询结果进行排序,后面跟desc降序或asc升序(默认) | limit | 对查询的结果限制数目 |
2.4.1 模糊查询
like运算符用于判断一个字符串是否与给定的模式相匹配。在实际应用中,如果不能对字符串进行精确查询,此时可以使用like运算符与通配符实现模糊查询。
SELECT emp_name FROM emp_tab WHERE emp_name LIKE '张%'
2.4.2 连接查询
语法: from 表名1 连接类型 join 表名2 on 表1和表2的连接条件
- 内连接 inner join
SELECT t1.name, t2.salary
FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name;
组合两个表中的记录,返回关联字段相符的记录,即返回两个表的交集部分.
- 左外连接 left join
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id
LEFT JOIN table3 ON table2.id = table3.id;
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL
- 右外连接 right join
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
2.4.3子查询
使用 EXISTS 关键字引入一个子查询时,就相当于进行一次存在测试。外部查询的 WHERE 子句测试子查询返回的行是否存在。子查询实际上不产生任何数据;它只返回 TRUE 或 FALSE 值。
SELECT * FROM employee WHERE EXISTS (SELECT d_name FROM department WHERE d_id=1004);
如果此处内层循环并没有查询到满足条件的结果,则返回false,外层查询不执行
3.mysql分页
MySQL数据库实现分页比较简单,提供了LIMIT函数。一般只需要直接写到sql语句后面就行了。
SELECT * FROM tab WHERE tab_id>=20 LIMET 0,10;
SELECT * FROM tab WHERE tab_id>=20 LIMET 10,20;
增加对id的要求也是对于高并发应用里分页实现的一个调优思路。
|