sql练习

sql 经典练习 ()

。_饼干妹妹 提交于 2019-11-29 15:08:19
--1. 查询01 课程比02 课程 成绩高的学生以及课程分数. --查询课程1,和分数, select * from SC sc where sc.CId='01' ---查询课程2 和分数 , select * from SC sc2 where sc2.CId='02' select * from Student RIGHT JOIN ( select t1.SId,t1.class1,t2.class2 from (select sc.SId,sc.score as class1 from SC sc where sc.CId='01' )as t1, (select sc2.SId,sc2.score as class2 from SC sc2 where sc2.CId='02') as t2 where t1.SId=t2.SId and t1.class1>t2.class2 ) r on Student.SId = r.SId; ---2.平均分 高于60分的同学的情况 select s.Sname,s.SId ,k.平均分 from Student s inner join (select sc.SId,AVG(sc.score) as 平均分 from SC sc group by sc.SId )k on s.SId=k.SId --3. 成绩表中

sql手工注入原理

夙愿已清 提交于 2019-11-29 12:06:10
判断是否存在注入 纯粹一些个人练习心得,所以今天就写一篇博客记录一下 数值型 1.URL输入 and 1=1 / and 1=2 回显页面不同(整形判断) 如果页面运行错误,则说明此 Sql 注入为数字型注入。 因为当我们输入 and 1=1时,后台执行 Sql 语句: 如:select * from <表名> where id = x and 1=1 没有语法错误且逻辑判断为正确,所以返回正常。 当输入 and 1=2时,后台执行 Sql 语句: select * from <表名> where id = x and 1=2 语句被带进数据库进行查询,虽然没有语法错误但是逻辑判断为假,所以返回错误,这时候我们就可以基本确定页面存在sql注入。 字符型 如这是一条后台语句:$sql=“SELECT * FROM users WHERE id='1 ’ LIMIT 0,1”; 可以看出,id被单引号包裹住 如果后台语句是:GET_id=’$id’这样子传 那么 ?id=’1’ 1就是$id 里面的值 这时候要注入可以这样 ?id=’ 1 然后在id的引号里面构造攻击语句 ’ 如?id=1' union select 1,2,3,4 --+' // 这条语句的作用是联合查询第1,2,3,4列, 空格--+的作用是注释后面的内容 如 在URL地址栏输入?id=1’ 这时候

JDBC入门

ε祈祈猫儿з 提交于 2019-11-29 08:37:21
一、概述 1、JDBC本质 概念:Java DataBase Connectivity Java数据库连接,Java语言操作数据库; JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 二、JDBC快速入门 1、步骤 * 步骤: 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.在项目下创建libs目录,复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键libs目录-->Add As Library 2. 注册驱动 3. 获取数据库连接对象 Connection 4. 定义sql 5. 获取执行sql语句的对象 Statement 6. 执行sql,接受返回结果 7. 处理结果 8. 释放资源 2、代码 package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JdbcDemo1 { public static void

使用SqlMap练习SQL注入

南楼画角 提交于 2019-11-29 06:31:27
1.在墨者学院中启动靶场环境 2.打开SqlMap,输入靶场环境地址 –dbs 是查找数据库,下图是找出来的数据库 3.找出数据库后,查看当前的数据库是哪一个,–batch是让程序自己做选择,这样不用我们一个个Y/N,–current-db 查看当前数据库,查找出来的当前数据库为stormgroup 4.查看数据库中存在的表,-D stormgroup --tables 查看stormgroup中存在的表,查出来的表为member,notice 5.确定表,因为只有两张表,member和notice,一看就知道member是用户表的可能性非常大,所以查看member表中有哪些字段。-D stormgroup -T member --columns 查看数据库stormgroup中的member表的列 6.查看列中的数据 7.因为密码是用MD5加密过,所以用MD5在线解密 8.登录之后得到Key 来源: https://blog.csdn.net/qq_38319566/article/details/100539789

Django ORM 高性能查询优化

久未见 提交于 2019-11-29 01:06:22
Django ORM 高性能查询优化 一、QuerySet 1、可切片 使用Python 的切片语法来限制 查询集 记录的数目 。它等同于SQL 的 LIMIT 和 OFFSET 子句。 >>> Entry.objects.all()[:5] # (LIMIT 5) >>> Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5) 不支持负的索引(例如 Entry.objects.all()[-1] )。通常, 查询集 的切片返回一个新的 查询集 —— 它不会执行查询。 2、可迭代 articleList=models.Article.objects.all() for article in articleList: print(article.title) 3、惰性查询 查询集 是惰性执行的 —— 创建 查询集 不会带来任何数据库的访问。你可以将过滤器保持一整天,直到 查询集 需要求值时,Django 才会真正运行这个查询。 queryResult=models.Article.objects.all() # not hits database print(queryResult) # hits database for article in queryResult: print(article.title) # hits database

图解面试题:如何提高SQL查询的效率?

孤街浪徒 提交于 2019-11-28 20:28:59
【题目】 我们公司的数据量非常大,需要的不仅仅是提取数据,要了解SQL方案优化的。 一般在写SQL时需要注意哪些问题,可以提高查询的效率? 【解题思路】 数据量大的情况下,不同的S QL 语句, 消耗的时间相差很大。按下面方法可以提高查询的效果。 1. select子句中尽量避免使用* select子句 中,*是选择全部数据的意思。比如 语句:“ select * from 成绩表 ”, 意思是选择 成绩 表中所有列的数据。 在我们平时的练习中,往往没有那么多数据,所以很多同学会图方便使用* 。 而在处理公司事务时,动辄十万 、百万 ,甚至 上 千万 的 数据,这个时候再用*,那么接下来的几分钟就只能看着电脑屏幕发呆了。 所以,在我们平常的 练习 中,就要养成好的习惯,最后需要哪些列的数据,就提取哪些列的数据。 尽量少用*来获取数据。 另外, 如果select * 用于多表联结,会造成更大的成本开销。 2. where子句比较符号左侧避免函数 尽量避免在where条件子句中, 比较符 号的左侧出现 表达式、函数等操作。因为这会导致数据库引擎进行全 表 扫描,从而增加运行时间。 举个例子,下图是1 0 名学生的成绩表,老师突然发现因为参考答案出错,给所有人都少加了5分,现在需要查询:给每人加5分后,成绩依然在9 0 分以上的同学的学号。 按照题目的思路直接书写, “ 给每人加5分后

sql练习

南楼画角 提交于 2019-11-28 19:28:39
一、谈谈left join 、right join 、inner join的理解   left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录   right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录   inner join(等值连接) 只返回两个表中联结字段相等的行 举个栗子说明: ------------------------------------------------------------------ 表A记录如下: 表B记录如下: aID     aNum bID     bName 1     a20050111 1     2006032401 2     a20050112 2     2006032402 3     a20050113 3     2006032403 4     a20050114 4     2006032404 5     a20050115 8     2006032408 ----------------------------------------------------------------- 1、left join: left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A

MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

别来无恙 提交于 2019-11-28 13:23:25
目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库、表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操作 模型 ***** 特色功能 从数据库建立模型 模型页面基本操作 用模型设计数据库并导出 结构、数据导入导出 导出 导入 附属小功能 刷新小按钮 查看操作对应sql语句 执行时间查看 手动筛选数据 练习 数据准备 使用SQL语句导入表结构与数据 如何验证答案是否正确 题目 部分参考答案(只放了两题的) 少数题推导歩鄹(记录思路) 亦可处理好缩进 选择部分代码执行 推导每步执行结果 核心点--解题思路与注意点、小结 个人解题思路与技巧 小结 某题详细分析思路(没有写完) 题目 分析流程、技巧/注意点 看题分析用到哪些表 在模型中查看表关联 查看表结构与内容,标注每一步的关联字段 人工分析验证语句执行结果是否正确 推荐还是从最初那步开始去校对结果 按思路人工查表 通过 python 进行 MySQL 操作 先安装 pymysql 模块 参考数据 查询案例 普通查询操作 前置数据 SQL注入 避免SQL注入 其他操作(增改删) 扩展点 utf8mb4 mysql语句注释 利用注释备注信息(注释用的6 也可以造成 SQL注入 ) -- 这是行注释,这一行从这里开始的SQL语句都不会被执行 #

小菜鸟之数据库

拈花ヽ惹草 提交于 2019-11-28 08:39:50
数据库复习提纲之文字版(这个只是自己整理文案,答案是查的,勿喷,谢谢,希望给别人一些帮助) 1 、 Oracle和 SQL server2005的区别 Oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle。是 甲骨文公司 的一款 关系数据库管理系统 。 它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。 sql server数据库:美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的 数据库管理系统 ,实现了与WindowsNT的有机结合,提供了基于 事务 的企业级信息管理系统方案 两者的区别: (1)操作的平台不同 Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。而SQL Server却只能在Windows上运行了。   但SQL Sever在Window平台上的表现,和Windows操作系统的整体结合程度,使用方便性

Navicat、Pycharm连接Mysql

微笑、不失礼 提交于 2019-11-28 06:19:46
一、Navicat使用 链接: https://pan.baidu.com/s/15SEMLk-oUSZgGRi6JJAEdA 提取码:m9ra 下载后,将破解补丁放入你Navicat的安装目录,就破解成功了。 1.进入后点击“连接” 2.点击“MySQL” 3.连接名可以选填,端口号填写3306,用户名root,如果你设置了密码,就填写你设置的密码,如果没有直接跳过。 二、查询练习 导入sql语句代码: /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50624 Source Host : localhost Source Database : sqlexam Target Server Type : MySQL Target Server Version : 50624 File Encoding : utf-8 Date: 10/21/2016 06:46:46 AM */ SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `class` -- --