一、数据库小知识
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开头的名字的同学的信息
二、多表查询
