一、数据库管理系统
(一)数据库管理系统介绍
DBMS是由数据库及其管理软件组成的系统。
目前市场上常见的Mysql数据库管理系统
- 所以,目前数据库管理系统有关系型数据库管理系统和非关系型数据库管理系统
- 关系型数据库和非关系型数据库在使用场景上差别比较大,所以并不存在熟强熟弱,只有结合自身的业务特点才能发挥出这两类数据库的优势
(二)关系型数据库管理系统
- Oracle SQL - Server MySQL
- Maria DB Access Sqlite
1.数据存储结构:
- 二维表结构
2.查询能力
- 支持复杂查询
3.数据一致性
- 强一致性ACID使得对于安全性能有很高的数据访问要求得以实现。
4.高价值
(三)非关系型数据库管理系统
MongoDB redis HBASE
1.数据存储结构:
- 一种数据结构化存储方法的集合,可以是文档或者是键值对等。
2.查询能力
- 复杂查询欠缺
3.扩展性好
4.无事物处理的概念
5.高扩展性
6.低成本性(大部分低成本就意味着开源的)
关系型数据库VS非关系型数据库
1.不是否定关系型数据库,而是做关系型数据库的补充。 2.想做老大,先学会做老二
二、Mysql数据库简介
(1)数据库基本介绍
1.看排名 DB-Engines Ranking - popularity ranking of database management systems
2.看企业使用情况
3.版本选择
mysql的版本选择
1.稳定版本发行6-12个月以内的
2.小版本 偶数版本,奇数版本不选是测试开发版本
所以我们选择5.7.30 57要选择5.7.17版本以上因为有MVV
4、安装及远程连接
(2)数据库基本命令操作
5、mysql的基本操作
(一)创建命令
--创建学生数据库
create database if not EXISTs student;
使用数据库
use student;
展示所有的表格
show tables;
创建学生信息表
-- 杠杠空格代表mysql中的注释效果
create table if not EXISTS `stuinfo`(
`sid` int(11) UNSIGNED KEY auto_increment,
-- auto_increment 自动填充学号
`sname` varchar(20) not null,
`age` int,
`sex` enum('m','f') DEFAULT 'm',
`birth` datetime not null,
`email` varchar(50),
`addr` VARCHAR(50),
`tel`
)
然后选中创建学生信息表的代码,运行。 信息框里面弹出OK,就代表创建成功了!
接下来我们接着创建一个课程表
create table course(
cid int(11) UNSIENED primary key auto_increment,
cname varchar(20) not null
)
创建成绩表
create table score(
sid int(11) UNSIGNED not null,
cid int(11) UNSIGNED not null,
cj int(11) uUNSIGNED not null,
PRIMARY key(sid,cid),
FOREIGN KEY(sid) REFERENCES stuinfo(sid) on DELETE
CASCADE on UPDATE CASCADE,
-- on DELETE CASCADE on UPDATE CASCADE 级联删除效果
FOREIGN KEY(cid) REFERENCES course(cid) on DELETE
CASCADE on UPDATE CASCADE,
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- ENGINE=INNODB DEFAULT CHARSET=utf8 选择引擎和字符集
(二)删除命令
删除表的操作
drop table stuinfo;
drop table course;
drop score;
-- 删除第一个表的时候,你会发现删除不了,这是因为我们不能随意删除一个带有主外键关系的主键表,要先删除外键表score;然后再删除第一个表stuinfo,就可以了
删除数据库的操作
drop database student;
修改表的结构
增加一个字段
alter table stuinfo add beizhu varchar(50) comment '备注';
-- 删除一个字段
alter table stuinfo drop beizhu
(三)修改命令
-- 修改字段名
alter table stuinfo change beizhu bz varchar(50)
--修改字段属性
alter table stuinfo modify bz varchar(200);
(四)增加命令
---增加记录(学生信息)
---增加stuinfo(学生信息)
insert into stuinfo (sname,age,sex,birth,email,addr,tel,bz)
value('zhangsan,20,'m','1996-1-1','zhangsan@abc.com','上海','13900000000','学NISP一级')
查询一下数据是否存在
select * from stuinfo;
然后再造一个轮子
---增加记录(学生信息)
---增加stuinfo(学生信息)
insert into stuinfo (sname,age,sex,birth,email,addr,tel,bz)
value('lisi,20,'m','1996-1-1','lisi@abc.com','上海','13900000000','学NISP一级')
增加course(课程信息)
我们可以直接新增加4条
insert into course values(1,'NISP一级'),(2,'NISP二级'),(3,'CISP'),(4,'NISP-PTE');
查询一下课程表
select * from course;
新增一条数据
insert into course(cname) values('NISP-运营');
-----增加score(成绩信息)
select * from score;
插入成绩信息
insert into score values(1,1,100),(1,2,30),(1,3,89),(1,4,78),(2,1,90),(2,3,67),(2,4,56),(3,5,100);
这里会报错的原因在于我们只有两条数据,只有两个对象,没有第三个对象,所以不能增加(3,5,100)这条记录
删除一个学生
delete from stuinfo where sid =1;
--删除一个表
delete from stuinfo
---修改记录(学生记录)
update stuinfo set sname='张三' where sname='zhangsan';
(五)查询命令
---查询
---查询所有姓名为张开始的学生信息
select * from stuinfo where sname like '张%';
---查询年龄为20以上的学生信息
select * from stuinfo where age>=20;
---查询家住在上海或者北京的学生信息
select * from stuinfo where add ='上海' or addr='北京';
select * from stuinfo where addr in('上海','北京');
---没有留下邮箱的人
select * from stuinfo where email is null;
总结
一、建库建表
二、表中增改删字段
三、表中插入记录
四、表中修改记录、删除记录
五、简单查询
三、安全值守数据库常用语句
1、用户权限设置
--Mysql中用户是如何定义的
用户名@主机域
10.0.0.51
10.0.0.%
%
10.0.0.0/255.255.255.0
Db01
Localhost
127.0.0.1
---用户创建
- create user xinjing@'%'identified by '123';
---用户删除
- drop user username;
- username: 是要删除的用户名
- 如 drop user root@'%'
- Drop user ''@'127.0.0.1' 用户名为空的删除
----用户查询
------查询所有用户
use mysql ;
select user, host from user;
------create user xinjing@'%' IDENTIFIED by '123';
-------权限级别介绍
全局------可以管理整个MySQL
库------可以管理指定的数据库
表------可以管理指定数据库的指定表
字段------可以管理指定的数据库的指定表的指定字段、权限存储在mysql库的user,db,tables_priv,columns_priv,procs_priv
这几个系统表中的,待MySQL实例启动后就加载到内存中
------查看用户权限赋予情况
show grants for xinjing@'%';
-------用户授权
以下第一条的作用是给用户'xinjing'@'%'授予所有权限并且也可以更改其他用户的权限,前提是用户'xinjing'@'%'要输入密码123
------查看用授权情况
grant all privileges on stu .* to 'xinjing'@'%'identified by '123' with option;
-------回收用户的授权
revoke all privileges on stu.*from 'xinjing'@'%';
2、元数据查询
Select version(); //服务器版本信息
Select database(); //当前数据库名
Selecet user(); //当前用户名
Show staus; //服务器状态
Show variables; //服务器配置变量
Show global variables like '%datadir%': //看数据文件存放位置
select @@datadir; //查询数据库的路径
select @@basedir; //查询mysql的安装路径
3、union查询详解
- union 查询就是把2条或者多条sql语句的查询结果,合并成一个结果集。sql:N行,sql2:M行,sql1 union sql2 ---->N+M行
- 要求结果集中的列数一直就可以。(如都是2列或者N列)
- union取出额最终列名,以第1条sql为准(这个适用我们去爆库)
- union查询默认会去重,如果不想去重就用union all
------union查询
use student;
create table temp1(
uid int PRIMARY key auto_increment,
uname varchar(20) not null
)
insert into temp1(uname) values('zs'),('ls'),('ll');
create table temp2(
eid int PRIMARY key auto_increment,
age int not null
)
insert into temp1(age) values(11),(19),(20);
select * from temp1;
select * from temp2;
select * from temp1 union select * from temp2;
select * from temp1 union select 1,2;
4、分组查询展示
GROUP_COUNT()
select sid,group_concat(cid),group_concat(cj order by cj desc SEPARATOR' ') from score group by sid
5、字符串函数
具体如下图
————字符串函数
select lower("ABcd");
select upper("abcd");
select concat('abc','123');
select concat_ws(':','abc','123');
select substr('hello',2,2);
select length('hello');
select char_length("hello");
6、mysql数据库导入导出
——表数据(记录)导入导出
——导出为txt文件
select *from demo1 into outfile '/temp/utemp1data.txt';
use student;
show VARIABLES like "secure_file_priv";
——导入txt文件
load data local infile '/root/utemp1data.txt' into table temp;
----mysql dump 导出
————dump 出表utemp1
mysqldump -uroot -p student utemp1>utemp1.sql
——dump 出库student
——mysqldump -uroot -p student>student.sql
——dump 所有的数据库级数据库表
——mysqldump -u root -p --all-databases>mysqldatabases,sql;
——mysql的数据库"<"
——新建一个数据库
create database dumpdemo1
——回到mysql接口
——把新建的数据库dumpdemo1装进student.sql里面
——mysql -u root -p654321 dumpdemo1<student.sql
——进入mysql验证
use dumpdemo1
show tables;
——mysql的数据库导入"source"
mysql -u root -p
create database soursedumpdemo;
source /var/lib/mysql-files/student.sql
——进入cmd命令,然后输入密码,最后通过dir查看文件
mysqldump -u root -p student>student.sql
type temp1.sql以文本形式展开sql内容
四、数据库漏扫工具scuba介绍
Scuba是一款数据库扫描软件
扫描数据库漏洞,寻找不安全的因素,提升数据库安全等级,及时解决漏洞问题;
支持Oracle,SQL Server,SAP Sybase,IBM DB2和MySQL等数据库
本地需要安装有jdk和mysql-connector-java-5.1.44-bin.jar即可
java -version
scuba软件安装百度网盘链接
链接:https://pan.baidu.com/s/1PDNCeFsEu3yVanNkEW50WA 提取码:ifu8
第一步:
下载上述链接后,将压缩包解压到相对应的一个磁盘目录下
第二步:
点击Scuba这个文件启动软件,输入密码,然后再点击GO!
最后:
会在浏览器中打开这个界面,它就会生成一个数据库漏洞扫描报告