数据库管理
1、sql语句 数据用来增删改查的语句
2、备份 数据库的数据进行备份
3、主从辅助,读写分离 高可用。
数据库的概念以及相关的语法和规范:
数据库:组织、存储、管理数据的仓库。
数据库的管理系统(DBMS):实现对数据有效组织,管理和存储的系统软件。
mysql
oracle 大数据系统一般使用(付费)
sql-server (基本淘汰)
MariaDB 也是mysql mysqld
postgreSQL 大象数据库
关系型数据库和非关系型数据库
关系型数据库:
mysql oracle postgreSQL
关系型数据库存储的结构:是一张二维的表格,表里面有行和列
列是对象 ,字段
行是记录对象的信息,字段的属性。
行+列组成一张表。
非关系型数据库:
缓存型数据库:redis
索引型数据库:ES
文档型数据库:MongDB
键值对形式存储的结构
key value
test1=3
关系型数据库和非关系型数据库的优缺点:
关系型数据库的优点:表的结构清晰,逻辑容易整理,记录的数据比较完整。
缺点:读写速度比较慢,并发量差,数据迁移比较麻烦。
每个表都是关联的。
非关系型数据库的优点:高并发速写,对海量数据依旧可以保持高效率的存储和访问,架构可扩展。
缺点:键值对形式存储,数据逻辑比较复杂,数据是保存在缓存当中(redis),如果意外重启所有数据都会丢失。
mysql的数据类型
char:固定长度的字符串类型,用于存储固定长度的字符串。
varchar:可变长度的字符串类型,存储的是可变长度的字符串。
char特点:定义好了长度之后,不论写的值是多少,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
varchar特点:在保存字符串时,是多少就保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节。
varchar比char要节约磁盘空间
读写速度:char的读写速度性能要高于varchar,char是连续的磁盘空间,保存的内容是连续的。
varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能。
int存储的数据类型为整数
float:单精度浮点数,小数点 float(m,d) m表示总位数,d表示小数位数。
double:双精度浮点数 double(m,d) m表示总位数,d表示小数位数。
data:用于存储日期, YYYY-MM-DD
datetime 用来存储日志和时间,格式YYYY-MMM-DD HH:MM:SS
timestamp:和datetime类似,但是他可以自动记录当前时间。
smallinit:存储小整数
bigint:存储大整数
decimal(5,2):存储浮点数,存储精度的浮点数,5表示总位数,2表示小数位 (123.45)
数据库的管理
增删改查--------sql语句
sql中的名词:
数据库:database
表:tables
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure
存储函数:funcrion
调度器:event
sql的语言规范
在数据库系统中,sql语句不区分大小写,但是建议用大写。
sql语句可以分单行和多行,但是必须要以";"为结尾
命令规范:
库民、表名、列名的名字,必须以为字母开头,后面可以数字,后面也可以跟上特殊符号。
不要使用mysql的保留字,tables select show databases
数据库名,表名,用户名严格区分大小写。
sql语言的分类
1、DDL 数据库定义语言:创建数据库的对象语言,库,表和索引等等。
create drop
2、DML数据库操作语言:对表里面的数据进行管理
select update insert delete
3、DQL数据库查询语句
select
4、DCL数据控制语言:控制和管理数据库用户的角色和权限。
grant revoke
5、TCL事务控制语句:用来管理数据库的事务 脚本开发,存储过程等等
commit rollback savepoint
DDL:创建库和表的语句
一条数据的语句是连贯的,以分号为结尾表示一条完整的sql,但是太长了,不方便阅读和理解。我们可以对一条语句进行分行的写法,关键词不能跨行。
id int (4) not null ,
定义表的列的属性,数据类型和是否为空
Key | Default | Extra
| ------+-------+
| NULL | | | NULL | | | NULL | |
key :表示是否是主键或者外键
default:如果没有数据的默认展示结果
extra:提供列的附加信息,自增长等等
创建库名:create database +库名
创建表名:create table + 表名
删除库:drop database +库名
删除表:drop table +表名
DML数据操作语言:
insert 插入数据
insert into +表名(字段1,字段2,字段3) values(1,2,3);
null和空值之间的区别:
null就是什么也没有,就是为空
空值也是值,只是值是空的
update修改和更新:
uptate +表名 set +列名=值 where 条件;
delete删除表的数据
delete from +表名 where 条件;
DQL查询语句:
select +列名 from + 表名;
查看指定行:
select * from student limit 2,3;
显示第二行之后的三行
去重查询:
select distinct +重复的名称 from student;
where语句 条件的筛选:
select * from +表名 where 列名 and 列名 且
select * from +表名 where 列名 or 列名 或
模糊查询:
like
select * from student where name like '名称%';
以什么开头
select * from student where name like '%名称';
以什么为结尾
select * from student where name like '%名称%';
以包含方内容式
ALTER 修改表名和修改表结构
alter table +旧表名 rename +新表名;
给表添加一列:
alter table +表名 add +列名 varchar(50)default '地址不详';
修改字段的数据类型:
alter table +表名 modify column +列名 char(10);
删除列:
alter table +表名 drop +列名;
修改列的名称:
alter table +表名 change name usename char(10);