mysql clomn_MYSQL

SQL:结构化查询语言(Structured Query Language)

SQL的功能:查询数据库、插入、更新、删除和查询数据库并返回结果。

SQL语言分类:

DDL 数据定义语言(Data Definition Language)

DML 数据操作语言(Data Manipulation Language)

DCL 数据控制语言(Data Control Language)

DDL:数据定义语言

功能:用于数据库、表、视图、函数、存储过程或其他对象的创建、删除或者修改的操作。

create 创建

alert 修改

drop 删除

创建数据库(指定默认字符集:default charset utf8):

create database test1 default charset utf8;

删除数据库:

drop database test1;

创建表:

create table user(uid int(11), uname varchar(255), passwd varchar(255));

查看表结构:

show create table user;

desc user;

删除表:

drop table user;

修改表(添加字段):

alter table user add column mobile bigint;

删除字段:

alter table user drop column mobile;

修改字段类型:

alter table user modify column passwd int;

修改字段顺序(修改uid为第一位):

alter table user change uid uid int(11) first;

修改uname为username,类型为varchar,放到uid后边(after指定字段位置):

alter table user change uname username varchar(32) after uid;

修改表名(user改为newuser):

alter table user rename newuser;

DML:数据操作语言

功能:主要是对表、视图等对象进行查询、插入、更新和删除操作。

select 查询

insert 插入

update 更新

delete 删除

在user表中插入一条记录:

insert into user(uid,username,passwd,regtime) values(1,'zhangsan','123465',20200916);

插入指定字段:

insert into user(uid,username) values(2,'lisi');

查看warning信息:

show warnings;

拷贝一张和user表命名为user2:

create table user2 as select * from user;

删除一条记录:

delete from user2 where username='lisi';

清空整张表:

delete from user2;

关联删除:

delete a,b from emp a,dept b where a.dept_no=b.dept_no and a.dept_no='d006';

复制user表中的数据插入到use2表中:

insert into user2 select * from user;

更新一条记录

update user2 set glod=1000 where uid=1;

正向排序

select * from user order by uid;

倒序:

select * from user order by uid desc;

限制前10行

select * from user order by 1 limit 10;

查找user表与user2中相同uid记录:

select *from user where uid in(select uid from user2);

关联查询inner join...on(内连接):

返回a,b表同时存在的uid的记录

select a.name,b.mobile from game_user a inner join game_user_ext b on a.uid=b.uid;

left join...on(左连接):

a表为左表,返回a全部数据以及对应在b表中的值

right join...on(右连接):

union联合查询(条件:两表字段相同)

select * from user union select * from user2;

查询mysql.user表(用户字典):

select host,user,password from mysql.user;

DCL:数据控制语言

功能:主要是DBA来管理权限使用的。注入的目标是提升权限,或者授权一个具有较高权限的临时账户。

授权(创建一个从任意IP登录的超级权限用户):

grant all privileges on *.* to admin@'%' identified by 'abc';

刷新权限:flush privileges;

验证:mysql -h 192.168.233.128 -uadmin -pabc

创建一个指定权限的用户

grant select,insert on *.* to admin2@'%' identified by 'abc';

刷新权限:flush privileges;

验证:同上

提升admin2的权限:

grant all privileges on *.* to admin2@'%';

时间日期类型:用于日期和时间的表示

包括date(日期型)、datetime(日期时间型)、timestamp(时间戳)、year(年)

创建时间日期类型表为testd:

create teble testb(d date,t time,dt datetime,ts timestamp default current_timestamp on update current_timestamp,y year);

获取当前时间:

select now();

插入当前时间:

insert into testd values(now(),now(),now(),now(),now());

字符类型

包括:char,varchar,binary(二进制),varbinary(可变长度二进制),blob,text(文本),enum(枚举),set(集合)

创建字符类型表:

create table testc(un char(3),un2 varchar(3),un3 binary(3),un4 varbinary(3));

插入一条记录:

insert into testc values('ba','ba','ba','ba');

enum和set:

create table testd(uname enum('a','b','c'),uname1 set('a','b','c'));

插入(只能插入创建时给出的值,enum插入一个,set可插入一个或多个):

insert into testd values('a','a,b');

查找(set)uname2中有‘b’的记录:

select * from testd where find_in_set('b',uname2);

注入语句(判断用户名)

select * from user where username='admin' and find_in_set(left(user(),1),'s,t,u,r')=4;

SQL注入提权后创建一个账户

创建一个任意登录的普通账户

insert into mysql.user(host,user,password) values('%','admin3',password('abc'));

刷新权限:flush privileges;

创建一个超级用户

拷贝root权限到临时表,在插入user表

create table tmp select * from mysql.user where user='root' limit 1;

select * from tmp;

update tmp set host='%',user='admin4',password=password('abc');

insert into mysql.user select * from tmp;

flush privileges;

字典库mysql信息

用户表:user 保存了主机,用户名和密码等重要信息

数据库权限:db 保存了对数据库级别的权限信息

字段权限表:columns_priv 保存了字段的详细权限分配信息

information_schema:

distinct 去除重复信息

select distinct table_schema from information_schema.tables;

相关函数:

user()/current_user()/session_user() 返回当前用户名

version() 数据库版本号

database() 当前数据库名

返回字符在字符串中的位置:

select position('@' in user())

select locate('@',user())

睡眠函数

select sleep(1);

压力测试函数:

select benchmark(5000000,md5('ba'));

随机函数:

select rand();

四舍五入取整:

select round(rand()*2);

向下取整:

select floor(rand()*2);

随机排序:

select * from users order by rand();

报错:

select count(*) floor(rand()*2) as a from users group by a;

select count(*) concat(user(),floor(rand()*2)) as a from users group by a;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值