sal

Oracle笔记_查询

▼魔方 西西 提交于 2019-11-28 15:39:33
1 单条件查询 select …… from …… where 条件 -- = > >= < <= != <> -- 单引号用于数据表示字符串 -- 双引号用于数据库对象名,列名,表名…… -- 数据区分大小写,数据库不区分大小写 2 多条件查询 --与and 或or 非not select * from emp where deptno in (10,20); -- in表示deptno取值在10和20其中一个,not in表示不在集合中;如果结果中含有NULL,不能使用not in,但可以使用in。 select * from emp where sal between 1000 and 2000; -- between and 是包括边界值 --SQL在解析where时,是从右向左解析的;使用and时应将易假的值放在右侧,or时应将易真的值放在右侧; 3 模糊查询 select ... from ... where 列名 like '模式字符串' -- % 表示若干个字符 -- _ 表示一个字符 select * from emp where ename like '%\_%' escape '\'; -- 以反斜杠作为转义字符 4 排序 select ... from ... where 条件 order by 列名1 asc|desc,列名2.... -- asc表示升序

MySQL练习与小结

杀马特。学长 韩版系。学妹 提交于 2019-11-28 12:54:15
当你专注一件事的时候,时间总是过得很快! foreign key 练习 -- 切换数据库 use stumgr -- 删除班级表 drop table t_class1 -- 创建一个班级表 create table t_class1 ( cno int auto_increment not null, cname varchar (12) not null, room int (4), primary key (cno) ); -- 查看班级表 desc t_class1 -- 添加班级数据 insert into t_class1 values (null,'Javay1班',501),(null,'Javay2班',502),(null,'大数据1班',401); -- 查看班级表信息 select * from t_class1 -- 清空班级表数据 truncate table t_class1 -- 删除学生表 drop table t_student1 -- 创建学生表 create table t_student1 ( sno int primary key auto_increment, name varchar (20), sex char (1) default '男', age int, classno int, constraint fk_t

SQLSERVER SQL性能优化

一世执手 提交于 2019-11-28 06:32:30
1.选择最有效率的表名顺序(只在基于规则的优化器中有效)      SQLSERVER 的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当 SQLSERVER 处理多个表时,会运用排序及合并的方式连接它们,    首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行排序;然后扫描第二个表(FROM子句中最后第二个表);最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并    例如: 表 TAB1 16,384 条记录表 TAB2 5 条记录,选择TAB2作为基础表 (最好的方法) select count(*) from tab1,tab2 执行时间0.96秒,选择TAB2作为基础表 (不佳的方法) select count(*) from tab2,tab1 执行时间26.09秒; 如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表      例如:    EMP表描述了LOCATION表和CATEGORY表的交集    SELECT *    FROM LOCATION L,    CATEGORY C,    EMP E  

test3

泄露秘密 提交于 2019-11-28 02:38:58
查询test1表中所有员工入职离现在几天: select sysdate-t.date from test_1 t; 查询出明天此刻 select sysdate + 1 from dual; 查询test1表中所有员工入职离现在几月: select (sysdate-t.date)/30 from test_1 t; select months_between(sysdate,t.hiredate) from test_1; 查询test1表中所有员工入职离现在几年: select (sysdate-t.date)/365 from test_1 t; select months_between(sysdate,t.hiredate) /12 from test_1; 查询距离现在几周: select round((sysdate-t.date)/7 ) from test_1 t; 计算两列加减: select e.sal*12 + nvl(e.tim2, 0) from test e; 工资倒叙后每页显示五条, 查询第二页: select * from( select rownum rn, e.* from ( select * from emp order by sal desc) e where rownum<11) where rn>5 ; 通过视图创建表:

test3

霸气de小男生 提交于 2019-11-28 02:25:12
查询test1表中所有员工入职离现在几天: select sysdate-t.date from test_1 t; 查询出明天此刻 select sysdate + 1 from dual; 查询test1表中所有员工入职离现在几月: select (sysdate-t.date)/30 from test_1 t; select months_between(sysdate,t.hiredate) from test_1; 查询test1表中所有员工入职离现在几年: select (sysdate-t.date)/365 from test_1 t; select months_between(sysdate,t.hiredate) /12 from test_1; 查询距离现在几周: select round((sysdate-t.date)/7 ) from test_1 t; 计算两列加减: select e.sal*12 + nvl(e.tim2, 0) from test e; 工资倒叙后每页显示五条, 查询第二页: select * from( select rownum rn, e.* from ( select * from emp order by sal desc) e where rownum<11) where rn>5 ; 通过视图创建表:

SQL游标

我的梦境 提交于 2019-11-27 20:52:23
1. 定义游标定义 游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为: DECLARE 游标名称 [INSENSITIVE] [SCROLL] CURSOR FOR select语句 [FOR{READ ONLY|UPDATE[OF 列名字表]}] 参数说明: INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表的数据。 SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项。 Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。 在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标: SELECT语句中使用了DISTINCT、UNION、 GROUP BY或HAVING等关键字; 任一个游标基表中不存在唯一索引。 其他 READ ONLY选项:说明定义只读游标。 UPDATE [OF 列名字表]选项:定义游标可修改的列

函数(学习笔记)

主宰稳场 提交于 2019-11-27 20:01:03
函数(存储函数) 也是一种较为方便的存储结构,用户定义函数可以被SQL语句或者PL/SQL直接调,函数和过程最大的区别在于,函数可以有返回值, 而过程只能依靠OUT 或者IN OUT返回数据 定义函数语法: CREATE [OR REPLACE] FUNCTION 函数([参数,...]]) RETURN 返回值类型 [AUTHID [DEFINER | CURRENT_USER]] AS || IS [PRAGMA AUTONOMOUS_TRANSACTION;] 声明部分; BEGIN 程序部分; [RETURN 返回值;] EXCEPTION 导常处理; END [函数名]; 参数中定义参数模式表示过程的数据的接收操作,一般分为IN,OUT,IN OUT 3类 CREATE [OR REPLACE]:表示创建或者替换过程,如果过程存在则替换,如果不存在就创建一个新的 AUTHID子句定义了一个过程的所有者权限,DEFINER(默认)表示定义者权限执行,或者用CURRENT_USER覆盖程序的默认行为,变为使用者权限 PRAGMA AUTONOMOUS_TRANSACTION:表示过程启动一个自治事务,自治事务可以让主事挂起,在过程中执行完SQL后,由用户处理提交或者回滚自治事务, 然后恢复主事务 和过程的语法基本相似,唯一不同的是在定义函数时候需要有返回值类型(RETURN

Mysql

天大地大妈咪最大 提交于 2019-11-27 16:38:40
0、数据库基础介绍 数据库管理系统  DBMS(data base management system ),包括Oracle,mysql,SQLserver,MongoDB,db2等 数据库/仓库    DB SQL       结构化查询语言 Mysql      一种数据库软件,使用sql语言管理数据 数据库中事务的四大特性(ACID):原子性(Atomicity);一致性(Consistency);隔离性(Isolation);⑷ 持久性(Durability) SQL语句分类: 1、DQL:数据查询语句,select         (Data Query Language) 2、DML:数据操作语句,insert/delete/update  (Data Manipulation Language) 3、DDL:数据库定义语句,create/drop/alter   (Data Denifition Language) 4、TCL:事务控制语言,commit/rollback    (Trasactional Control Language) 5、DCL: 数据控制语言,grant ,revoke     (Data Control Language) 创建数据库: create database bjpowernode; 导入数据库脚本 数据库脚本:以

游标练习 Oracle

混江龙づ霸主 提交于 2019-11-27 15:57:19
练习题: -- 1 :任意执行一个 update 操作,用隐式游标 sql 的属性 %found,%notfound,%rowcount,%isopen 观察 update 语句的执行情况。 --2. 使用游标和 loop 循环来显示所有部门的名称 --3. 使用游标和 while 循环来显示所有部门的地理位置 ( 用 %found 属性 ) declare -- 游标声明 --4. 接受用户输入的部门编号,用 for 循环和游标,打印出此部门的所有雇员的所有信息 ( 使用循环游标 ) --5. 向游标传递一个工种,显示此工种的所有雇员的所有信息 ( 使用参数游标 ) --6. 用更新游标来为雇员加佣金: ( 用 if 实现,创建一个与 emp 表一模一样的 emp1 表,对 emp1 表进行修改操作 ) ,并将更新前后的数据输出出来。 --7. 编写一个 PL/SQL 程序块,对名字以 'A' 或 'S' 开始的所有雇员按他们的基本薪水 (sal) 的 10% 给他们加薪 ( 对 emp1 表进行修改操作 ) --8. 编写一个 PL/SQL 程序块,对所有的 salesman 增加佣金 (comm)500 --9. 编写一个 PL/SQL 程序块,以提升 2 个资格最老的职员为 MANAGER( 工作时间越长,资格越老 ) --( 提示

Oracle数据库基本操作

霸气de小男生 提交于 2019-11-27 15:18:38
本文根据自己经验所写,如有错误及时提出 --每段语句使用分号结束 --创建表空间 create tablespace zimegll --创建数据库文件 datafile 'c:\travel.dbf' --文件大小 size 100m autoextend on next 10m; --删除表空间 drop tablespace zimegll; --创建用户 create user zimegll identified by zimegll --出生的表空间 default tablespace zimegll; --给用户授权 --Oracle数据库中常用角色 -- connect:连接角色,基本角色 -- resource:开发者角色 -- dba:超级管理员用户角色 -- 方便学习,我们给用户授予dba角色 grant dba to zimegll; --切换用户 session->log off all->log on --创建一个表 create table person( pid number(20), panme varchar2(10) ); --修改表结构 --添加一列,多列则用逗号隔开 alter table person add (gender number(1)); --修改列类型 alter table person modify gender