一、数据库小知识
1、数据库系统核心是DBMS,管理数据库的核心软件。最早的数据库是网状数据库,接下来是层次数据库,现在常见的数据库是关系型数据库,数据库大小写敏感。
{(1)关系 :关系就是二维表,其中:表中的行、列次序并不重要
(2)行row:表中的每一行,又称为一条记录,
(3)列column:表中的每一列,称为属性,字段
(4)主键Primary key:用于惟一确定一个记录的字段
(5)域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值}
2、数据库系统的架构
单机架构,大型主机/终端架构,主从式架构(C/S),分布式架构
3、数据库规范遵守前三范式就可以。((1)除去同类型的字段,就是无重复的列 (2 )属性完全依赖于主键 (3)属性不依赖于其它非主属性)
4、关系模型的分类: 关系模型 、基于对象的关系模型 、半结构化的关系模型:XML数据
5、MYSQL特性:插件式存储引擎,MYSQL5.5.5后innoDB是默认引擎。
6、MariaDB安装
二进制格式安装和源码编译安装
参考 https://www.jianshu.com/p/db80c427e2c5
7、mysqladmin使用
mysqladmin –help
查看mysql服务是否正常,如果正常提示mysqld is alive
mysqladmin -uroot -pcentos ping
关闭mysql服务,但mysqladmin命令无法开启
mysqladmin –uroot –pcentos shutdown
创建数据库testdb
mysqladmin -uroot –pcentos create testdb
删除数据库testdb
mysqladmin -uroot -pcentos drop testdb
修改root密码
mysqladmin –uroot –pcentos password ‘magedu’
日志滚动,生成新文件/var/lib/mysql/ mariadb-bin.00000N
mysqladmin -uroot -pcentos flush-logs
8、desc user; 查询user表中信息
mysql_secure_installation 安全策略,安全脚本 使用数据库建议加安全策略 -U 避免误删除。
rpm -q --scripts mariadb-server 查看装包时跑的脚本
9、创建一个新表,可以复制之前表的结构
create table student2 like test2.student 复制test2中的student表的全部格式,保留字符集格式
create table student3 select * from test2.student 把test2.student的查询结果创建成表
10、show variables like “%chara%” 查询字符集格式
mysql修改数据库客户端字符集为utf8mb4
/etc/my.cnf.d/mysql-clients.cnf中加 default-character-set=utf8mb4
mysql修改数据库服务器端字符集为utf8mb4
/etc/my.cnf 添加 character_set_server=utf8mb4
11、生产中注意sql注入
用户名:admin 密码:'空格or空格'1'='1 或者 用户名:admin'-- 密码:'(单引号)
12、分组后过滤用having,分组前用where
搜索排序
select *from students order by age,desc 倒序
select *from students order by -classid desc 只针对数字排序,实现正序排,null在最后
子查询(select 的执行结果,被其它SQL调用)
小练习
1、 导入hellodb.sql生成数据库
(1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄
(2) 以ClassID为分组依据,显示每组的平均年龄
(3) 显示第2题中平均年龄大于30的分组及平均年龄
(4) 显示以L开头的名字的同学的信息
二、多表查询
students表及teachers表
联合查询(union 去重,union all 不去重)
横向交叉连接
内连接
左外连接
左外连接扩展
右外连接
完全外连接(full outer join)
完全外连接扩展
自连接
三、权限管理
创建用户
修改密码
忘记管理员密码的解决办法:
启动mysqld进程时,为其使用如下选项:
--skip-grant-tables --skip-networking
使用UPDATE命令修改管理员密码
关闭mysqld进程,移除上述两个选项,重启mysqld
授权(数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql)
显示授予的权限
删除授予的权限:revoke drop on mysql.* from magedu@'192.168.1.%';
四、存储引擎
{面} MyISAM特性:
不支持事务 ;表级锁定 ;读写相互阻塞,写入不能读,读时不能写 ;只缓存索引 ;不支持外键约束 ;不支持聚簇索引 ;读取数据较快,占用资源较少 ;不支持MVCC(多版本并发控制机制)高并发 ;崩溃恢复性较差 ;MySQL5.5.5前默认的数据库引擎
{面}innodb特性:(建议开启innodb_file_per_table单独使用一个表存储数据和索引)
行级锁;支持事务,适合处理大量短期事务;读写阻塞与事务隔离级别相关;可缓存数据和索引;支持聚簇索引;崩溃恢复性更好;支持MVCC高并发;从MySQL5.5后支持全文索引;从MySQL5.5.5开始为默认的数据库引擎