1. 数据库介绍
1.1 什么是数据库
数据库就是存储数据的仓库,它的存储空间很大,可以存放百万条、千万条、上亿条数据。
1.2 为什么要有数据库
在没有接触到数据库的时候,我相信大多数朋友的数据,都是存在记事本,或者word文档中,这些东西也可以存
放数据,但是个人用的话,数据量小,还是可以的,但是大型门户网站的数据量十分庞大,如果再采用这种方式存
储用户的数据,在处理数据的时候将是一件十分头痛的事情,而且十分消耗时间。于是,数据库出现了。
1.3 数据库的优点
- 整体数据结构化
- 数据的共享性高、冗余度低且易扩充
- 数据独立性高
- 数据由数据库管理系统统一管理和控制,工作效率高
1.4 常见的数据库
- 闭源
- Oracle 甲骨文
- SQL Server 微软
- 开源
- MySQL
- Mariadb
2. 部署数据库服务
2.1 c/s架构
- c 代表的是client
- s 代表的是sever
mysql
数据库采用的是一种c/s
架构,分为服务端和客户端,我们开启服务端,然后用客户端连接数据库,就可
以操作数据库了,因为一般mysql自带的客户端是黑窗口界面对新手不友好,我们采用远程图形化界面连接数据库
2.2 安装mysql
这里我们采用phpstudy中自带的数据库,直接打开phpstudy,启动mysql服务即可
2.2 远程连接数据库
2.2.1 安装sqlyong
远程连接数据库的软件有很多,这里以sqlsong
为例,下载安装即可
提取码:y4rq
2.2.2 连接数据库
2.2.3 导入数据
3. 数据库中的名词介绍
名词 | 解释 |
---|---|
sql语句 | 数据库语言 |
库 | 一类的数据存放在库里 |
表 | 一个库可以有多个表 |
行 | 一行,就是具体的一条数据 |
字段 | 定义这一列的内容 |
4. sql语句
sql语句,不区分大小写,但是每句sql语句必须是以;结尾
单行注释: --空格
多行注释: /**/
4.1 select 语句
select 字段名,字段名 from 表名 查询表中对应字段的值,*代表所有字段
查询city表中的id,name字段
select id,name from city;
查询city中所有的字段
select * from city;
4.2 where 语句
where 语句你可以理解成是限制条件语句
查询city表中,所有中国的城市信息 CHN
select * from city where countrycode = "CHN";
4.2.1 多选一
- 大于 小于 大于等于 小于等于 等于
不等于 != <>
查询人口数小于100人城市信息
select * from city where population < 100;
4.2.2 模糊查询
- 数值区间
- between x and y 在数值x和y之间都满足查询条件
查询人口数为100w-200w(包括两头)城市信息
select * from city where population between 1000000 and 2000000;
- %
- 通配符 匹配任意长度的任意内容
查询城市名为qing开头的城市信息
select * from city where name like "%qing";
11.查询城市名为jing结尾的城市信息
4.2.3 逻辑运算
符号 | 解释 |
---|---|
and | 与 |
or | 或 |
not | 非 |
查询中国,人口数超过500w的所有城市信息
select * from city where countrycode = "CHN" and population > 5000000;
查询中国或美国的城市信息
select * from city country countrycode = "CHN" or countrycode = "USA";
4.2.4 正则匹配
- regexp 正则表达式 更加细粒度的匹配
4.2.5 身份运算
- 关于null 不能直接用!= 或者= , 只能用is / is not
4.3 group by
select * from city group by countrycode;
会把在group by 后面的这个字段 , 也就是countrycode字段中的每一个不同的项都保留下来,并且把值是这一项
的所有行归为一组,只显示这一组的第一项
4.3.2 聚合函数
- 把很多行的同一字段进行一些统计,最终得到一个结果
-
count(字段) 统计这个字段有多少项
统计city表的行数
select count(*) from city;
-
sum(字段) 统计这个字段对应的数值的和
统计中国的总人口数
select sum(population) from city where countrycode = "CHN";
-
avg(字段) 统计这个字段对应的数值的平均值
-
min(字段) 最大
-
max(字段) 最小
4.3.3 分组聚合
统计每个国家的城市个数 group by
select countrycode,count(name) from city group by countrycode;
统计每个国家的总人口数
select countrycode,sum(population) from city group by countrycode;
4.4 having
过滤 组 having总是和分组一起用 , 要不然没意义
计算人口数超过1亿的国家
select countrycode,sum(population) from city group by countrycode having sum(population) > 100000000;
4.5 order by排序
- order by 字段 默认是升序asc 从小到大
- order by 字段 desc 指定降序排列 从大到小
- order by 字段1 asc,字段2 desc 指定先根据第一个字段升序排列,在第一个字段相同的情况下,再根据第二个字段排列
查询所有城市信息,并按照人口数升序输出
select name,population from city order by population;
查询所有城市信息,并按照人口数降序输出
select name,population from city order by population desc;
4.6 limit 限制
-
取前n个
limit n == limit 0,n
查询中国所有的城市信息,并按照人口数从大到小排序输出,只显示前十名
select name,population from city where countrycode = "CHN" order by population desc limit 10;
-
分页
limit m,n 从m+1开始取,往下取n个
查询中国所有的城市信息,并按照人口数从大到小排序输出,跳过前6行,显示后面10行
select name,population where countrycode = "CHN" order by population desc limit 6,10
5. 小结
select 需要显示的列 from 表
where 条件
group by 分组
having 过滤组条件
order by 排序
limit 前n条
执行顺序
select 字段 from city where group by having order by limit
4 1 2 3 5 6 7