oracle数据库基本语法

•create user 用户名 identified by  密码  创建用户
•drop user 用户名  删除用户名    删除用户时如果已经创建表必须指定cascade
•grant   connect  to    用户名    增加权限
•--增加注释
comment on table t_student is '学员基本信息表';
comment on column t_student.sex is '性别';
comment on column t_student.birthday is '出生日期';
•/*修改表结构
1)、修改数据类型、非空约束、增加主键、默认值等等
2)、修改列的名字
*/
alter table t_student
modify name null;
•alter table t_student
modify sex varchar2(12);
•alter table t_student
modify sex default null;
•alter table t_student
modify sex varchar2(12) default null;
•alter table t_student
modify id number constraint pk_t_student_id primary key;
•alter table t_student
rename column sex to ssex;
•--修改表名
ALTER TABLE old_table_name RENAME TO new_table_name;
/*新增列*/
alter table t_student
add classid number not null;
•/*删除列*/
alter table t_student
drop column classid;
•--删除表结构
drop table t_student;
•Oracle分析函数的语法与作用:
rank ( )             over ( [query_partition_clause]order_by_clause )
dense_rank ( ) over ([query_partition_clause] order_by_clause )
rownumber ( )  over ( [query_partition_clause]order_by_clause )
可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中partition by 为分组字段,order by 指定排序字段
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用
•
 select * from (

select deptno,sal,ename, dense_rank( ) over(order by sal desc) pm from emp)

where pm<=11查询工资前11名人的信息(考虑第11和12人的工资相等的情况)

13、-----rank(),dense_rank()与row_number():求排序
rank()值相同时排名相同,其后排名跳跃不连续
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW
select * from (
 select deptno,sal,ename, rank()over(order by sal desc) pm from emp)
 where pm<=11

dense_rank()值相同时排名相同,其后排名连续不跳跃
DENSE_RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW
select * from (
 select deptno,sal,ename, dense_rank()over(order by sal desc) pm from emp)
 where pm<=11

row_number()值相同时排名不相等,其后排名连续不跳跃
ROW_NUMBER() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RW
select * from (
 select deptno,sal,ename, row_number()over(order by sal desc) pm from emp)
 where pm<=11
14、-lag()与lead():求之前或之后的第N行 
lag和lead函数可以在一次查询中取出同一字段的前n行的数据和后n行的值。这种操作可以使用对相同表的表连接来实现,不过使用lag和lead有更高的效率。
lag/lead(arg1,arg2,arg3)
第一个参数是列名,
第二个参数是偏移的offset,
第三个参数是超出记录窗口时的默认值。
举例如下:
SQL> select *  from kkk;                                          
                                                                  
        ID NAME                                                   
---------- --------------------                                   
         1 1name                                                  
         2 2name                                                  
         3 3name                                                  
         4 4name                                                  
         5 5name                                                  
SQL> select id,name,lag(name,1,0) over(order by id) from kkk; 
                                                                  
        ID NAME                 LAG(NAME,1,0)OVER(ORDERBYID)      
---------- -------------------- ----------------------------      
         1 1name                0                                 
         2 2name                1name                             
         3 3name                2name                             
         4 4name                3name                             
         5 5name                4name

SQL> select id,name,lead(name,1,0) over(order by id) from kkk;
                                                                  
        ID NAME                 LEAD(NAME,1,0)OVER(ORDERBYID)     
---------- -------------------- -----------------------------     
         1 1name                2name                             
         2 2name                3name                             
         3 3name                4name                             
         4 4name                5name                             
         5 5name                0

SQL> select id,name,lead(name,2,0) over(order by id) from kkk;                                                                                                               
        ID NAME                 LEAD(NAME,2,0)OVER(ORDERBYID)     
---------- -------------------- -----------------------------     
         1 1name                3name                             
         2 2name                4name                             
         3 3name                5name                             
         4 4name                0                                 
         5 5name                0  
SQL> select id,name,lead(name,1,'linjiqin') over(order by id) from kkk;                                  
                                                                                  
        ID NAME                 LEAD(NAME,1,'ALSDFJLASDJFSAF')                    
---------- -------------------- ------------------------------                    
         1 1name                2name                                             
         2 2name                3name                                             
         3 3name                4name                                             
         4 4name                5name                                             
         5 5name                linjiqin  







1、(神谕、甲骨文公司)提供的一款关系型数据库管理系统 使用表格作为存储数据的基本单元
2、在命令行取消设置折痕  set  linesize  数字    
3、在命令行设置每页显示数据长度   set pagesize 数字
4、命令行中的编辑操作  
ed 文件名,回车,点击是,
然后在记事本里输入查询语句比如:select * from emp
保存退出,最后在命令行输入 @文件名
点击回车,就会执行记事本里面的语句
5、查询不在当前用户下的表必须在表的前面加上用户名,在数据库中用户名也叫模式名称
6、连接操作:
  切换用户
connect 用户名/密码 as sysdba
查看当前用户
show user
7、使用'||'可以连接查询结果
  select '编号是:' || empno || '的姓名是:'|| ename  员工信息  from emp
8、数据库不在本机切换用户的方式
  coun /connect 用户名/密码    服务名 as sysdba
9、查看数据字典包含的字段
desc dba_users
10、查询数据字典包含的用户
 select username from dba_users
11、由于数据库用户有些事预制的,所以状态是锁定的,查看oracle用户的状态:
select username,account_status from dba_users;
12、对于状态是锁定的用户,启用用户的语句
  alter user 用户名 account unlock
13、管理员数据字典
  dba_tablespaces, dba_users
14、普通用户数据字典
  user_tablespaces,user_users
15、设置默认或临时的表空间
   alter user 用户名
default/temporary
tablespace 表空间名
16、创建表空间语法
 create temporary | tablespace tablespace_name(表空间名) tempfile | datafile  数据文件名file.dbf size 大小
17、查看默认/临时表空间
select default_tablespace,temporary _tablespace from dba_user where  username='system'(管理员的)
select default_tablespace,temporary _tablespace from user_user where  username='cotts'(普通用户的)
18、default_tablespace默认表空间
temporary _tablespace临时表空间
19、查询表空间
  select tablespace_name from dba_tablespaces
select tablespace_name from user_tablespaces(普通用户)
20、创建永久表空间
create tablespace test1_tablespace datafile 'test1file.dbf' size 10M
21、创建临时表空间
create temporary tablespace temptest1_tablespace tempfile 'tempfile.dbf' size 10M
22、查询永久表空间包含的字段
desc dba_data_files
23、查询临时表空间包含的字段
desc dba_temp_files
24、设置联机或脱机状态
  alter tablespace tablespace_name(表空间名) online /offline
25、查看表空间的状态
  select status  from dba_tablespaces where  tablespace_name='TEST1_TABLESPACE'
26、设置只读或可读写的状态
  alter tablespace  tablespace_name(表空间名) read only / read write    read write默认
27、往表空间增加数据文件
  create  tablespace tablespace_name(表空间名) add datafile  数据文件名file.dbf size 大小
28、删除表空间的数据文件
  create  tablespace tablespace_name(表空间名) drop datafile  数据文件名_file.dbf
29、删除表空间   (保留数据)
 drop tablespace  tablespace_name(表空间名)   
30、删除表空间   (不保留数据)
drop tablespace  tablespace_name(表空间名)   including contents
31、查询一个用户下的所有表
 select * from tab
32、windows调用本机操作系统的命令           host dir
33、复制一个文件           host copy 原文件名  新文件名
34、表空间      
 表空间是存储数据库对象的容器,表和表空间之间的关系就相当于文件和文件夹一样,每次创建数据库的时候,系统默认的创建一个system系统表空间一个数据库可以有一个system表空间,也可以包含若干个
35、常用的字符类型   char、varchar、varchar2
   Varchar2(n):oracle自行定义的类型,兼容性特别,在企业中一般都是用varchar2
   char(n)      用于标识固定长度的字符串,n表示该字符串最大的保存字符个数。当实际保存数据小于n,在右边使用空格补齐
Varchar(n):可变字符串,n表示该字符串中最大保存字符的个数,当实际保存数据的个数小于n的时候,则会按照实际长度进行保存
36、number:可以用来存储整数和小数
   Number(参数):表示最大参数位数的数字
Number(参数1,参数2):参数1代表有效数字的最大位数,参数2代表小数的位数,    整数的最大位数(参数1-参数2)。
37、SQL语句:结构化查询语言,是专门为操作数据库而建立所做的命令集,功能齐全的数据库语言,通过SQL完成对数据库的任何操作,每一种数据库都不太一样,都可以使用同一个Sql语句对数据库进行基本操作,掌握SQL语言就可以操作任何的数据库,学习的重点
38、DDL数据库定义语句,用来创建,修改删除表
create  、   drop   、  alter
DML数据操作语句,用来操作表的数据。插入。修改,删除
insert、update、5 delete
DCL(TCL)事务控制语句,用来管理数据库的事务
commit、 rollback
DQL数据查询语句,用来查询所需要的数据(重点)
Select
39、创建表的格式
    create    table   表名(
列名1  数据类型  primary key,
列名2   数据类型,
列名n   数据类型
);
40、查看表结构
   desc  表名
41、修改格式
  update 表名  set 列名1=该列新值,列名2=该列新值……
Where  条件;
注意;where前面没有逗号
根据where条件修改表中的数据,没有where条件,可以修改表中所有的数据
42、删除语句
  delete   from   表名    where  条件
   根据where条件删除表中对应数据,没有where条件删除表中所有数据
43、向表中所有的列插入数据
  insert into 表名 values(列值1,列值2…...)
插入的字符串类型必须单引号
44、查询表中所有数据
select  *  from  表名

修改表名的方法:alter table old_table_name rename to new_table_name
45、向指定的列插入数据表名()中列名必须跟values中列值一一对应。没有插入值默认为空
insert into 表名(列名1,列名2…..) values(列值1,列值2….)
插入的字符串必须单引号
46、truncate 删除表中数据
     truncate   table  表名
   直接删除表中所有的数据。而且使用truncate删除的数据,永远都不能还原。但是删除速度是最快
47、删除表
   drop   table   表名
48、去掉重复的列值           distinct
    select distinct id,name,sal from number3;去重3个字段  distinct必须放在开头
49、查询某些列的所有数据
   select    列名1,列名2,列名3…………...from 表名

查询指定行数的数据
SELECT <字段列表> from  WHERE ROWNUM<行数;
示例:
select * from emp where rownum<=10;--查询前10行记录
复制表
CREATE TABLE  as