一、数据库基础知识
DBMS数据库管理系统
1.三级模式:
-
用户级–> 外模式(反映了数据库系统
用户观
)外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。
-
概念级–> 概念模式(反映了数据库系统的
整体观
)概念模式又称模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)
-
物理级 --> 内模式(反映了数据库系统的
存储观
)内模式又称存储模式,对应于物理级。它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。
2.二级映射
- 外模式到模式的转换 – ‘外模式/内模式’映射
- 模式到内模式的转换 – ‘模式/内模式’映射
3.数据库完整性规则
- 实体完整性:表中任意一行的主键值不能为空,也不可重复
- 参照完整性:主外键关联
- 用户自定义完整性:性别只能是男/女
- 域完整性:非空约束,唯一性约束
4.SQL分类
-
DDL
:数据自定义语言,定义数据库对象(库、表、列) -
DML
:数据操作语言,定义数据库记录 -
DCL
:数据控制语言,定义访问权限和安全级别 -
DQL
:数据查询语言,查询记录
5.事务 --工作的逻辑单元
主要作用:确保数据库的完整性
事务的特性:(ACID)
- 原子性(Atomicity):事务中的操作要么都做,要么都不做
- 一致性(Consistency):事务必须是数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据,对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(Durability):指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
二、Mysql
默认端口号:3306
1.在cmd控制台使用mysql
登录mysql: mysql -u root -p
退出mysql:exit
操作数据库:
功能 | 语句 |
---|---|
显示所有数据库 | show databases; |
切换数据库 | use 数据库名; |
查询当前使用的数据库 | select database(); |
创建数据库 | create database 数据库名; |
删除数据库 | drop database 数据库名; |
显示所有表 | show tables; |
查看数据表的结构(列) | desc 表名; |
执行sql脚本文件 | sourse 脚本文件名; |
2.表操作 alter
-
添加classname列:
alter table stu
add
(classname varchar(100)); -
修改sgender列的数据类型为char(2):
alter table stu
modify
(sgender char(2)); -
修改sgender列的列名为sex:
alter table stu
change
sgender sex char(2); -
删除classname列:
alter table stu
drop
classname; -
修改stu表的表名为student:
alter table stu
rename to
student;
3.数据操作(DML)
- 插入数据:
insert into
表名(列名)value
(值…) - 修改数据:
update
表名set
列名=值…where
列名=值 (条件判断指定某一行) - 删除数据:
delete from
表名 [where
列名=值 ]
4.查询
-
模糊查询
select 字段 from 表名where
字段Like
条件eg: 查询id以5结尾的所有记录
select * from student where id like ‘%5’‘%’:0个或多个字符
‘_’:一个字符 -
去重查询
selectdistinct
字段 from 表 -
分组查询
select 字段… from 表group by
字段 -
取别名
select 字段as
别名 from 表 -
排序
select * from 表order by
字段
5.聚合函数
count() max() min() sum() avg()
-- 查询月薪大于2500的人数
select count(sal) as '总数' from emp where sal>2500;
-- 统计月薪于奖金和大于2500的人数
select count(*) as '总数' from emp where sal+ifnull(comm,0)>2500;
-- 查询所有雇员的月薪和
select sum(sal) as'月薪总和' from emp;
-- 查询平均月薪
select avg(sal) as '平均月薪' from emp;
-- 查询月薪最高的员工的记录
select * from emp where sal=(select max(sal) from emp);
-- 查询月薪最低的员工的记录
select * from emp where sal=(select min(sal) from emp);
6.表间关系
- 并:表列数要想等
- 笛卡尔积:S表3行,M表5行,3×5=15,两表对应拼接共15行
- 连接操作:对笛卡尔积的结果进行筛选(内连接,外连接,交叉连接)
内连接:
(1)自然连接: NATURAL JOIN
(2)等值连接: INNER JOIN
两表名 ON
条件
外连接:
(1)左外连接:保留左表中的所有记录,右表中若没有对应记录就显示为NULL
select * from 表1 left join
表2 on
条件
(2)右外连接:与左外连接相反
select * from 表1 right join
表2 on
条件