数据库作用
持久化存储
优化读取
保证数据的有效性
数据库设计
三范式(Normal Form)
第一范式
强调列的原子性
表示列不可以再拆分
第二范式
一张表必须要有一个主键
一般用的是id ,数字,用来标注物理上的唯一性,方便查找
分类
非关系型数据库
redis
mongodb
关系型数据库
oracle
一般是在大型项目中用的多,银行或者电信等
mysql
web时代使用最广泛的关系型数据库
ms sql server
微软的项目中用的
sqlite
轻量型数据库,一般用在移动平台
RDBMS
关系型数据库
结构化查询语言
特点
1.不区分大小写
2.以;进行结尾
select
查看表所有的数据
select * from 表名;
* 代表的是通配符,代表查询当前表中,所有的字段
查看指定的字段
select 字段名1,字段名2,........ from 表名;
条件
格式
select * from 表名 where 条件语句
运算符
比较运算符
=
>
<
>=
<=
!=
<>
逻辑运算符
and
表示条件同时成立
or
表示条件成立一个即可
not
与。。。相反
模糊查找
关键字
like
符号
%
任意多个字符
_
表示任意一个字符
范围查找
连续范围
between ..... and .....
不连续范围
in(值1,值2,值3,值4......)
判断空值
空值
is null
非空
is not null
排序
格式
select * from 表名 where 筛选条件 order by 字段 asc[desc];
注意点
asc
升序
desc
降序
放在整个语句的最后面
by 字段 排序方式
聚合函数
sum
对指定的字段求和
count()
统计个数
count(*/字段)
求字段的平均值
avg
max
寻找字段的最大值
min
寻找字段的最小值
分组
group by
格式
select 分组依据,group_concat(需要展示的字段) from 表名 group by 分组依据
作用:
将查询结果,按照一个字段或者多个字段进行分子,字段值相同的是一组
筛选
能在原始表筛选的,用 where
不能原始表,在分组之后筛选的,用having
多表联查
两表联查
select * from
表1 inner join 表2
on 连接条件
子查询
在一个select语句中,嵌套了另外一个select语句
分类
列子查询
一列多行
行子查询
一行多列
表子查询
多行多列
标量子查询
子查询返回的数据是一行一列
起别名
as 表名/字段名
注意点
1.as可以省略
案例:
查看前端班的学生
select * from web;
DML
数据操作语言
对数据进行管理(增删改)
insert
单行插入
全列插入
insert into 表名 values(全部的字段对应的数据)
注意点:
不允许打乱顺序
部分列插入
insert into 表名(字段1,字段2.....) values(字段1对应的数值,字段2对应的数值);
注意点
1.值的顺序必须对应字段的顺序
2.字段的顺序可以打乱
3.没有插入数据的字段要允许空值
多行插入
全列插入
insert into 表名 values(字段值1,字段值2,字段值3.....),
(字段值1,字段值2,字段值3.....),
(字段值1,字段值2,字段值3.....),
(字段值1,字段值2,字段值3.....)
.........
;
部分列插入
insert into 表名(字段1,字段2。。。。) value
(字段值1,字段值2.......),
(字段值1,字段值2.......),
(字段值1,字段值2.......),
.......
;
update
格式
update 表名 set 字段1=值,字段2=值, ......
修改表中所有的目标字段的值
update 表名 set 字段1=值,字段2=值, ...... where 条件筛选
修改的是表中符合条件的数据的值
多个条件的筛选问题
and
or
delete
硬删除
直接从数据库中删除
格式
delete from 表名 where 条件筛选
软删除
不从数据库中删除,只是逻辑删除
truncate
TRUNCATE TABLE 表名
清空表
TPL
事务处理语言
主要是对事务进行处理
transaction
commit
rollback
DCL
数据控制语言
进行授权和权限回收
进行数据库和表的管理
数据库
drop
drop database IF EXISTS 数据库名;
注意点
1.不能删除不存在的数据库
create
create database IF NOT EXISTS 数据库名 charset=utf8;
注意点
1.数据库不能创建同名的
2.为了兼容中文,设置编码方式
格式
create table 表名 (
主键名 数据类型 约束,
字段1 数据类型 约束,
字段2 数据类型 ,
字段3 数据类型 约束
)
数据类型
字符串
数字
数据表
约束
PRIMARY KEY
主键
主键字段配合auto_increment使用的时候,是自增字段
可以采取默认填充的方式
0
null
default
not null
非空
UNIQUE
表示字段不允许重复
数据库表操作
修改字段的名字以及数据类型和约束
alter table 表名 旧字段 新字段 数据类型和约束;
增加一个新的字段
alter table 表名 add 字段名 数据类型 约束;
修改字段的数据类型和约束
alter table 表名 modify 字段名 数据类型 约束;
删除字段
alter table 表名 drop 字段
查看表的结构
desc 表名
注意点:数据库中选小不选大
案例
查看所有的数据库
show databases;
CCL
指针控制语言
通过控制指针完成表的操作
内置的方法
concate
格式
concat(字段1,字段2,字段.....)
作用
将多个字段连接成一个完整的字符串
IFNULL(表达1,表达2)
判断空值,如果表达式1的结果是空值,则返回表达式2的结果,如果不是空值,则返回自己
案例
ifnull(1,"非空值")
1
ifnull(null,"是空值")
"是空值"
SUBSTR(字符串,截取位置,截取的个数)
作用:用来截取字符串的方法