数据库:保管数据的仓库,以及数据管理的方法和技术。
数据库的特点:实现数据共享,减少数据冗余; 采用特定的数据类型; 具有较高的数据独立性;具有统一的数据控制功能;
数据库系统主要组成部分: 数据库、数据库管理系统、数据库应用程序。
SQL = Structured Query Language 结构化查询语言
SQL 和 NoSQL = 关系型数据库 和 非关系型数据库
mysql优势:运行速度快 免费 复杂程度较低,易于学习 跨平台可移植 丰富的接口 支持查询语言。。
终端连接数据库: mysql -u用户名 -p密码 -h连接主机 -P端口
比较重要的存储引擎: InnoDB MyISAM 另外还有: Memory Archive
----show engines:查看所有存储引擎
InnoDB 支持事务,行级别锁,外键,mysql的默认存储引擎
MyISAM 仓库引擎/存储引擎,增删改比较快
修改表名:alter table 旧表名 rename 新表名;
修改字段的数据类型:alter table 表名 modify 字段名 数据类型;
修改字段名:alter table 表名 change 旧字段名 新字段名 数据类型;
添加字段:alter tabale 表名 add 新字段名 数据类型;
删除字段:alter table 表名 drop 字段名;
修改字段的排列位置:alter table 表名 modify 字段1数据类型 first|after 字段2;
更改表的存储引擎:alter table 表名 engine=更改后的存储引擎;
删除表:drop table if exists 表名;
表删除操作前 最好对表中的数据进行备份。
外连接查询:left join
例如:SELECT stu_name, SUBJECT, score FROM student LEFT JOIN score ON student.id = score.id WHERE stu_name = '张三'
外键:用来在两个表的数据之间建立链接,它可以是一列或者多列。
索引的优缺点:
优点:可以保证数据的唯一性;加快数据的查询速度;加速表和表之间的链接;减少查询中分组和排序的时间。
缺点:创建索引和维护索引要耗费时间;索引需要占磁盘空间;数据进行增删改查时索引也要动态维护。
面试题:什么时候使用数据库索引?
1. 如果表的数据几乎不会更改,只用作查询,需要通过索引提升速度
什么时候不建议使用索引?
1. 表的数据量太小
2. 表的数据频繁更改
笔试题:索引的分类有哪些?(你用过哪些索引?)
1. 普通索引(normal)
2. 唯一索引(unique)
3. 主键索引
4. 组合索引
5. 全文索引(full text)
6. 单列索引
7. 空间索引
设计索引需考虑准则:
1、索引并非越多越好。2、避免对经常更新的表进行过多的索引。3、数据量小的表最好不要使用索引、4、在不同值少的列上不要建立索引。5、当唯一性是某种数据本身的特性时指定唯一索引。6、在频繁进行排序或分组的列上建立索引。
索引方法:btree hash
视图:
优点:简单化、安全性、逻辑数据独立性。
视图和表的区别及联系:
区别:1.视图没有物理记录,表有。2.表是内容,视图是窗口。3.表占用物理空间,视图不占。3.视图的建立和删除只影响视图本身,不影响表。
联系:视图是在表之上建立的表,它依据表存在而存在,一个视图对应一个表,也可以对应多个表,视图是表的抽象和逻辑意义上建立的新关系。
创建一个用户,允许别人通过ip,用户名,密码来访问我的数据库
例如 创建一个 zhangsan, zhangsan
create user 'zhangsan'@'%' indentified by 'zhangsan';
修改完系统的数据以后需要手动刷新
flush privileges;
创建用户名和密码均为lisi的用户,权限为所有
grant all privileges on *.* to 'lisi'@'%' indentified by 'lisi';
flush privileges;
创建一个zhaoliu用户,允许对方只能查询jobs数据库,不能增删改
grant select on jobs.* to 'zhaoliu'@'%' indentified by 'zhaoliu';
flush privileges;
数据库备份
1. 选中数据库 右键 选择 转储sql文件
2. 选中备份, 新建备份
3. 通过数据传输
4. mysqldump -uroot -p123456 jobs > D:\a.sql
5. 找到数据库对应的文件夹,直接通过拷贝文件备份
6. 通过 mysqlhotcopy
以上共同缺点:每次备份都需要
唯一索引 主键索引 聚集索引 索引列 全文索引 单列索引、多列索引
优点:
第一, 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二, 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三, 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四, 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五, 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
第一, 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二, 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三, 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
关系型数据库 非关系型数据库 面向列的数据库
sqlserver sqlite mysql oracle mongodb redis Hbase
如何提高数据库的性能
1) 硬件调整性能
数据库配置优化
数据库内核优化
2) 调整数据库
3) 使用存储过程
4) 应用程序结构和算法
5) 使用redis充当缓存数据库
每秒查十万 写八万
6) 使用索引
7) 主从复制与读写分离
8) 分表=水平分表+垂直分表