sal

Oracle---day03

懵懂的女人 提交于 2019-11-30 04:27:59
一、视图   对一个查询结果的封装(视图里面所有的数据都是来自于它查询的那张表,视图里面不存储任何数据)    视图的好处:1.能够封装复杂的查询结果          2.屏蔽表中的细节    语法: create [or replace] view 视图名字 as 查询语句 [with read only]       or replace --如果存在就覆盖       with read only --只允许读,不允许修改,一般都会加   同义词--就是给表、视图等取另外一个名字 --创建一个视图 create or replace view view_test1 as select ename,job,deptno from emp; --通过视图修改数据 update view_test1 set ename='SIMITH2' where ename = 'smith2'; --创建一个只读视图 create or replace view view_test2 as select ename,job,deptno from emp with read only; --同义词概念 create synonym yuangong for view_test2; select * from yuangong select * from view_test1; select

SQL查询

核能气质少年 提交于 2019-11-29 17:43:48
SQL 查询 语法规则: 1. select * from 表名; 查询所有的字段 2. select 字段 as [别名] from 表名; 查询一些字段 select 字段列表 from 表名 -- 这里可以有多张表 [where 条件] [group by 分组] [having 分组条件] [order by 排序] 1、基本查询 语法: 1. select * from 表名; 查询所有的字段 2. select 字段 as [别名] from 表名; 查询一些字段 -- 查询所有的员工信息 select * from emp; -- 查询编号,姓名 职位 薪资 select empno,ename,job,sal from emp; 查询结果显示标题 (编号,姓名 职位 薪资) -- as 添加别名 (员工编号") -- as 可以省略 "" 可以省略 select empno as "员工编号" ,ename 姓名,job,sal from emp; -- 查询所有emp 的职位 select job from emp; -- 有重复 去重复 -- 去重复 distinct select distinct job from emp; -- 查询中进行四则运算 查员工年薪 select ename,job,(sal * 12 + 200) 年薪 from emp; --

MySQL笔记3

こ雲淡風輕ζ 提交于 2019-11-29 14:44:25
需求:查询员工的姓名和部门名称 A: 笛卡尔积(了解 ) Selet * from A,B; A 2条 B 3条 结果:2*3= 6条 B:内连查询(主外键等值的结果) 表的先后顺序无关 #修改表名 RENAME table 原表名 to 新表名; 1种 where实现内连查询 #查询学生的姓名和班级名称 select s.sname,c.cname from student s,classrom c where s.cid=c.cid; #查询学生的姓名和班级名称 inner JOIN … ON 条件 select s.sname,c.cname from student s INNER JOIN classroom c ON s.cid=c.cid; C.外连接(左外连接 右外连接)和表的先后顺序有关的 左连接:表1 left join 表2 on 条件 以”表1” 作为主表(显示该表中的所有数据,其它没有对应的数据用Null来表示) #显示所有的班级名称信息及对应的学生姓名 select c.cname,s.sname from classroom c LEFT JOIN student s on c.cid=s.cid; #等同于右连接查询 select c.cname,s.sname from student s RIGHT JOIN classroom c on c

test 5

Deadly 提交于 2019-11-29 09:33:25
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER procedure [dbo].[proc_wx_getuserlist] @nodeid int, @uid int as begin with myT2 as( select * from lf_clientclass where cc_id=@nodeid and uid=@uid union all select lf_clientclass.* from myT2 inner join lf_clientclass on myT2.cc_id=lf_clientclass.pid ) select mobile from lf_client as a ,myT2 as b where a.cc_id=b.cc_id and a.uid=@uid end; 递归查询 alter proc getclassallid @id int as with RTD1 as( select id ,P_parentID from L_productClass ), RTD2 as( select * from RTD1 where id=@id union all select RTD1.* from RTD2 inner join RTD1 on RTD2.id=RTD1.P

Oracle_SQL(2) 分组与聚合函数

跟風遠走 提交于 2019-11-29 09:02:32
一、聚合函数 1.定义:对表或视图的查询时,针对多行记录只返回一个值的函数。 2.用途:用于select语句,HAVING条件 二、5种聚合函数 1.SUM(n) 对列求和 select sum(sal) from emp; select deptno,sum(sal) from emp group by deptno; 2.AVG(n) 对列求平均值 select avg(sal) from emp; select deptno,avg(sal) from emp group by deptno; 3.MAX(n) 对列求最大值 select max(sal) from emp; select deptno,max(sal) from emp group by deptno; 4.MIN(n) 对列求最小值 select min(sal) from emp; select deptno,min(sal) from emp group by deptno; 5.COUNT(1) 记录行数 select COUNT(1) from emp; select deptno,COUNT(1) from emp group by deptno; select deptno,avg(sal),sum(sal)/COUNT(1) from emp group by deptno; count

mysql DML(数据操纵语句)

ε祈祈猫儿з 提交于 2019-11-29 09:02:02
1.插入记录 insert into emp(ename,hiredate,sal,deptno) values ('yxm1','2000-01-01','2000',1); 也可以不指定字段名称,如下 insert into emp values('yxm1','2000-01-01','2000',1); 含可空字段、非空但是含有默认值的字段、自增字段,可以不用在insert后的字段列表里面出现,values后面只写对应字段名称的value。这些没写的字段可以自动设置为NULL、默认值、自增的下一个数字,如下 insert into emp(ename,sal) values ('yxm2',1000); 在mysql中,insert语句还有一个很好的特性,可以一次插入多条记录,如下 insert into dept values (5,'dept5'),(6,'dept6'); 2.更新记录 update emp set sal=4000 where ename='jack'; 在mysql中,update语句可以同时更新多个表数据,如下 update emp a,dept b set a.sal = a.sal*b.deptno,b.deptname=a.ename where a.deptno = b.deptno; 3.删除记录 delete from emp

Oracle_多行函数

我的梦境 提交于 2019-11-29 09:01:06
Oracle_多行函数 多行函数min(),max(),count(),sum(),avg() - -1.1统计公司的最高工资,最低工资和总人数 --对于null值直接略过,不做运算 --max,min,count可以对任意类型进行操作 select max ( sal ), min ( sal ), count ( empno ) from emp ; select max ( sal ), min ( sal ), count ( comm ) from emp ; select max ( sal ), min ( sal ), count ( mgr ) from emp ; select sum ( comm ), avg ( comm ) from emp ; select max ( ename ), min ( hiredate ) from emp ; --2.统计emp表中的记录数 select count (*) from emp ; --2.1统计部门编号为10的部门员工总数 select count (*) from emp where deptno = 10 ; --3.分组group by, order by永远放在最后 --统计每个部门的部门编号,员工人数,并按照部门编号进行排序 select deptno , count (*) from emp

08-oracle统计函数(单组分组函数)

一笑奈何 提交于 2019-11-29 08:59:51
--count时尽量count(列名),count(*)也可以。 --count,max,min,sum,avg,median(中位数) select count(empno),count(distinct job),max(hiredate),min(hiredate),sum(sal),round(avg(sal),2) from emp; --median:中位数(中间值),一组按大小顺序排列的数据,处于中间位置的数。 --行数为奇数时取中间行的数值(19行/2取9行的值),偶数时取中间2行数值的平均值(若18行则中位数的值为(9行+10行)除以2)。 --如sal共15行,第8行即中位数(中间值) select median(sal) from emp; --使用group by统计每个部门的人数 select deptno,count(deptno) from emp where deptno is not null group by deptno; --group by 以职位分组,查询出每个职位的最低和最高工资 select job,min(sal),max(sal) from emp group by job; --数据统计时,语句中没有group by时,select的选项只能出现统计函数(count(),sum(),max(),min(),avg()); -

数据库学习笔记day03

拥有回忆 提交于 2019-11-28 20:23:56
创建两个表,一个名为emp,一个名为dept,并且插入数据 create table emp( empno number(4,0), ename varchar2(10), job varchar2(9), rngr number(4,0), hiredate date, sal number(7,2), comm number(7,2), deptno number(2,0) ); create table dept( deptno number(2,0), dname varchar2(14 byte), loc varchar2(13 byte) ); insert into emp values(7369,'smith','clerk',7902,to_date('1980/12/17','yyyy-mm-dd'),800.00,null,20); insert into emp values(7499,'allen','salesman',7698,to_date('1981/12/20','yyyy-mm-dd'),1600.00,300.00,30); insert into emp values(7521,'ward','salesman',7698,to_date('1982/2/22','yyyy-mm-dd'),1250.00,500.00,30);

MySQL数据库练习题

爱⌒轻易说出口 提交于 2019-11-28 19:55:13
表结构 DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; ##部门表 #DROP IF EXISTS TABLE DEPT; CREATE TABLE DEPT( DEPTNO int PRIMARY KEY,##部门编号 DNAME VARCHAR(14) , ##部门名称 LOC VARCHAR(13) ##部门地址 ) ; INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); ##员工表 #DROP IF EXISTS TABLE EMP; CREATE TABLE EMP( EMPNO int PRIMARY KEY, #员工编号 ENAME VARCHAR(10), #员工姓名 JOB VARCHAR(9), #员工工作 MGR int, #员工直属领导编号 HIREDATE DATE, #入职时间 SAL double, #工资 COMM