一、数据库选型sql和nosql:
1.1关系型数据库sql和非关系型数据库nosql
1.2关系型数据库特点:
- 数据结构化存储在二维表中
- 支持事务的原子性A,一致性C,隔离性I持久性D 特性
- 支持使用SQL语言对存储在其中的数据进行操作
1.3关系型数据库的适用场景:
- 数据之间存在着一定关系,需要关联查询数据的场景
- 需要事务支持的业务场景
- 需要使用SQL语言灵活操作数据的场景。
1.4非关系型数据库特点:
- 存储结构灵活,没有固定的结构
- 对事务的支持比较弱,但对数据的并发处理性能高
- 大多不使用SQL语言操作数据
1.5非关系型数据库使用场景:
- 数据结构不固定的场景。
- 对事务要求不高,但读写并发比较大的场景
- 对数据的处理操作比较简单的场景
1.6 选择数据库的原则:
- 数据库使用的广泛性
- 数据库的可扩展性
- 数据库的安全性和稳定性
- 数据库所支持的系统
- 数据库的使用成本
1.7MySQL数据库的可扩展性:
- 支持基于二进制日志的逻辑复制
- 存在多种第三方数据库中间层,支持读写分离及分库分表
1.8MySQL的安全性和稳定性:
- MySQL主从复制集群可达到99%的可用性
- 配合主从复制高可用架构可以达到99.99%的可用性
- 支持对存储在MySQL的数据进行分级安全控制。
- 支持Liunx系统,Windows系统
1.9 MySQL的使用成本:
- 社区版本免费
- 使用人员众多,可以方便的获取技术支持
二、数据库的设计:
逻辑设计:
1.宽表模式:把所有字段都放在一个表中存储
1.1存在问题:
- 数据插入异常:部分数据由于缺失主键信息而无法写入表中
- 数据更新异常:修改一行中某列的值时,同时修改了多行的数据
- 数据删除异常:删除某一行数据时不得不删除另一行数据
- 数据沉余:相同的数据在一个表中出现了多次
1.2应用场景: - 适合用在数据报表中,这样在数据量大时,不需要连表,查询数据快
2.数据库设计范式: - 第一范式:表中所有列属性不可以再分(比如:联系方式包含邮箱,电话,微信等等,所以联系方式不能作为表属性
- 第二范式:表中必须存在业务主键,并且非主键依赖于全部业务主键
- 第三范式:表中的非主键列之间不能相互依赖
3.mysql常见的存储引擎:
注:
存储引擎:存储数据,为存储的数据建立索引,更新,查询数据。因为在关系数据库中数据以表的形式存储,所以存储引擎也可以称为表类型。
查看当前mysql数据库支持哪些存储引擎:show engines;或者show variablkes like 'have%‘;
3.1 InnoDB存储引擎的特点:
- 事务型存储引擎支持ACID
- 数据按主键聚集存储
- 支持行级锁及MVCC
- 支持Btree和自适应Hash索引
- 支持全文和空间索引
三、sql的数据类型:
1.整数类型:
2.浮点类型
3.时间类型:
4.字符串类型:
注:选择数据类型要注意下面几点:
- 优先选择符合存储数据需求的最小数据类型
- 谨慎使用enum,text字符串类型
- 和财务相关的数值型数据,必须使用decimal类型
四、命令行命令:
1,连接mysql服务器
mysql -uroot -p -hlocalhost
2.不进去mysql服务器交互,直接显示查询结果:
mysql -uroot -p -hlocalhost -e "select user()"
五、sql语言:
1.什么是SQL:一种描述性语言
2.SQL语言的作用:对存储在RDBMS中的数据进行增删改查等操作
3.常用的SQL语言的种类:DCL(授权语句,创建用户语句)、DDL(建立表语句,修改表结构语句)、DML(操作数据语句,增删改查语句)、TCL(事务语句,开启,关闭事务语句)
4.DCL(Data Control Language):
- 建立数据库账号:create user
- 对用户授权:grant
- 收回用户权限:revoke
4.1建立程序使用的数据库账号:建立一个用户mc_class可以在192.168.1.下的所有网段下通过密码1233333登录
create user mc_class@'192.168.1.%' identified with 'mysql_native_password' by '1233333'
4.2.给账号授权:
- 向表中插入数据的权限:insert
- 删除表中数据的权限:delete
- 修改表中数据的权限:update
- 查询表中数据的权限:select
- 执行存储过程中的权限:execute
4.3.查看当前数据库有哪些权限:
show privileges\G
4.4.grant给数据库用户权限:
注意:
- 使用grant授权的数据库账户必须存在
- 用户使用grant命令授权必须具有grant option的权限
- 获取命令帮助 \h grant
4.5.回收用户权限:
5.DDL(data Definition language)
- 建立/修改/删除数据库:create/alter/drop database
- 建立/修改/删除表:create/alter/drop table
- 建立/删除索引:create/drop index
- 清空表:truncate table 表名称
- 重命名表:rename table 表名称1 to 表名称2
- 建立/修改/删除视图:create/alter/drop view
5.1创建数据库:
create database imc_db;
5.2创建数据库表:
临时表(只有当前线程可以用,退出了账号后临时表会自动被删除)
5.3 创建与删除索引:
6. *DML(Data Manipulation language): *
6.1 给表新增数据: insert into
insert into 表名(属性名,属性名) values(内容,内容);
insert into 表名(表名,表名)
select 1,id from 表名;
6.2 删除表中的数据: delete
6.3 修改表中的数据: update
6.4 查询表中的数据: select
六、比较运算符:
注意:任何运算符与null运算结果都是null