基于oracle的sql(结构化查询语言)指令

时间:2022-07-24
本文章向大家介绍基于oracle的sql(结构化查询语言)指令,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

创建表空间

create tablespace 表空间名 datafile

'存储路径(c:aa.dbf)'

size 200m autoextend on next 10m maxsize unlimited

删除表空间

drop tablespace 表空间名

创建用户

create user 用户名 identified by 密码;

用户名,密码 不能用关键字,且都不能用数字开头。

创建用户时可以直接指定默认表空间,例子如下:

create user smn identified by orcl default tablespace smn

也可以先创建后设置默认表空间,例子如下:

alter user smn default tablespace smn

更改用户密码

alter user 用户名 identified by 新密码;

删除用户密码

drop user 用户名 【cascade】;

注:cascade 作用相当于级联删除,可以不写

给用户授权

grant 权限名 to 用户名;

对于程序员一般授权dba权限

回收用户权限

revoke 权限 from 用户名;

revoke 权限 on 表名 from 用户名;

使用dos连接数据库

sqlplus 用户名/密码@IP地址:程序IP/数据库名[as sysdba/sysoper]

注意:当用特权用户身份连接时,必须带上as sysdba或as sysoper,连接本地数据库时IP地址为localhost

例子:sqlplus smn/smn@192.168.58.2:1521/orcl

   sqlplus sys/orcl@192.168.58.2:1521/orcl as sysdba

使用dos切换用户

conn sys as sysdba

conn system

注意:sys不能以normal身份登录;system不能以sysoper身份登录

使用dos显示用户

show user;

退出

exit;

查询用户是否存在

select * from dba_users where username='SMN'

注意:‘SMN’ 这部分必须大写才能查到

查询表空间是否存在

select * from dba_data_files where tablespace_name='SMN'

创建表

create table student(
    xh number(4),/*学号*/
    xm varchar2(10)/*姓名*/
)

修改表

/*添加表字段*/
alter    table     student    add( 
     classid  number(2)
)   
/*修改字段长度*/
alter    table     student    modify(
    xm  varchar2(30)
)
/*修改字段的类型(不能有数据)*/
alter    table     student     modify(
    xm    char(30)
)
/*修改字段的名字(不能有数据)*/
alter    table  student  rename   column  aa   to  bb;

删除表字段

alter table student drop column sal;

oracle表的管理

/*删除表中所有数据*/
delete from student
/*删除表中指定条件的数据*/
delete from student where name='张三'
/*删除表中所有数据(不可恢复,一般不用)*/
truncate table student
/*删除表中数据和整个表结构*/
drop table student
/*向表中添加数据*/
/*1.student  表中的所有字段都得给值,值给不全会报错*/
insert   into  student   values( 1,'张三','男','11-12月-2014',120.23)
/*2.向表中添加部分字段数据*/
insert   into  student (xh,xm,sex) values ( 1,'张三','男');
/*3.向表中添加空数据*/
insert   into  student (xh,xm,sex,birthday) values ( 1,'张三','男',null);

查询

1.表中的所有字段及所有记录全部查出来

select * from student

2.按字段查询

select name,age from student

3.如果某一字段为空

select * from student where birthday is null;

4.按条件查询

and 并且的关系

or 或者的关系

向表中添加多行记录

insert into 表名B (empno,ename,birdate)
(select empno+100,ename,birdate
from 表名A
where empno>7000
)
/*
注意:1)表B是已存在的表
     2)字段个数要相同,否则报错
*/

表间数据的复制

create table 表名A
as(
select empno,ename,birdate
from 表名B
where empno>7000
)
/*将表B按条件复制给新建的表A*/

修改字段数据

1.修改一个字段数据

update student set sex='女' where xh=1;

2.修改多个字段数据

update student set sex='男',birthday='1980-04-01' where xh='1';

3.嵌套修改字段数据

update student set sal=
(
    select sal+300
    from 表名 where empno=7559
)
where empno=7599;

Oracle表主键、外键

三种方式:

1)先有表,在创建主外键

/*创建主表*/
create table student(
stuid number(6),
stuname varchar2(30)
)
/*为表加主键*/
alter table student add primary key(stuid);
/*创建子表*/
create table scoretable(
scorid number(6),
score number(6,2),
stuid number(6)
)
/*为表加外键*/
alter table scoretable add foreign key(stuid) references student(stuid);

2)创建表的同时创建主外键

create table lv1table(
id number(10) primary key,
name varchar2(20)
)

create table lv2table(
id number(10),
name varchar2(20),
foreign key(id) references lv1table(id)
)

3)创建表的同时创建主外键并给主外键取名

create table lv3table(
id number,
name varchar2(20),
constraint "lv3table主键id" primary key(id)
)

create table lv4table(
id number,
name varchar2(20),
pid number,
constraint "lv4table外键pid" foreign key(pid) references lv3table(id)
)