当前位置: 代码迷 >> SQL >> Oracle 11G 第二章 SQL查询跟函数
  详细解决方案

Oracle 11G 第二章 SQL查询跟函数

热度:30   发布时间:2016-05-05 12:23:22.0
Oracle 11G 第二章 SQL查询和函数
[/color]SQL> remark 日期类型date date缺省的数据格式为:dd-mm 月 -yy   (18-7月-13)
SQL> remark 获取的当前系统的时间
SQL> select sysdate from dual;
[/size]
SYSDATE                                                                        
--------------                                                                 
05-3月 -13                                                                     

SQL> remark 设定当前会话的表现格式
SQL> alter session set nls_date_format='yyy-mm-dd';

Session altered.

SQL> select sysdate from dual;

SYSDATE                                                                        
---------                                                                      
013-03-05                                                                      

SQL> remark 指定格式输出日期类型
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

TO_CHAR(SY                                                                     
----------                                                                     
2013-03-05                                                                     

SQL> remark 当字段的值由于环境没有准备好的时候,需要在表中记录空值;使用null进行标识
SQL> remark insert into table_name values(null);
SQL> remark 特殊类型:ROWID 在数据库中使一个虚拟的列,即系统用的特殊的列
SQL> remark SQL命令
SQL> remark 数据定义语言(DDL)
SQL> remark :数据定义语言主要用于创建、删除数据库的对象和维护数据对象的属性;create drop alter 三个主要的命令;
SQL> remark 创建普通的数据表
SQL> create table aTest
  2  (
  3  stuID int primary key,
  4  stuNAME char(8),
  5  address varchar(50)
  6  )
  7  ;

Table created.

SQL> remark 创建备份数据表
SQL> create table empBak as select * from aTest;

Table created.

SQL> remark 修改表格字段:添加字段
SQL> alter table aTest add(phone varchar(20));

Table altered.

SQL> remark 修改字段
SQL> alter table aTest modify(address varchar(60));

Table altered.

SQL> remark 删除字段
SQL> alter table aTest drop (stuName);

Table altered.

SQL> remark 数据库操作语言DML
SQL> remark select * from A inner join B on A.id = B.id;
SQL> remark 数据操作语言主要是对数据表操作的一些指令,包括select insert update delete
SQL> remark ....
SQL> remark ....
SQL> remark 数据控制语言DCL
SQL> remark 数据控制语言主要用于对数据库中的权限的授予和取消;
SQL> remark grant 赋予权限,常用于系统权限授权,语法:
SQL> remark grant 系统权限/connect/resource/dba to 用户名;
SQL> remark 对象权限授权
SQL> remark 给用户授予对象的权限首先要使用对象所有者进行登陆;语法
SQL> renark grant 对象权限名|all on 对象名(表名) to 用户名
SP2-0734: unknown command beginning "renark gra..." - rest of line ignored.
SQL> remark grant 对象权限名|all on 对象名(表名) to 用户名
SQL> remark 回收权限
SQL> remark revoke 用于回收权限,系统管理员可以收回系统权限,对象所有者可以收回赋予用户的对象权限;语法如下:
SQL> remark revoke 系统权限名 from 用户名
SQL> remark revoke 对象权限名 on 对象名 from 用户名
SQL> remark ......................................
SQL> remark 事务控制语言(TCL)
SQL> remark 事务控制命令:commit /rollback/savepoint
SQL> commit;

Commit complete.

SQL> create table users
  2  (
  3  id int primary key,
  4  uname varchar(20)
  5  )
  6  ;

Table created.

SQL> remark 插入一条语句
SQL> insert into users values(1,'张三');

1 row created.

SQL> remark 创建保存点
SQL> savepoint p1;

Savepoint created.

SQL> remark 修改数据
SQL> update users set uname='李四' where id = 1;

1 row updated.

SQL> remark 创建保存点
SQL> savepoint p2;

Savepoint created.

SQL> remark 修改数据
SQL> update users set uname='王五' where id = 1;

1 row updated.

SQL> remark 创建保存点
SQL> savepoint p3;

Savepoint created.

SQL> remark 回退
SQL> rollback to p2;

Rollback complete.

SQL> commit;

Commit complete.

SQL> remark  查询表格
SQL> select * from users;

        ID UNAME                                                               
---------- --------------------                                                
         1 李四                                                                

SQL> remark ........................
SQL> remark 伪表及伪列 dual 的伪表
SQL> ramark Oracle提供了一个dual的伪表,该表的主要作用使保证在使用了select 的语句中语句的完整性;  DUAL这个表的数据只有一行一列;
SP2-0734: unknown command beginning "ramark Ora..." - rest of line ignored.
SQL> eidt
SP2-0042: unknown command "eidt" - rest of line ignored.
SQL> remark Oracle提供了一个dual的伪表,该表的主要作用使保证在使用了select 的语句中语句的完整性;  DUAL这个表的数据只有一行一列;
SQL> remark ROWID 记录每个数据行在硬盘上位置的唯一标识
SQL> remark ROWNUM 标识查询结果集中的记录序号;
SQL> remark 查询rowid的例子;
SQL> select rowid,enpno,ename from  scott.emp where deptno=20;
select rowid,enpno,ename from  scott.emp where deptno=20
             *
ERROR at line 1:
ORA-00904: "ENPNO": invalid identifier


SQL> eidt
SP2-0042: unknown command "eidt" - rest of line ignored.
SQL> select rowid,empno from scott.emp where deptno=20;

ROWID                   EMPNO                                                  
------------------ ----------                                                  
AAAL+ZAAEAAAAAdAAA       7369                                                  
AAAL+ZAAEAAAAAdAAD       7566                                                  
AAAL+ZAAEAAAAAdAAH       7788                                                  
AAAL+ZAAEAAAAAdAAK       7876                                                  
AAAL+ZAAEAAAAAdAAM       7902                                                  

SQL> remark ..................................
SQL> remark 集合运算
SQL> remark 并集(union) :union指令的目的是将两个sql语句的结果合并起来
SQL> remark union 会排除重复的记录。
SQL> remark union all 不会排除重复的记录。】
SQL> remark union all 比 Union 速度快很多,建议在相同的情况下UNION ALL。
SQL> remark 注意:两个select 语句的字段类型匹配,而且字段个数要相同;
SQL> remark .......................................................
SQL> remark 交集 intersect 交集会在两个查询结果中找到相同的记录;
SQL> remark 割集/剪集 minus 割集会从第一个结果集合中减去第二个结果集合中存在的记录。
SQL> remark ............................................................
SQL> remark 函数
SQL> remark lower('dfG') 将所有的字符变为小写  upper();反之
SQL> remark trim(截断);
SQL> remark 日期函数:当行日期函数操作date数据类型,绝大多数都有date数据类型的参数,绝大多数返回的也使date数据类型
SQL> remark add_months(D,<n>); 返回D加上n个月后的数据
SQL> select add_months(sysdate,3) from dual;

ADD_MONTH                                                                      
---------                                                                      
013-06-05                                                                      

SQL> remark last_day(d); 返回包含日期D 的月份的最后一天。
SQL> select last_day(sysdate) from dual;

LAST_DAY(                                                                      
---------                                                                      
013-03-31                                                                      

SQL> remark next_day(D,'DAY'); 返回日期D 后由DAY绘出条件的第一天
SQL> select next_day(sysdate ,'星期五') from dual;

NEXT_DAY(                                                                      
---------                                                                      
013-03-08                                                                      

SQL> remark round(d,fmt); 、将日期D 按照FMT指定的格式舍入,FMT为字符串
SQL> select round(sysdate,'yyyy') from dual;

ROUND(SYS                                                                      
---------                                                                      
013-01-01                                                                      

SQL> remark ..........................................................
SQL> remark 分组函数
SQL> remark avg()  count() max() min()  sum()
SQL> remark 排序函数
SQL> remark row_number() 顺序排序函数   rank() 函数,排序存在相同值给出相同序号,同时空出预留序号  dense_rank() 函数 排序存在相同值给出相同序号,但不空出预留序号。
SQL> remark ..............
SQL> remark 窗口函数
SQL> remark over(partition by 分组字段名 order by 排序字段名 ) ; 窗口函数在查询语句中紧跟着排序函数。如果不需要分组可以忽略partition by.
SQL> spool off;
[size=x-small]
[color=darkred]
  相关解决方案