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