数据库管理:
数据库运维
sql语句数据库用来增删改查的语句
备份 数据库的数据进行备份
主从复制、读写分离、高可用
数据库的概念和相关的语法和规范:
数据库:组织,存储,管理 数据的仓库
数据库的管理系统DBMS:实现数据有效组织,管理和存取的系统软件
mysql
oracle 大数据系统一般使用
sql-server
MariaDB 也是mysql 服务名mysqld
postgreSQL 大象数据库
关系型数据库:
mysql oracle postgreSQL
数组存储结构:二维的表格 行 和 列
列:对象,字段
行:对象的信息,字段的属性
行+列 组成 一张表
关系型数据库 优缺点
关系型 优点:表的结构清晰,逻辑容易整理,记录的数据比较完整
缺点:读写速度比较慢,并发量差,数据迁移比较麻烦
每个表都是关联的
非关系型数据库:
缓存型数据库:redis
索引型数据库:ES
文档型数据库:MongoDB
键值对形式存储的结构 key value
非关系型数据库 优缺点
非关系型 优点:高并发速写,对海量数据依旧可以保持高效率的存储和访问,架构可扩展
缺点:键值对形式存储,数据逻辑比较复杂,数据是保存在缓存(内存)当中(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表示小数位数
date 用于存储日期 YYYY-MM-DD 年月日
datetime 存储日期和时间 YYYY-MM-DD HH:MM:SS 年月日时分秒
timestamp 和datetime类似,但可以自动记录当前时间
smallint 存储小整数
bigint 大整数
decimal(5,2) 存储精度的浮点数 5表示总位数,2表示小数位数
数据库的管理:增删改查 sql语句
sql名词:
数据库 database
表 table
行 row
列 column
索引 index
视图 view
用户 user
权限 privilege
存储过程 procedure
存储函数 function
调度器 event
sql语言规范:
数据库系统中,sql语句不区分大小写 建议用大写
sql语句可以分多行来写,但是必须要;结尾
命名规范:库名,表名,列名 必须以字母开头,后面可以加数字、特殊符号
不要使用mysql的保留字,table;select;show等等 做名字
数据库名,表名,用户名严格区分大小写
sql语言的分类:
1.DDL 数据库定义语言 创建数据库的对象语言,库,表,索引等
create drop
2.DML数据库操作/管理语言 对表里的数据进行管理
select update insert delete
3.DQL数据库查询语言 数据库查询语句 select
4.DCL数据控制语言 控制和管理数据库用户的角色和权限 grant 赋权 revoke取消权限
5.TCL事务控制语句,管理数据库的事务,脚本开发,存储过程
commit rollback savepoint
数据库基本操作
创建数据库
CREATE DATABASE xxx;
创建表
CREATE TABLE student (
id int(4) not null,
name char(10) not null,
score decimal(5,2)
);
删除表
DROP TABLE student;
插入数据
INSERT into student(id,name,score) values(1,'小王',87.6);
查看表结构
desc student;
更新表数据
UPDATE student set score=66.6 where id = 3;
删除表数据
DELETE FROM student WHERE id=2;
查询语句
SELECT name,score FROM student;
查询指定行 0,2代表前两行
SELECT * FROM student LIMIT 0,2;
去重查询
SELECT DISTINCT name from student;
条件查询
SELECT * FROM student WHERE id=7 AND score=99;
模糊查询
SELECT * FROM student WHERE name LIKE '%明%';
修改表、表结构
ALTER TABLE student RENAME stu01; 修改表名
ALTER TABLE stu01 ADD address VARCHAR(50) DEFAULT '不详'; 添加列
ALTER TABLE stu01 MODIFY COLUMN address CHAR(30); 修改列数据类型
ALTER TABLE stu01 CHANGE COLUMN address addresses VARCHAR(20); 修改列名和数据类型
ALTER TABLE stu01 DROP addresses; 删除列