基于oracle的sql(结构化查询语言)指令
创建表空间
create tablespace 表空间名 datafile
'存储路径(c:\a\a.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;
/*修改表的名字*/
rename student to stu;
删除表字段
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) )