数据是什么
数:数字信息
据:属性或某种凭据
数据:对一些列对对象的具体属性的描述信息的集合。
数据库是什么
数据库:就是用来组织 (按照规则组织起来的) ,存储和管理 (对数据的增、删、改、查) 数据的仓库。
数据库是企业的重要信息资产。使用数据库时要注意(查和增无所谓,但是删和改要谨慎!)
数据库管理系统(DBMS):实现对数据的有效组织,管理和存取的系统软件
mysql工作过程和数据流向图:
数据库的组成
数据库是一个系统,是一个人机系统、硬件、os操作系统、数据库、DBMS管理系统和数据库的用户。
用户是通过DBMS(各种数据库软件)来对数据库进行操作
数据库的分类
mysql:关系型数据库
redis:非关系型数据库 es
关系型数据库
存储数据的结构是一个二维表格
表:行 列
行:记录,用来藐视一个对象的信息
列:字段,用来描述对象的一切属性
mysql(中小型的数据库并发请求 免费)
oracle(大数据量还是用它)
sql-server(已淘汰)
maria DB
postgresql
在关系型数据库当。表里面的数据是关联的,表和表之间的数据也是关联起来的。
非关系型数据库
保存数据不是一张表格。是键值对的形式来保存的。key---->value ky32=12 本身之间没有任何关联
redis:缓存性的数据库
es:索引型数据库
MongDB:文档型数据库
既然有关联查询速度相对来说:
关系型数据库查询速度更慢一些
非关系型数据库可以支持高并发读写。对海量数据依旧保持着高效率的存储和访问。
企业常用的数据库架构形式:
MYSQL数据库的存储引擎
5.5之前:MYSAM,不支持事务的外键的存储引擎。适用于读的多,写得好。
2.6之后默认的存储引擎:inodb,可以支持事务可以支持外键,行级锁定的存储引擎。支持高并发性能的应用。
事务
事务:在数据库当中,一个或者多个操作组成的数据操作的序列。这些操作要么全部成功,失败一个就全部不执行。确保数据的一致性和完整性。
事务的特点
原子性:数据库最小工作单元,要么全部执行成功,要么全部不执行。只要有一个操作失败整个执行的序列都会被回滚。哪怕是完成的操作也会被撤销。
一致性:事务执行前后,数据库的完整性不能被破坏。只有在满足所有的约束条件情况下,事务才能被提交。
隔离性:事物的执行时相互隔离。一个事务的执行不能受到其他执行事务的干扰。在并发事务之间互相隔离。防止数据不一致的情况发生。
持久性:事务一旦提交,他所做的所有修改会被永久保存在数据库中。即使系统崩溃,提交的数据库也不丢失。
确保数据库始终处于一致性的状态,确保数据的完整和一致
mysql的名词
1、 数据库:database
2、 表:tab 行:row 列:column
3、 索引:index
4、 视图:view
5、 存储过程:procedure
6、 触发器:trigger
7、 用户:user
8、 权限:privilege
mysql的语句规范
在数据库系统中,sql不区分大小写,但是建议大写
语句不区分大小写,表名严格区分大小写
sql语句可以单行也可以多行书写,但是默认都以;结尾
换行的规则
关键词不能跨行或者简写
子语句通常位于度路航,便于编辑,提高可读性。
数据库的命名规则
必须以字母为开头,后面可以包含数据,特殊字符:# 和 _ 和 $
不要使用mysql的保留字来命名:table、select 等
数据库名、表名、用户名称 都严格区分大小写
数据库的字符类型
常用的字符类型:
1、 init:占用4个字节。用来存储整数。
2、 char:固定长度的字符串。用来存储固定长度的字符串。
3、 varchar:可变长度的字符类型。用来存储可变长度的字符串。(是无限制的随便写,也要根据类型的长度)
4、 float(m,d):单精度浮点,存储浮点数,m表示总位数,d表示小数位
5、 duble(m,d):双精度浮点数,存储浮点数,m表示总位数,d表示小数位
6、 text:用于存储大文本数据。文档或者长字符串。
7、 image:二进制存储图像。图片、多媒体等。
8、 decimal(5,2):用于存储固定精度的小数,其中5表示总位数,2表示小数位。
9、 date:存储日期:yyyy-mm-dd
10、 datetime:存储日志 YYY-MM-DD HH:MM:SS
11、 timestamp:和datetime格式一致,可以自动更新为当前的时间戳。
重点:
char:' 空格 '固定占4个字节。'ab' 'ab ' 4个字节
varchar:' 空格 '只占用1个字节。 'ab ' 3个字节
char:无论你是否定义了值,都会占用固定长度的字节大小。如果设置了8个哪怕只写了4个也算作把8个占满
varchar:在保存时,varchar 14 实际上长度是5 就占用5个,加一个隐藏符一共6个
varchar比char节省磁盘空间但是varchae读写速度比char慢
sql语句的分类
DDL语句
DDL:数据定义语言,用于创建数据库的对象。创建库、表、索引。都属于数据定义语言。CREATE DROP ALTER
CREATE :创建
DROP :删除
ALTER:修改
show global variables like 'port';
#查看数据库当前使用的端口
show databases;
#查看当前数据库中有多少库
use mysql; #使用库
show tables; #查看mysql当中有哪些表
describe user;
#查看表结构
desc user;
#简写
describe user\G;
#纵向查看
desc user\G;
#简写
create database yy;
#创建库名为yy
show databses;
#查看有多少库
use yy;
#查看库yy
create table yy (id int(4) not null,name varchar(10) not null,sroce decimal(5,2),passwd char(48),primary key(id));
#创建表
show databases;
drop tables yy;
#删表
drop database yy;
#删库
desc yy;
#查看表结构
null和空格的区别
null是什么都没有,对象没有任何的描述信息。
空格:也是字符
insert into yy values(1,'zyg',null,' ');
select * from yy where sroce is not null;
DML语句
数据操作语句,对表中的数据进行管理
select:查看表格式
select * from 表名;
#查看表格式
update:更新
update zyg set passwd=password('000') where id =4 ;
insert:添加
insert into zyg (id,name,sroce,passwd) values(1,'章鱼哥',90,'123');
insert into zyg values(2,'章鱼哥2',95,'456');
insert into zyg values(4,'章鱼哥4',95,password('666'));
#加密处理密码
delete:删除 对表进行删除操作
delete from zyg where id = 5;
DQL语句(面试会问)
查询数据记录
select
select * from zyg where id = 8;
select * from zyg limit 4,7;
#从第四行开始向下走3行
select * from zyg limit 2;
#显示前2行
select distinct sroce from zyg;
#去重查询。压缩重复的行为1行
select distinct id,name,sroce from zyg;
#id去重
select distinct name,sroce from zyg;
#所有条件去重
select distinct name from zyg;
#name去重
alter table 原表名 rename 新表名;
#改表名
alter table zyg add birth date;
#添加新信息
update zyg set birth=date('2000-8-24') where id = 3;
#更新信息
alter table zyg change birth birthday datetime;
#更改表信息
alter table zyg drop birthday;
#删除表信息
alter table zyg modify column passwd varchar(52);
#修改字段类型
DCL语句
数据控制语言,设置或者更改数据库用户的权限
GRANT:赋予权限
REVOKE:取消权限
TCL语句
事务控制语句,管理数据库当中的事务。
commit:确认提交事务
ROLLBACK:在提交事务之后无法回滚
savepoint:保存点,可以回滚。
思考题
多表关联最多可以关联几张表?
多表关联最多三张表