一、数据库
1、什么是数据库? 
2、数据库核心
DBMS(数据库管理系统)
数据库管理系统给应用程序提供了很多功能,应用程序需要通过SQL(结构化查询语句)语句来使用相关功能;
3、SQL(结构化查询语句)
数据库语言
SQL提供的功能:
3.1.DDL: 作用:创建库,创建数据表…
3.2.DML: 作用:对数据进行 增、删、改操作
3.3.DQL: 作用:对数据进行查询
3.4.DCL: 作用:对权限的赋予,事务提交,操作回滚
4、数据库管理层级
5、数据库操作
5.1.库的操作
1.登录 msql: mysql [-h 主机名/IP] -u 用户 -p
2.退出 msql: quit/exit
3.显示库: show database
4.选择库: use 库名
5.创建库: create database [if not exists] 库名;
6.删除库: drop database [if not exists] 库名;
5.2表的操作
1.数据库中支持的数据类型:
1.1数值型;
1.2字符串型
1.3时间日期型;
1.4空值型: NULL;
2.约束
2.1主键约束
2.2非空约束
2.3自增约束
2.4唯一约束
2.5默认约束
2.6外键约束
3.创建表
create table 表名(字段名1 字段类型 [约束],字段名2 字段类型 [约束])default charset = utf8;
4.查看表结构
1.describe 表名 / desc 表名 ;
2.show create table 表名;
5.删除表 : drop table 表名;
6.修改表 :(alter table 表名)
6.1修改表名称 : alter table 旧名称 rename 新名称;
6.2修改字段:
1)增加: alter table 表名 add 字段名 字段类型 [first/after (已有)字段名];
2)删除: alter table 表名 drop 字段名;
3)修改字段名称及类型:alter table 表名 change 旧字段名 新字段名 字段类型
4)修改字段类型:alter table 表名 modify 字段名 字段新类型;
5)修改字段顺序: alter table 表名 modify 字段名 字段新类型 first;
7.修改表的约束:
1)设置唯一约束和主键约束
alter table 表名 add primary key / unique key(字段名);
2)设置自增/非空约束
alter table 表名 modify 字段名 字段类型 auto_increment / not null;
3)设置默认约束
altet table 表名 alter 字段名 set default ‘默认值’;
4)外键约束的设置
alter table 表名 add constraint 外键名 foreign key(字段) references 主表名 (主键对应字段名)
5)取消外键约束和主键约束
alter table 表名 drop primary key / foreign key;
6)取消唯一约束
alter table 表名 drop index 唯一约束的字段名;
7)取消默认约束
alter table 表名 alter 字段名 drop default;
8)取消自增约束和非空约束
alter table 表名 modify 字段名 字段类型;
8.创建表后,修改字符集
alter table 表名 convert to character set utf8;
5.3数据操作(DML && DQL)
1.增加数据:
1.1增加单条记录
insert into 表名 [(字段1,字段2,… )]values(值1,值2,…);
2.2增加多条记录
insert into 表名 [(字段1,字段2,… )]values(值1,值2,…),(值1,值2…);
2.删除数据:
2.1删除所有 delete from 表名;
2.2删除指定 delete from 表名 where 条件;
条件形成:
MYSQL 可以支持 比较运算符和逻辑运算符,条件可以通过比较运算符和逻辑运算符来形成;
3.更新(修改)数据:
3.1 更新字段对应所有数据
update 表名 set 字段名 = 值 ,字段名2 = 值2 … ;
3.2更新字段指定数据
update 表名 set 字段名 = 值 ,字段名2 = 值2 … where 条件;
条件形成:
MYSQL 可以支持 比较运算符和逻辑运算符,条件可以通过比较运算符和逻辑运算符来形成;
4.查询数据:

1.查询所有数据
select 查询字段名 / * from 表名;
2.查询指定字段数据
select 字段1,字段2 from 表名;
select 字段1,字段2 from 表名 where 条件;
3.避免重复查询
select distinct 字段1,字段2 from 表名;
4.as
select 字段1,字段2 from 表名;
等价于:
select 字段1,[as] 字段2 from 表名;
5.单条件查询
select 字段1,字段2… from 表名 where 条件;
6.多条件查询
select 字段1,字段2… from 表名 where 条件1 and 条件2;
7.范围查询
select 字段1,字段2… from 表名 where 字段 between 值1 and 值2;
select 字段1,字段2… from 表名 where 字段 not between 值1 and 值2;
8.空值查询
select 字段1, 字段2… from 表名 where 字段 is null;
select 字段1, 字段2… from 表名 where 字段 is not null;
9.集合查询
select 字段1,字段2… from 表名 where 字段 in(值1,值2…);
select 字段1,字段2… from 表名 where 字段 not in(值1,值2…);
10.模糊查询
select 字段1,字段2… from 表名 where 字段 like ‘ 字符串’;
注意:模糊查询需要借助 通配符
模糊查询支持的通配符:
‘‘ 通配单个字符
‘%’通配单个字符,0个字符,多个字符;
select score from stb where name like ‘莉_’;
select score from stb where name like ‘%莉%’;
11.排序查询
select 字段1,字段2… from 表名 order by 字段 asc /dxesc ;
12.对查询结果进行分页显示
select 字段1,字段2… from 表名 order by 字段 asc /dxesc limit offset, num ;
13.分组查询
select 字段1,字段2… from 表名 group by 字段;
select 字段1,字段2… from 表名 group by 字段 having 条件;
14. 统计函数
select count(字段) from 表名称;
5.4多表联查
1.如果需要在多张表中进行数据的查询,则需要 内连接或外连接的操作:
内连接和外连接的操作,主要是将多张表连接起来生成一张 “大表”(临时表),数据的查询就在这张“大表”中进行;
内连接和外连接的操作,主要是将多张表连接起来生成一张 “大表”(临时表),数据的查询就在这张“大表”中进行;
2. 内连接:
select 字段... from 表1 [inner] join 表2 on 表1.字段 比较运算符 表2.字段;<br /> 要求:多张表同时满足连接条件的数据会被连接在一起,作为“大表”的一条记录;
3. 外连接 (为了在连接生成的“大表”中保留某个表中所有的数据)
根据保留的是左表,还是右表的所有数据不同,外连接又分为左外连接,右外连接<br /> 3.1 左外连接:<br /> 在连接生成的“大表”中保留左表中所有的数据;对于左表中不满足连接条件的记录;<br />在新生成“大表”的右边字段是自动填充 NULL;<br /> select 字段... from 表1 left join 表2 on 表1.字段 比较运算符 表2.字段;<br /> 3.2 右外连接:<br /> 在连接生成的“大表”中保留右表中所有的数据;对于右表中不满足连接条件的记录<br /> 在新生成“大表”的左边字段是自动填充 NULL;<br /> select 字段... from 表1 right join 表2 on 表1.字段 比较运算符 表2.字段;
5.4子查询
将一个查询语句嵌套到另一个查询语句之内的查询,嵌套的查询(子查询)的结果是作为外层查询的条件;
1.带有any(some)关键字的子查询:
外层条件只要满足子查询结果中的一个就可以执行外层查询;
select 字段名… from 表 where 字段 运算符 ANY(select 字段名 … from 表);
2.带有all 关键字的子查询
外层条件满足子查询所有结果就可以执行外层查询;
