数据库mysql 第二十天
前言
数据库分类:
层次式数据库
网络式数据库
关系型数据库
数据库的分类
1、层次式数据库
2、网络式数据库
3、关系型数据库
数据库种类
具体来说数据库分为两大类:
关系型数据库:mysql、mariadb、/orcale、sql server/mssql、postgresql、db2
非关系型数据库:sqlite,access
使用方式的不同:
php普通的大部分网站都是以mysql和maridb为基础构建
政府机构网站基本以java为基础,使用sql server/mssql 或者oracle数据库为基础
存储形式的区别:
关系型数据库:以表格的形式存储,且以多文件形式存储。
非关系型数据库:以键值对的形式存储,单文件存储(应用于爬虫,php数组等)
sqlite:多应用于安卓存储数据,做缓存数据
access:access网站,多应用于小程序,小代码
redis // 一般用于数据同步,缓存服务器,做中转
mongodb //提供可扩展的高性能数据存储解决方案,介于关系型与非关系型数据库之间。
mysql数据库操作
展示数据库
mysql数据库命令:
展示数据库:
show databases;
创建数据库:
create database wordpress;
删掉数据库:
drop database wordpress;
mysql命令框的开启
主要命令有:mysql -uroot -proot;
创建数据库:
础关键词:create database wang; (创建wang库)
创建用户表
基础关键词:create table test(); (创建test表)
应用实例:
create table `tb_users`(
`id` int(10) not null auto_increment unique,
`username` varchar(50) not null unique,
`password` varchar(100) not null,
`email` varchar(50) null,
`nick_name` varchar(50) not null,
`safe_point` varchar(50) null,
`avatar_img` varchar(100) default '/images/default_avatarr.jpg',
`reg_time` timestamp default current_timestamp(),
`lastlogin_time` timestamp default current_timestamp(),
`lastlogin_ip` varchar(255) null,
primary key(`id`)
);
新闻表:
create table `tb_news`(
`id` int(0) not null auto_increment,
`title` varchar(255) not null,
`contents` text not null,
`author` varchar(50) not null,
`add_time` timestamp default current_timestamp(),
`hot` int(0) default 0,
primary key (`id`)
);
评论表
create table `tb_discuss`(
`id` int(0) not null auto_increment,
`new_id` int(0) not null,
`discuss_content` text not null,
`discuss_user` varchar(50) not null,
`discuss_time` timestamp default current_timestamp(),
primary key (`id`)
);
注意: 如果报错,在没有打错关键字符的情况下,应该是英汉标点字符有问题,主要查看。
向表格内添加内容
基础关键词:insert into table(表名)()values();
insert into `tb_users`(
`username`,`password`,`email`,`nick_name`,`safe_point`
)VALUES(
'admin','root','123@qq.com','小','明天'
);
注意: 有些数据是可以自动获取的,不能自动获取的部分,需要手动输入,这就需要用户分清数据来源。
附注:输入内容的不同在本库内,则按上面输入方式,若不再此库则按下面的规则录入:
insert into 'test'.'tb_users'()values();
删除内容
delete from 'tbest'.'tb_users' where 'id'=1;
或者
delete from 'tb_users' where 'username'='admin';
在删除内容中有多条件的方式存在 and or
delete from 'tb_users' where 'id'=1 and 'username'='admin';
解释:在数据库中id为1且username=admin的数据删除
delete from 'tb_users' where 'id'=1 or 'username'='admin';
解释:删除id为1的数据,及username为admin的数据
修改内容
基础关键词: update 'table' set
update `tb_discuss` set `new_id`=3,`discuss_content`=123 where `id`='1';
update `tb_news` set `title` ='香港' WHERE 1; 所有的修改
update `tb_news` set `title` ='香港' WHERE 0; 不执行
解释:更新表tb_discuss内id为1的new_id和discuss_content的数据
查找内容
基础关键词:select * from 表 where 列表词
SELECT * FROM `tb_news` where 'id' > 1;
select title,content from 'tb_news' where 'id' >1;
数据导入导出
数据导入
source 文件路径; 把文件导入
mysql -uroot -proot test < 文件路径;
mysqlimport -uroot -proot test 文件路径;
数据导出
mysqldump -uroot -proot mysql > Desktop/mysql.sql;
mysqldump -uroot -proot --all-databases > Desktop/mysql.sql
其他
linux目录
mysql在linux的默认目录
ls /var/lib/mysql
将linux内的数据转移到windows中时,使用的密码还是linux的,因为linux存在于data内
windows下查看端口监听情况
netstat -ano | find "3306"
库的切换
use mysql;
show tables;
show tables from mysql (展示mysql库中表)
切换数据库 use
use test (切换到test库)
show tables (展示所有表)
drop table user (删除uesr表)
查看当前用户
select user();
查看当前数据库:
select database();
来自韬博客
系统自存的库、表、列、信息
information_schema.schemata //存储所有数据库基本信息
information_schema.tables //存储所有数据库的所有表基本信息
information_schema.columns //存储所有字段基本信息
查询语句
select version();
select @@version;
//查看版本号
select user();
//当前连接的用户和ip
select session_user();
//查看当前的会话用户及其ip
select database();
//查看当前使用的数据库
concat();
group_concat();//不同版本
//连接
concat与substr共存的方式
mysql数据路支持字符与16进制的转换:
其中0x7e就是转换过后的admin
注释 –+ 以及 /**/ 或者/…/
distinct //去重
order by
order by 中asc为升序,是数据库的默认排列方式
select * from 表名 where 条件 order by 字段1 asc/desc
desc 为降序,跟升序相反
select * from score s order by s.cno, s.degree desc;
双子段查询:
con为数据库默认升序,degree为降序;
select * from score s order by s.cno, s.degree desc;
模糊搜索(like )
//模糊搜索 a%=>a开头 %a%=>包含a %a=>a结尾
select * from [user] where u_name like '%精%' and u_name like '精%';
搜索u_name字段中开头和开始都有精的记录
读文件
读
load_file('filepath') //绝对路径
select load_file('/etc/passwd');
create table data(
data text
)
insert into data values(load_file(''));
写
写文件: into dumpfile "filepath" //绝对路径 直接写二进制文件
into outfile "filepath" //绝对路径 写文本文档的文件
select 123 into outfile/dumpfile '/var/www/html/eval.php';
mysql配置限制写文件
select hex load_file(('path')) //本地处理二进制文件转化十六进制内容
select unhex(0x十六进制内容) into dumpfile "/tmp/a.exe"
//服务器上执行,使用dumpfile保证文件不丢失
查询案例
要求 :不用select * 且在只知道表名和数据库名的情况下查询content表所有信息
查询所有数据库和指定数据库下所有表
select schema_name from information_schema.schemata;
select table_name from information_schema.tables where table_schema='test';
查询指定表里所有的列明和查询指定表中列明信息
select column_name from information_schema.columns where table_schema='test'and table_name='users';
select username ,passwd from test.users;
mysql忘记密码解决方案
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:数据库mysql 第二十天
本文作者:弈少
发布时间:2019-08-12, 09:37:42
最后更新:2019-08-17, 10:40:32
原始链接:http://yoursite.com/2019/08/12/北京渗透测试第二十天 20190812/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。