oracle



1.语法结构:根据结果集创建表

CREATE TABLE 表名 AS SELECT语句

SQL> CREATE TABLE INFOS1 AS SELECT * FROM INFOS;

TABLE CREATED

2. 使用上面命令创建的新表中,不存在任何约束,并且把查询的数据一起插入到新表中。如果只复制表结构,只需使查询的条件不成立(比如where 1=2),就不会查询从出任何数据,从而复制一个表结构。

代码演示:复制表结构

SQL> CREATE TABLE INFOS2 AS SELECT * FROM INFOS WHERE 1=2;

TABLE CREATED

3.TO_DATE('2009-8-9 06:30:10','YYYY-MM-DD HH24:MI:SS ')

Oracle中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,因此为了程序便于移植,日期的输入要使用TO_DATE函数对日期格式化后输入,采用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的格式化字符如下:

1.         yyyy表示四位年份

2.         mm表示两位月份,比如3月表示为03

3.         dd表示两位日期

4.         hh24表示小时从0-23hh12也表示小时从0-11

5.         mi 表示分钟

6.         ss表示秒

4.

//回收权限

REVOKE 角色|权限 FROM 用户(角色)

//修改用户的密码

ALTER USER 用户名 IDENTIFIED BY 新密码

//修改用户处于锁定(非锁定)状态

ALTER USER 用户名 ACCOUNT LOCK|UNLOCK

5.

Ø  Oracle是基于对象的关系型数据库,Oracle产品免费,服务收费。

Ø  Oracle安装后默认会有两个管理员用户(systemsys)和一个普通用户Scott

Ø  Sql*plusOracle管理和数据操作的客户端工具。

Ø  客户端链接服务器前,服务器要启动监听服务,并且客户端工具要安装Oracle客户端,并且在客户端要建立本地网络服务名。

Ø  Oracle服务和监听启动后才能对数据库进行操作。

Ø  用startup命令启动数据库,用shutdown命令关闭数据库。

Ø  Oracle的角色包括了一系列系统权限和普通对象权限,可以把权限授权给角色,把权限或者角色授权给用户。

6.在Oracle中,字符串的连接用双竖线(||)表示。比如,在EMP表中,查询工资在2000元以上的姓名以及工作。

SQL> SELECT (ENAME || 'is a ' || JOB) AS "Employee Details"  ①

    FROM EMP  WHERE SAL>2000;

7.在Oracle查询中结果中,可能出现若干行相同的情况,那么可以使用DISTINCT消除重复行。具体的用法如示例:

SQL> SELECT DISTINCT DEPTNO FROM EMP;

8.如果某条记录中有缺少的数据值,就是空值(NULL值)。空值不等于0或者空格,空值是指未赋值、未知或不可用的值。任何数据类型的列都可以包括NULL值,除非该列被定义为非空或者主键。

9.

Where子句中可以使用IN操作符来查询其列值在指定的列表中的行。比如:查询出工作职责是SALESMANPRESIDENT或者ANALYST的员工。条件有两种表示方法:

1.       WHERE job = 'SALESMAN ' OR job = 'PRESIDENT ' OR job = 'ANALYST '

2.       WHERE job IN ('SALESMAN', 'PRESIDENT', 'ANALYST')

10.

子查询在SELECTUPDATEDELETE语句内部可以出现SELECT语句。内部的SELECT语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表。子查询的类型有:

1.       单行子查询:不向外部返回结果,或者只返回一行结果。

2.       多行子查询:向外部返回零行、一行或者多行结果。

1. SELECT ENAME,JOB,SAL FROM EMP

    WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='SALES')

Ø  如果内部查询不返回任何记录,则外部条件中字段DEPTNONULL比较永远为假,也就是说外部查询不返还任何结果。

Ø  在单行子查询中外部查询可以使用=><>=<=<>等比较运算符。

Ø  内部查询返回的结果必须与外部查询条件中的字段(DEPTNO)匹配。

Ø  如果内部查询返回多行结果则出现错误。

2.销售员在Emp表中有很多条记录,每个人工资不相等,如果返回“比任意员工的工资还低”的条件,返回比“最高工资还低”即可。如果用子查询做,子查询中就会返回多条记录。用普通的关系符(>、<等)运行就会出错。这时候需要用关键字ANYANY放在比较运算符后面,表示“任意”的意思

SELECT ENAME,JOB,SAL FROM EMP

    WHERE SAL<ANY (SELECT SAL FROM EMP WHERE JOB='SALESMAN')  

ANY可以表示任意的,但本案例中要求比所有销售员工资都高,那么就要使用另外一个关键字ALLALL与关系操作符一起使用,表示与子查询中所有元素比较。

11.“工资最高的前5名”需要先降序排序,再取前5名,但是生成ROWNUM操作比排序要早,排序时已经连同ROWNUM一起排序了,因此不能直接在案例1的语句中直接加上Order by就行,而是需要对排序的结果重新做二次查询,产生新的ROWNUM才能作为查询的条件依据。


SELECT ROWNUM,T.* FROM  ①

        (SELECT ENAME,JOB,SAL

         FROM EMP ORDER BY SAL DESC) T  ②

    WHERE ROWNUM<=5

12.转换函数


SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS') "date"  ①

  2  FROM DUAL;

13.

desc emp  查看表emp的表结构
order by id desc按id降序排列










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值