select

mysql练习题练习

巧了我就是萌 提交于 2020-04-03 01:57:05
1、数据库是按照原文制作的,表格结构一样具体存储的数据有些差异 原文地址: MySQL练习题 原答案地址: MySQL练习题参考答案 2、查询“生物”课程比“物理”课程成绩高的所有学生的学号; select wl.sid from (select sc.student_id as sid,sc.number as grade from score sc,course c where c.cid=sc.course_id and c.cname='物理') as wl,(select sc.student_id as sid,sc.number as grade from score sc,course c where c.cid=sc.course_id and c.cname='生物') as sw where wl.sid=sw.sid and sw.grade>wl.grade; 3、查询平均成绩大于60分的同学的学号和平均成绩; select student_id,avg(number) as avg from score group by student_id having avg(number)>60; 4、查询所有同学的学号、姓名、选课数、总成绩; select s.sid,s.sname,w.total,w.sum from student s,(select

第十三周学习笔记

自作多情 提交于 2020-04-02 21:47:54
第十二章 并发编程 进程是程序级并发,线程是函数级并发。 三种基本的构造并发程序的方法: 进程: 每个逻辑控制流是个一个进程,由内核进行调度和维护。 I/O 多路复用: 应用程序在一个进程的上下文中显式地调度他们自己的逻辑流。 线程: 运行在单一进程上下文中的逻辑流,由内核进行调度。 12.1 基于进程的并发编程 构造并发程序最简单的方法就是 用进程。 使用大家都很熟悉的函数例如: fork exec waitpid 关于在父、子进程间共享状态信息:共享文件表,但不共享用户地址空间。 进程又独立的地址空间既是优点又是缺点: 优点:防止虚拟存储器被错误覆盖 缺点:开销高,共享状态信息才需要IPC机制 12.2 基于I/O多路复用的并发编程 就是使用select函数要求内核挂起进程,只有在一个或多个I/O事件发生后,才将控制返回给应用程序。 select函数处理类型为fd_set的集合,也叫做 描述符集合。 select函数有两个输入:一个称为 读集合 的描述符集合和该妒忌和该读集合的基数(n)(实际上是任何描述符集合的最大基数)。select函数会一直阻塞,直到读集合中至少有一个描述符准备好可以读。当且仅当一个从该描述符读取一个字节的请求不会阻塞时,描述符K就表示准备好可以读了。 作为一个副作用,select修改了参数fdset指向的fd_set,指明读集合中一个称为准备好集合的子集

Mysql实战45讲学习详情----一条SQL查询语句是如何执行的?

人走茶凉 提交于 2020-04-02 19:26:10
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 select * from T where ID=10; 这条查询语句的执行过程: 外部层:   用户与server层交互的媒介     一.客户端【用于连接数据库,输入命令/语句】       界面化连接数据库       输入 select * from T where ID=10; server层:   Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。     二.连接器【连接器负责跟客户端建立连接、获取权限、维持和管理连接。】       输入连接命令认证身份--mysql -h$ip -P$port -u$user -p         认证通过:连接器会到权限表里查询帐号权限              P:之后所有的权限判断逻辑都会依赖此时读到的权限               这意味着,一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。         认证失败:Access denied for user      

Oracle date和timestamp区别

不羁的心 提交于 2020-04-02 15:14:43
<转自> http://blog.csdn.net/huaguoming/article/details/8693679 在今天的工作中,学到了以下几个知识点: 一、date和timestamp 的区别 date类型是Oracle常用的日期型变量,他的时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。例如:查看一下当前距离伦敦奥运会开幕还有多长时间: select to_date('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual 结果是:92.2472685185185天,然后你根据相应的时间换算你想要的间隔就行!这个结果可能对程序员有用,对于想直接看到结果的人,这个数字还不是很直观,所以,就引出了timestamp类型 timestamp是DATE类型的扩展,可以精确到小数秒( fractional_seconds_precision),可以是 0 to9,缺省是6。两个timestamp相减的话,不能直接的得到天数书,而是得到,多少天,多少小时,多少秒等,例如:同样查看一下当前距离伦敦奥运会开幕还有多长时间: select to_timestamp('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual

ORCALE 相关操作

◇◆丶佛笑我妖孽 提交于 2020-04-02 15:12:24
卸载: 1,关闭oracle所有的服务。 打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 删除该路径下的所有以oracle开始的服务名称 2,打开注册表 路径: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 删除该oracle目录 3,删除注册表中关于oracle的事件日志注册项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\ 删除以oracle开头的所有内容 4,删除环境变量path中关于oracle的内容。 重新启动操作系统 删除Oracle_Home下的所有数据 删除C:\Program Files下oracle目录 5,删除开始菜单下oracle项 C:\Documents and Settings\All Users\「开始」菜单\程序\Oracle - Ora92 --Orcale启动与关闭 ------------------------------------------------------ --启动oracle数据库服务 net start oracleserviceora92 --启动oracle监听服务 lsnrctl start

MyBatis基本应用

微笑、不失礼 提交于 2020-04-02 09:25:40
Mybatis(iBatis)简介 : (前身为iBatis)MyBatis是一个可以自定义SQL,存储过程和高级映射的持久层框架。MyBatis消除了几乎所以是JDBC代码和参数的手工设置以及结果集的检索。MyBatis可以使用简单的XML或注解用于配制和原始映射,将接口和JavaPOJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 作用:封装了JDBC操作,简化了数据库的访问 功能如下:——封装了获取连接,执行SQL,释放连接 ——封装了SQL参数设置 ——封装了记录映射成实体对象的过程,实体类的属性名与结果查询结果集ResultSet中列名保持一致 开发者:写SQL和实体类,然后使用SqlSession对象执行sql操作 MyBatis体系结构主要由以下几个关键部分 (1)加载配置 配置有两种形式,一种是XML配置文件,另一种是Java代码的注解。MyBatis将SQL的配置信息加载成为一个个MappdStatement对象( 包括了传入参数映射配置,执行的SQL语句,结果映射配置),并将其存储在内存中。 (2)SQL解析 当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map,JavaBean或者基本数据类型)MyBatis会根据SQL的ID找到对应的MappedStatement

oracle中子查询

跟風遠走 提交于 2020-04-02 09:02:18
定义,就是指查询中嵌套查询。 子查询可以出现在很多位置,比如: 当列、当表、当条件等 语法: SELECT (子查询) FROM (子查询) WHERE (子查询) GROUP BY 子句 HAVING (子查询) ORDER BY 子句 注:子查询要用括号括起来。 如: -- 找出与Ben同一个部门的员工 --第一步:先找出Ben所在的部门 select dept_id from s_emp where first_name = 'Ben'; --第二步:找出该部门的所有员工 select first_name from s_emp where dept_id = 数值 --第三步: select first_name from s_emp where dept_id =(select dept_id from s_emp where first_name = 'Ben') and first_name != 'Ben'; 如: -- 查询出顾客名及他拥有的订单数 --第一步: select c.name,订单数 from s_customer c; --第二步:订单数 select c.name,count(o.id) from s_ord o right join s_customer c on o.customer_id = c.id group by c.name; -

注入神器sqlmap命令大全

▼魔方 西西 提交于 2020-04-02 08:15:44
详解强大的SQL注入工具——SQLMAP Akast [N.S.T] 1. 前言 Windows下的注入工具好的又贵,免费的啊D、明小子等又不好用,我们根本没必要花 时间去找什么破解的havij、pangolin什么的,特别是破解的工具很可能被绑了木马。其实 Linux下的注入工具也是非常强大的,不过分的说,可以完全取代Windows下面的所有注入 工具。 就如backtrack系统里面就有非常丰富的注入工具,对MSSQL、MYSQL、oracle等各种 数据库的应有尽有了,而且这些工具都是免费的,并且是开放源代码的,我们还可以用来修 改为合适自己使用的注入工具。 本文给大家介绍的SqlMap是一个开放源码的渗透测试工具,它可以自动探测和利用SQL 注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很 多猥琐的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上 的命令。 2. SQLMAP命令详解 为了方便使用我把sqlmap的选项都翻译出来了,当然可能会存在一些不恰当的地方, 请大家指出,可以给我发邮件:akast@ngsst.com。如果我有时间会把这个工具出个中文版。 Options(选项): --version 显示程序的版本号并退出 -h, --help 显示此帮助消息并退出 -v VERBOSE 详细级别:0-6

SQL Server 性能调优

依然范特西╮ 提交于 2020-04-02 07:36:52
1、 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;按照特定顺序提取数据的查找。 2、 避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。例如: SELECT name FROM employee WHERE salary > 60000 在这条语句中,如salary字段是money型的,则优化器很难对其进行优化,因为60000是个整型数。我们应当在编程时将整型转化成为钱币型,而不要等到运行时转化。 3、

选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

只愿长相守 提交于 2020-04-02 07:35:16
解决方案:指定 GROUP BY 时,选择列表中任何非聚合表达式内的每个属性名都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。 错误用法: select top 1000 订单ID,客户ID,订单号,实付金额,主订单ID FROM [TRA].[dbo].[订单] group by 订单ID order by 订单ID 报错: 正确用法1: select top 1000 订单ID,min(客户ID),min(订单号),min(实付金额),min(主订单ID) FROM [TRA].[dbo].[订单] group by 订单ID order by 订单ID 正确用法2: select top 1000 订单ID,客户ID,订单号,实付金额,主订单ID FROM [TRA].[dbo].[订单] group by 订单ID,客户ID,订单号,实付金额,主订单ID order by 订单ID min最小值: 在没用group分组时,此刻整张表为一个组 ,min返回的是这一列中数据最小的数据, 使用group分组时,min返回的是所在组的最小数据. 使用Group By子句的时候,一定要记住下面的一些规则: (1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列 (2