一、数据库
1.数据库相关概念
1)数据库
存储数据的仓库,数据是有组织的进行存储(DataBase ,DB)
2)数据库管理系统
管理数据库的大型软件(DataBase Management Sytem,DBMS)
3)SQL
结构化查询语言
操作关系型数据库的编程语言
定义操作所有关系型数据库的统一标准
4)Mysql数据模型
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库。
优点:
1.都是使用表结构,格式一致,易于维护
2.使用通用的SQL语言操作,使用方便,可用于复杂查询
3.数据存储在磁盘中,安全
5)SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾
2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
3.注释:
单行注释:– 注释内容 杠杠空格注释内容 或#注释内容
多行注释:/注释/
6)SQL分类
DDL:数据定义语言,用来定义数据库对象 操作数据库、表等
DML:数据操作语言,用来对数据库中表的数据进行增删改查
DQL:数据查询语言,用来查询数据库中表的数据
DCL:数据控制语言,用来定义数据库的访问权限和安全级别、及创建用户
7)DDL操作数据库
1.查询
show databases;
2.创建
创建数据库
create Database 数据库名称;
创建数据库(判断,如果不存在则创建,规避错误)
create database if not exists 数据库名称
3.删除
删除数据库
drop database 数据库名称
删除数据库(判断,如果存在则删除)
drop database if exists 数据库名称
4.使用数据库
查看当前使用数据库
select database();
使用数据库
use 数据库名称
8)DDL– 操作表
查询当前数据库下所有表名称
show tables;
查询表结构
desc 表名称
首先要在一个已经存在的数据库中创建表,创建表之前要先使用数据库(use 数据库名),然后在来创建表,
注意:最后一行末尾,不能加逗号。
9)SQL的数据类型
数值
age int
score double(总长度,小数点后保留的位数)0-100
日期
birthday date
字符串类型
“张三”
name char(10) 10个字符空间(定长字符串) 存储性能高,但是浪费空间,固定就是10个字符空间
name varchar(2) 2个字符空间 (变长字符串) 存储性能低,节约空间
10)删除表
1.删除表
drop table 表名;
2,。删除表时判断表是否存在
drop table if exists 表名
11)修改表
1.修改表名
alter table 表名 rename to 新的表名
2.添加一列
alter table 表名 add 列名 数据类型
3.修改数据类型
alter table 表名 modify 列名 新的数据类型
4.修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型
5..删除列
alter table 表名 drop 列名
12)模糊查询
like======
通配符
-
_:代表单个任意字符
-
%:代表任意个数字符
查询姓马的学员信息
select * from stu where name like ‘马%’;
查询第二个字是花的学员信息
select * from stu where name like ‘_花%’;
查询名字中包含’德‘的学员信息
select * from stu where name like ’%德%‘;
13)排序查询
1.排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 【排序方式】,排序字段名2 【排序方式2】
排序方式:
ASC:升序排列(默认值)
DESC:降序排序
注意:如果有多个排序条件,当前边的值一样时,才会根据第二条件进行排序。
14)聚合函数
1.概念:将一列数据作为一个整体,进行纵向计算。
2.聚合函数分类:
函数名:count(列名),max(列名),min(列名),sum(列名),avg(列名)
3.聚合函数语法
SELECT 聚合函数名(列名) FROM表;
注意:null值不参与所有聚合函数运算
15)分组查询
1.分组查询语法
SELECT 字段列表 FROM 表名 【WHERE 分组前条件限定】GROUP BY 分组字段名【HAVING 分组后条件过滤】;
注意:分组之后,查询的字段位聚合函数和分组字段,查询其他字段无任何意义
2.where 和 having 的区别
1)执行时机不一样:where是分组之前进行限定的,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
2)可判断的条件不一样:where不能对聚合函数进行判断,having可以。因为执行顺序是不一样的
执行顺序为:where》聚合函数》having,where先执行,所以不能对聚合函数进行判断。
– 查询男同学和女同学各自的数学分数
select sex,avg(math) from stu group by sex;
– 查询男同学和女同学盒子的数学平均分以及各自人数
select sex,avg(math),count(*) from stu group by sex;
– 查询男同学和女同学各自的数学平均分以及各自人数,要求分数低于70分的不参与分组(分组前的用where)
select sex,avg(math),count(*) from stu where math>70 group by sex;
– 查询男同学和女同学各自的平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2;(分组之后用having)
select sex,avg(math),count(*) from stu where math>70 group by sex having >2;
16)分页查询
1.分页查询语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引 ,查询条目数
起始索引:从0开始
计算公式:起始索引=(当前页码-1)*每页显示的条数
注意:
1,分页查询limit是mysql数据库的方言
2.oracle 分页查询使用rownumber
3.sql server 分页查询使用top
– 1.从0开始,查询3条数据
select * from stu limit 0, 3;
–1.每页显示3条数据,查询第一页数据
select *from stu limit 0,3;
– 2.每页显示3条数据,查询第二页数据
select * from stu limit 3,3
–3.每页显示3条数据,查询第三页数据
select * from stu limit 6,3
17)MYSQL约束
约束的概念:
约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性
约束的分类
非空约束 保证列中所有数据不能有null值 NOT NULL
唯一约束 保证列中所有数据各不相同 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
检查约束 保证列中的值满足某一条件 CHECK
默认约束 保存数据时,未指定值则采用默认值 DEFAULT
外键约束 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 FOREIGN KEY
注意:MYSQL不支持检查约束
18)外键约束
概念:外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。
语法:
1)添加约束
– 创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型,
[CONSTRAINT][外键名称(一般用fk主表名附表)】 FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
2)删除约束
ALTER TABLE 表名DROP FOREIGN KEY 外键名称
注意点:流程:创建主表,创建从表,从表中添加外键约束
CONSTRAINT 外键名 FOREIGN KEY(从表外键) REFERENCES 主表外键(外键名)
先执行主表后执行从表,先添加主表元素,后添加从表元素。
19)多表关系的实现
一对一实现方式
在任意一方建立外键,关联对方主键,并设置外键唯一
一对多实现方式
在多的一方建立外键关联一的一方主键
–多对多实现方式
建立第三章中间表
中间表至少包含2个外键,分别关联双方主键
20)多表查询
内连接
- 隐式内连接
SELECT 字段列表 FROM 表1,表2… WHERE 条件
select * from emp , dept where emp.dep_id=dept.did;
– 显式内连接
SELECT 字段列表 FROM 表1【INNER] join 表2 on 条件
select * from emp inner join dept on emp.dep_id=dept.did;
内连接相当于查询A B 交集数据
21)左外连接
查询A表所有数据和交集部分的 数据
查询emp表所有数据和对应的部门信息
select * from emo left join dept on emp.dep_id=dept.id;
22)右外连接
查询dept表所有数据和对应的员工信息
select * from emp right join dept on emp,dep_id=dept.id;
23)子查询
概念:查询中嵌套查询,称嵌套查询为子查询。
子查询根据查询结果不同,作用不同
单行单列:作为条件值,使用=!=》《等进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名=(子查询);
– 查询‘财务部‘和市场部所有员工信息
select did from dept where dname=’财务部’;
select * from emp where dep_id=(select did from dept where dname=’财务部‘);
24)事务
数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败(事务的作用)
事务是一个不可分割的工作逻辑单元
开启事务
START TRANSACTION
或者 BEGIN
– 提交事务
COMMIT
– 回滚事务
ROLLBACK
25)事务四大特征
原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性:事务完成时,必须使所有的数据都保持一致状态
隔离性:多个事务之间,操作的可见性
持久性:事务一旦提交或回滚,她对数据库中的数据的改变是永久的;
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/279455.html