Oracle 常用SQL语句(7)

2019-03-22 09:05

11添加一个有check约束的新列:

alter table EMP

add (COMMISSION number(2) constraint emp_commission_ck check(commission>0))

12查询数据字典看中间的元素: SELECT object_name, object_type FROM user_objects

WHERE object_name LIKE 'EMP%' OR object_name LIKE 'DEPT%' 13普通的建表语句:

CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));

14查询对象类型:

SELECT DISTINCT object_type FROM user_objects ;

15使用子查询建立表:

CREATE TABLE dept80

AS SELECT employee_id, last_name, salary*12 ANNSAL,

hire_date FROM employees WHERE department_id = 80;

16删除表:

drop table emp;

17改变对象名:(表名,视图,序列) rename emp to emp_newTable

18添加表的注释:

COMMENT ON TABLE employees IS 'Employee Information';

19创建视图:

CREATE VIEW empvu80

AS SELECT employee_id, last_name, salary

FROM employees WHERE department_id = 80;

20查看视图结构:

describe view_name

21删除视图:

drop view view_name

22找到工资最高的5个人。(top-n分析)(行内视图) select rownum,employee_id from (select employee_id,salary from

employees order by salary desc) where rownum<5;

23在数据字典中查看视图信息:

select viewe_name,text from user_views

24增加一行:

insert into table_name values();

25查看数据字典中的序列:

select * from user_sequences

26建立同义词:

create synonym 同义词名 for 原来的名字

或者 create public synonym 同义词名 for 原来的名字

27建立序列:(注意,这里并没有出现说是哪个表里面的序列!!)

CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE

28使用序列:

insert into dept(ID,NAME) values(DEPT_ID_SEQ.nextval,'Administration');

29建立索引://默认就是nonunique索引,除非使用了关键字:unique

CREATE INDEX emp_last_name_idx ON employees(last_name);

30建立用户:(可能有错,详细查看帮助)

create user username(用户名) identified by oracle(密码)

default tablespace data01(表空间名//默认存在system表空间里面)

quota 10M(设置大小,最大为unlimited) on 表空间名//必须分配配额!

31创建角色:create ROLE manager

赋予角色权限:grant create table,create view to manage

赋予用户角色:grant manager to DENHAAN,KOCHHAR( 两个用户)

32分配权限:

GRANT update (department_name, location_id) ON departments TO scott, manager;

??回收权限

REVOKE select, insert ON departments FROM scott;

33得到所有的时区名字信息:

select * from v$timezone_names

34显示对时区‘US/Eastern’的时区偏移量

select TZ_OFFSET('US/Eastern') from DUAL--dual英文意思是‘双重的’

??显示当前会话时区中的当前日期和时间:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';--修改显示时间的方式的设置

ALTER SESSION SET TIME_ZONE = '-5:0';--修改时区

SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;--真正有用的语句!

SELECT CURRENT_TIMESTAMP FROM DUAL;--返回的时间是当前日期和时间,含有时区 SELECT CURRENT_TIMESTAMP FROM DUAL;--返回的时间是当前日期和时间,不含有时区!!!

35显示数据库时区和会话时区的值:

select datimezone,sessiontimezone from dual;

36从时间中提取年,月,日:使用函数extract

select extract(year from sysdate) year,extract(month from sysdate), extract(day from sysdate) from dual;

37使用函数得到数月之后的日期:to_yminterval(‘01-02’)表示加上1年2月,不能够到天!!

select hire_date,hire_date +to_yminterval('01-02') as hire_date_new from employees

where department_id=20

得到多少天之后的日期:直接日期加数字!

select hire_date +3 from employees where department_id=20

38一般的时间函数:

MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')--两个日期之间的月数,返回一个浮点数 ADD_MONTHS ('11-JAN-94',6)--添加月数

NEXT_DAY ('01-SEP-95','FRIDAY') --下一个星期五的日期 LAST_DAY('01-FEB-95')--当月的最后一天! ROUND(SYSDATE,'MONTH') --四舍五入月 ROUND(SYSDATE ,'YEAR') --四舍五入年 TRUNC(SYSDATE ,'MONTH') --阶段月 TRUNC(SYSDATE ,'YEAR') --截断年

39 group语句:和高级的应用语句:

SELECT department_id, job_id, SUM(salary), COUNT(employee_id) FROM employees GROUP BY department_id, job_id ; 使用having进行约束:

1.group by rollup:对n列组合得到n+1种情况

SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY ROLLUP(department_id, job_id);

2.group by cube:得到2的n次方种情况

SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY CUBE (department_id, job_id) ;

3.使用grouping得到一行中构成列的情况,只是返回1和0:是空的话就返回1,否则返回0(注意不要弄反了!)

SELECT department_id DEPTID, job_id JOB, SUM(salary), GROUPING(department_id) GRP_DEPT, GROUPING(job_id) GRP_JOB

FROM employees WHERE department_id < 50 GROUP BY ROLLUP(department_id, job_id);

4.grouping sets:根据需要得到制定的组合情况

SELECT department_id, job_id, manager_id,avg(salary) FROM employees GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id));

40from中使用子查询:返回每个部门中大于改部门平均工资的与员工信息

SELECT a.last_name, a.salary, a.department_id, b.salavg FROM employees a,--下面的地方就是子查询了,主要返回的是一组数据!

(SELECT department_id, AVG(salary) salavg FROM employees GROUP BY department_id) b


Oracle 常用SQL语句(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:暖通空调CAD技术及相关软件的开发

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: