sql数据库

数据库SQL实战(牛客网):获取所有非manager的员工emp_no

我是研究僧i 提交于 2020-02-21 04:10:52
获取所有非manager的员工emp_no CREATE TABLE dept_manager ( dept_no char(4) NOT NULL, emp_no int(11) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY ( emp_no , dept_no )); CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date date NOT NULL, PRIMARY KEY ( emp_no )); select emp_no from employees where emp_no not in ( select emp_no from dept_manager ) ; 来源: CSDN 作者: 有理想的番茄 链接: https://blog.csdn.net/weixin_43777983/article/details/104416075

初识oracle重做日志文件

穿精又带淫゛_ 提交于 2020-02-20 17:37:14
转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出。 管理重做日志文件 学习目标: 1.解释重做日志文件的目的 2.描述重做日志文件的结构 3.学会控制日志切换与检查点 4.多元化管理重做日志文件 5.使用OMF管理重做日志文件 1.概念介绍: 重做日志文件通过记录数据的所有改变情况对系统或介质故障提供恢复机制。 1)重做日志文件以组的形式存在 2)一个oracle数据库至少需要两组,每组至少有一文件 3)在一组里的每一重做日志文件叫做成员 The redo log files are used only for recovery. 2.重做日志文件结构: 1)重做日志文件组 a.一组相同的副本联机重做日志文件被称为一个联机重做日志组。 b.LGWR进程并发的往日志组里所有重做日志文件写入相同信息 2)重做日志文件 a.一个组每个成员用于同一log sequence numbers和相同的大小 b.每次oracle服务器开始写入日志组时分配日志序列号来唯一标识每个重做日志文件 c.当前的日志序列号存储在控制文件和所有数据文件的头部 3.重做日志如何工作? 1)重做日志以循环的方式使用 2)当一个重做日志文件写满,LGWR进程将移动到下一日志组 a

Oracle重做日志文件

自闭症网瘾萝莉.ら 提交于 2020-02-20 16:48:55
一、联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理    11g默认的大小是50M 2.联机重做日志组 由一个或多个相同的联机日志文件组成一个联机重做日志组 至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘) 由LGWR后台进程同时将日志内容写入到一个组的所有成员 LGWR的触发条件 在事务提交的时候(COMMIT) Redo Log Buffer 三分之一满 Redo Log Buffer 多于一兆的变化记录 在DBWn写入数据文件之前      每3秒钟 3. 联机重做日志成员 重做日志组内的每一个联机日志文件称为一个成员 一个组内的每一个成员具有相同的日志序列号 ( log sequence number ), 且成员的大小相同 每次日志切换时, Oracle 服务器分配一个新的 LSN 号给即将写入日志的日志文件组 LSN 号用于唯一区分每一个联机日志组和归档日志 处于归档模式的联机日志, LSN 号在归档时也被写入到归档日志之中 4. 日志文件的工作方式 日志文件采用按顺序循环写的方式 当一组联机日志组写满, LGWR 则将日志写入到下一组,当最后一组写满则从第一组开始写入 写入下一组的过程称为日志切换

oracle_重做日志文件--笔记

旧时模样 提交于 2020-02-20 16:47:17
重做日志文件(redo log file) 目录 重做日志文件相关。 重做日志文件简介。 查询重做日志文件的信息。 日志切换。 管理日志文件组 增删日志文件组。 增删日志文件成员。 归档与非归档模式。 一.重做日志文件相关。 Oracle引入重做日志的目的:数据库的恢复。 Oracle相关进程:重做日志写进程(LGWR)。 重做日志性质:联机日志文件,oracle服务器运行时需要管理它们。 相关数据字典:v$log ; v$logfile。 操作者权限:具有sys用户或system用户权限。 1.1重做日志文件的规划。 (于网络上收集) 联机日志文件的规划原则如下: 1:分散放开,多路复用。一般会将同一组的不同日志成员文件放到不同的磁盘或不同的裸设备上。以提高安全性。 2:把重做日志放在速度最快的硬盘上(即:日志所在的磁盘应当具有较高的I/O),一般会将日志文件放在裸设备上。 3:把重做日志文件设为合理大小:例如,增大日志文件大小可以加快一些大型的INSERT、UPDATE、DELETE操作,也能降低日志文件切换频率。减少一些日志等待事件。一般根据具体业务情况有所不同。一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求 4:ORACLE推荐,同一个重做日值组下的所有重做日志文件大小、成员个数一致. 二.重做日志文件简介。 2.1重做日志 重做日志文件又叫联机日志文件

(项目结束后)sql优化总结

旧街凉风 提交于 2020-02-20 11:45:07
一、在结合业务需求时遇到的: 1、创建索引 尽量避免全表扫描,有预想的结合需求建立合适的索引。 1)最先应该想到的是在order by 和 where这两个关键字上建立适当的索引,比如经查使用planName这个字段进行查询计划,那应该在这个字段上建立索引 2)建立索引对于查询的好处是巨大的,但是过多的索引会导致update和insert的速度变慢,因为update和insert有可能会重构索引导致速度变慢,索引一般一张表的索引不宜建太多。 2、避免通过索引字段进行计算 在创表阶段需有预见性的创建索引。因为在where字句中,如果索引列是计算或者函数的一部分,DBMS的优化器将不会使用索引而使用全表查询,函数属于计算的一种,同时如果需要使用到in和exists的情况下,推荐使用EXISTS,因为in不走索引。 二、在开发过程中时遇到的: 1、开发过程中使用where字段的顺序。 DBMS一般采用自下而上的顺序解析where字句,根据这个原理表连接最好写在其他where条件之前,那些可以过滤掉最大数量记录。 2、能用一条SQL语句解决的尽量不要用多条语句,但是如果需要连表,尽量不要超过4张表。 在每次执行SQL的时候,都要建立网络连接、进行权限校验、进行SQL语句的查询优化、发送执行结果,这个过程是非常耗时的,因此应该尽量避免过多的执行SQL语句

左外连接 where条件 on条件

我的梦境 提交于 2020-02-20 10:58:52
QL> CREATE TABLE t1 AS SELECT ROWNUM ID FROM dual CONNECT BY ROWNUM<=10; Table created SQL> SELECT * FROM t1; ID ---------- 1 2 3 4 5 6 7 8 9 10 10 rows selected SQL> CREATE TABLE t2 AS SELECT ROWNUM ID,'a'||ROWNUM NAME FROM dual CONNECT BY ROWNUM<=5; Table created SQL> SELECT * FROM t2; ID NAME ---------- ----------------------------------------- 1 a1 2 a2 3 a3 4 a4 5 a5 SQL> SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id=t2.ID WHERE t1.id=4; ID ID NAME ---------- ---------- ----------------------------------------- 4 4 a4 SQL> SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id=t2.ID WHERE t2.id=4;

apache DBUtils 使用例子demo

落花浮王杯 提交于 2020-02-20 10:53:34
转自:http://blog.csdn.net/earbao/article/details/44901061 apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用, 1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作; 2.对于数据表的写操作,也变得很简单(只需写sql语句) 3.可以使用数据源,使用JNDI, 数据库连接池 等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。 DBUtils包括3个包: org.apache.commons.dbutils org.apache.commons.dbutils.handlers org.apache.commons.dbutils.wrappers DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。 org.apache.commons.dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org.apache.commons.dbutils.handlers ArrayHandler :将ResultSet中第一行的数据转化成 对象数组 ArrayListHandler将ResultSet中所有的数据转化成List

如何查询Oracle中所有用户信息

折月煮酒 提交于 2020-02-20 09:20:11
如何查询Oracle中所有用户信息 连带表间的外键关系一起删除所有某个用户下的所有表: SELECT 'DROP TABLE '||TNAME||' CASCADE CONSTRAINT ;' FROM DBA_OBJECTS FROM DBA_OBJECTS WHERE OWNER='YOUR_USER' AND OBJECT_TYPE='TABLE' 然后将选出的结果粘贴到SQLPLUS里执行即可! 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; (查看当前用户所拥有的权限) 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6

校园网站基于B/S的asp系统

♀尐吖头ヾ 提交于 2020-02-20 04:21:15
学校网站是学校的"商标"。在这个高度信息化的社会里,建立自己学校网站是最直接的宣传手段。通过网站的超时空特性,不仅能让本学校和其它学校的学生、教师了解本学校,更可让外界了解本学校。这个网站不仅为提供了方便学生的学术交流,而且让人们了解各种新闻。校园网站可以让学生更多的了解双方、可以更好地帮助学生成长,同时教师也可以更加明确学生的真正需求;学生之间可以有更好的沟通,在课堂上没有听明白的知识点或者对知识点有不同看法的都可以通过校园网站与同学交流。 该毕业设计采用ASP.NET的三层架构模型,基于Browser/Server结构,在Visual Studio开发工具下,把C#作为开发语言,SQL Server作为数据库,按照软件工程的方法开发校园网站。系统主要分为前台功能模块和后台管理模块,其中前台功能模块主要包括 用户注册 模块、用户登录模块、学校概况、校园新闻、师资队伍、文化天地、系统简介模块;后台管理模块包括系统用户管理、校园新闻管理、注册用户管理、学校概况管理、文化天地管理、系统管理模块。 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { sql = "select top 5 id,title,shouyetupian from allgonggao where

数据库SQL实战(牛客网):查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次

不问归期 提交于 2020-02-19 23:15:55
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t CREATE TABLE salaries ( emp_no int(11) NOT NULL, salary int(11) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY ( emp_no , from_date )); select emp_no , count ( emp_no ) as t from salaries group by emp_no having t > 15 ; 1、用COUNT()函数和GROUP BY语句可以统计同一emp_no值的记录条数 2、根据题意,输出的涨幅次数为t,故用AS语句将COUNT(emp_no)的值转换为t 3、由于COUNT()函数不可用于WHERE语句中,故使用HAVING语句来限定t>15的条件 4、最后存在一个理解误区,涨幅超过15次,salaries中相应的记录数应该超过16(从第2条记录开始算作第1次涨幅),不过题目为了简单起见,将第1条记录当作第1次涨幅,所以令t>15即可 /** 注意: 严格来说,下一条salary高于本条才算涨幅,但本题只要出现了一条记录就算一次涨幅,salary相同可以理解为涨幅为0,salary变少理解为涨幅为负 **/ 来源: