Oracle数据库开发必备利器之SQL基础
2-1使用系统用户登录Oracle
用户于表空间
1.用户
2.表空间
登录SQL Ps’slus
1.系统用户
2.使用系统用户登录
系统用户
sys>system Hejun52191314
sysman
scott scott默认的密码是tiger
使用系统用户登录
查看登录用户
Show user命令
dba_users数据字典
数据字典是数据库提供的表,用于查看数据库的信息
启用scott用户
启用用户的语句
alter user username account unlock
表空间
理解表空间
表空间的分类
理解表空间
数据库与表空间
表空间与数据文件
表空间的分类
永久表空间
临时表空间
UNDO表空间 被修改之前的数据保存
查看用户的表空间
Dba_tablespaces user_tablespaces数据字典
设置用户的默认或临时表空间
ALTER USER username
DEFAULT|TEMPORARY
TABLESACE tablespace_name
创建表空间
CREATE[TEMPORARY]TABLESPACE
Tablespace_name
TEMPFILE|DATAFILE ‘xx.dbf’SIZE xx
修改表空间的状态
修改数据文件
修改表空间的状态
设置联机或脱机状态
ALTER TABLESPACE tablespace_name
ONLINE|OFFLINE;
设置只读或可读写状态
ALTER TABLESPACE tablespace_name
READ ONLY|READ WRITE
修改数据文件
增加数据文件
ALTER TABLESPACE tablespace_name
ADD DATAFILE ‘xx.dbf SIZE xx;
删除数据文件
ALTER TABLESPACE tablespace_name
DROP DATAFILE ‘filename.dbf’
删除表空间
DROP TABLESPACE
Tablespace_name [INCLUDING CONTENTS]
操作表
认识表
数据类型
管理表
认识表
.基本存储单位
二维结构
行列
约定
- 每一列数据必须具有相同数据类型
- 列名唯一
- 每一行数据的唯一性
数据类型
字符型
数值型
日期型
其他型
字符型
CHAR(n), NCHAR(n)
VARCHAR2(n),NVARCHAR2(n)
数值型
NUMBER(p有效数字,s小数点后的位数)
NUMBER(5,2)
有效数字5位,保留2位小数.eg:123.45
FLOAT(n)
日期型
DATA
DATA类型表示范围
公元前4712年1月1日到公元9999年12月31日(秒)
TIMESTAMP
其他类型(存放大规模数据)
BLOB(二进制存放)
CLOB(字符串存放)
管理表
创建表
修改表
删除表
创建表
基本语法
CREATE TABLE table_name
(
列名 数据类型
)
练习:创建用户信息表
所需字段
字段的类型
编号 用户名 密码 邮箱 注册时间
SQL> create table userinfo
2 ( id number(6,0),
3 username varchar2(20),
4 userpwd varchar2(20),
5 email varchar2(30),
6 regdate date);
修改表
添加字段
更改字段数据类型
删除字段
修改字段名
修改表名
添加字段
ALTER TABLE table_name
ADD column_name datatype;
SQL> alter table userinfo
2 add remarks varchar2(500);
更改字段数据类型
ALTER TABLE table_name
MODIFY column_name datatype;
SQL> alter table userinfo
2 modify userpwd number(6,0);
删除字段
ALTER TABLE table_name
DROP COLUMN column_name;
SQL> alter table userinfo
2 drop column remarks;
修改字段名
ALTER TABLE table_name
RENAME COLUMN column_name TO
New_column_name;
SQL> alter table userinfo
2 rename column email to new_email;
修改表名
RENAME table_name TO new_table_name;
SQL> rename userinfo to new_userinfo;
删除表
TRUNCATE TABLE table_name
SQL> truncate table new_userinfo;
表被截断。
SQL> desc new_userinfo;
名称 是否为空? 类型
ID NUMBER(6)
USERNAME VARCHAR2(20)
USERPWD NUMBER(6)
NEW_EMAIL VARCHAR2(30)
REGDATE DATE
DROP TABLE table_name
SQL> drop table new_userinfo
2 ;
表已删除。
SQL> desc new_userinfo;
ERROR:
ORA-04043: 对象 new_userinfo 不存在
操作表中的数据
添加数据
修改数据
删除数据
添加数据
INSERT语句
INSERT INTO table_name
(column1,column2,…)
VALUES(value1,value2,…)
操作实列
向表中所有字段添加值
SQL> insert into userinfo
2 values(1,‘xxx’,‘123’,‘aaa@qq.com’,sysdate);
已创建 1 行。
SQL> select *from userinfo
向表中指定字段添加值
SQL> insert into userinfo(id,email)
2 values(4,‘aaa’);
复制表数据
在建表时复制
CREATE TABLE table_new
AS
SELECT column1,….|*FROM table_od
SQL> create table userinfo_new
2 as
3 select *from userinfo;
在添加时复制
INSERT INTO table_new
[(column1,…)]
SELECT column1,….|*FROM table_old
SQL> insert into userinfo_new(id,username)
2 select id,username from userinfo;
修改数据
UPDATA语句
UPDATE table_name
SET column1 = value1,…
[WHERE conditions]
操作实列
无条件更新
SQL> update userinfo
2 set userpwd=‘111’,email=‘aaa@qq.com’;
有条件更新
SQL> update userinfo
2 set userpwd=‘123456’
3 where username=‘xxx’;
删除数据
DELETE语句
DELETE FROM table_name
[WHERE conditions]
无条件删除
SQL> delete from userinfo
2 where username=‘yyy’;
约束
约束的作用
定义规则
确保完整性
非空约束
在创建表时设置非空约束
CREATE TABLE table_name(
column_ datatype NOT NULL,…);
SQL> create table userinfo_1
2 (id number(6,0),
3 username varchar2(20) not null,
4 userpwd varchar2(20) not null);
在修改表时添加非空约束
ALTER TABLE table_name
MODIFY column_name datatype NOT NULL;
SQL> alter table userinfo
2 modify username varchar2(20) not null;
在修改表示去除非空约束
SQL> alter table userinfo
2 modify username varchar2(20) null;
主键约束
作用:确保表单中每一行数据的唯一性
非空 唯一
一张表只能设计一个主键约束
主键约束可以由多个字段构成(联合主键或复合主键)
在创建表时设置主键约束
CREATE TABLE table_name(
column_name datatype PRIMARY KEY,…
)
SQL> create table userinfo_p
2 (id number(6,0)primary key,
3 username varchar2(20),
4 userpwd varchar2(20));
CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…)
SQL> create table userinfo_p1
2 (id number(6,0),
3 username varchar2(20),
4 userpwd varchar2(20),
5 constraint pk_id_username primary key(id,username));
在修改表时添加主键约束
ADD CONSTRAINT constraint_name
PRIMAPY KEY(column_name1,…);
SQL> alter table userinfo
2 add constraint pk_id primary key(id);
SQL> desc user_constraints
名称 是否为空? 类型
OWNER VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
CONSTRAINT_TYPE VARCHAR2(1)
TABLE_NAME NOT NULL VARCHAR2(30)
SEARCH_CONDITION LONG
R_OWNER VARCHAR2(30)
R_CONSTRAINT_NAME VARCHAR2(30)
DELETE_RULE VARCHAR2(9)
STATUS VARCHAR2(8)
DEFERRABLE VARCHAR2(14)
DEFERRED VARCHAR2(9)
VALIDATED VARCHAR2(13)
GENERATED VARCHAR2(14)
BAD VARCHAR2(3)
RELY VARCHAR2(4)
LAST_CHANGE DATE
INDEX_OWNER VARCHAR2(30)
INDEX_NAME VARCHAR2(30)
INVALID VARCHAR2(7)
VIEW_RELATED VARCHAR2(14)
SQL> select constraint_name from user_constraints where table_name=‘USERINFO’;
CONSTRAINT_NAME
PK_ID
表已更改。
更改约束的名称
RENAME CONSTRAINT old_name
TO new_name
SQL> alter table userinfo
2 rename constraint pk_id to new_pk_id;
表已更改。
SQL> select constraint_name from user_constraints where table_name=‘USERINFO’;
CONSTRAINT_NAME
NEW_PK_ID
删除主键约束
DISABLE|ENABLE CONSTRAINT constraint_name
SQL> alter table userinfo
2 disable constraint new_pk_id;
SQL> select constraint_name,status from user_constraints where table_name=‘USERINFO’;
CONSTRAINT_NAME STATUS
NEW_PK_ID DISABLED
DISABLE|ENABLE CONSTRAINT constraint_name
DROP CONSTAINT constraint_name
DROP PRIMARY KEY[CASCADE]
SQL> alter table userinfo_p
2 drop primary key;
外键约束
在创建表时设置外键约束
从表中外键字段的值必须来自主表中相应字段的值,或者为null值
从表
CREATE TABLE table1
(column_name datatype REFERENCES
Table2(column_name),….);
后面的表称为主表
设置外键约束时,主表的字段必须是主键
主从表中相应的字段必须是同一个数据类型
SQL> create table typeinfo
2 (typeid varchar2(10) primary key,
3 typename varchar2(20));
表已创建。
SQL> create table userinfo_f
2 (id varchar2(10)primary key,
3 username varchar2(20),
4 typeid_new varchar2(10) references typeinfo(typeid));
表已创建。
SQL> insert into typeinfo values(1,1);
已创建 1 行。
SQL> insert into userinfo_f(id,typeid_new)values(1,1);
已创建 1 行。
SQL> insert into userinfo_f(id,typeid_new)values(2,null);
已创建 1 行。
Table_name(column_name)[ON DELETE CASCADE]
级联删除
create table userinfo_f2
(id varchar2(10) primary key,
typeid_new varchar2(10),
username varchar2(20),
constraint fk_typeid_new foreign key(typeid_new)references typeinfo(typeid));
create table userinfo_f3
(id varchar2(10) primary key,
typeid_new varchar2(10),
username varchar2(20),
constraint fk_typeid_new1 foreign key(typeid_new)references typeinfo(typeid));
表已创建。
在修改表时添加外键约束
ADD CONSTRAINT constraint_name FOREIGN
KEY(column_name)REFERENCES
Table_name(column_name)[ON DELETE CASCADE]
SQL> alter table userinfo_f4
2 add constraint fk_typeid_alter foreign key(typeid_new)references typeinfo(typeid);
表已更改。
删除外键约束
DISABLE|ENABLE CONSTRAINT constraint_name
SQL> alter table userinfo_f4
2 add constraint fk_typeid_alter foreign key(typeid_new)references typeinfo(typeid);
表已更改。
SQL> select constraint_type,status from user_constraints
2 where table_name=‘USERINFO_F4’;
C STATUS
P ENABLED
R ENABLED
SQL> alter table userinfo_f4
2 disable constraint FK_TYPEID_ALTER;
表已更改。
SQL> select constraint_type,status from user_constraints
2 where table_name=‘USERINFO_F4’;
C STATUS
P ENABLED
R DISABLED
SQL> alter table userinfo_f4
2 enable constraint FK_TYPEID_ALTER;
表已更改。
SQL> select constraint_type,status from user_constraints
2 where table_name=‘USERINFO_F4’;
C STATUS
P ENABLED
R ENABLED
SQL> alter table userinfo_f4
2 drop constraint FK_TYPEID_ALTER;
表已更改。
SQL> select constraint_type,status from user_constraints
2 where table_name=‘USERINFO_F4’;
C STATUS
P ENABLED
SQL>
唯一约束
唯一约束和主键约束的区别
主键字段值必须是非空的
在创建表时设置唯一约束
CREARE TABLE table_name
(column_name datatype UNIQUE,…)
SQL> create table userinfo_u
2 (id varchar2(10) primary key,
3 userpwd varchar2(20) unique,
4
SQL> create table userinfo_u
2 (id varchar2(10) primary key,
3 username varchar2(20) unique,
4 userpwd varchar2(20));
表已创建。
UNIQUE(column_name)
SQL> create table userinfo_u1
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 constraint un_username unique(username));
表已创建。
在修改表时添加唯一约束
ADD CONSTRAINT constraint_name
UNIQUE(column_name);
SQL> create table userinfo_u2
2 (id varchar2(10) primary key,
3 username varchar2(20));
表已创建。
SQL> alter table userinfo_u2
2 add constraint un_username_new unique(username);
表已更改。
删除唯一约束
DISABLE|ENABLE CONSTRAINT constraint_name
SQL> select constraint_name,constraint_type,status from user_constraints
2 where table_name=‘USERINFO_U2’;
CONSTRAINT_NAME C STATUS
SYS_C0011120 P ENABLED
UN_USERNAME_NEW U ENABLED
SQL> alter table userinfo_u2
2 disable constraint UN_USERNAME_NEW;
表已更改。
SQL>
DROP CONSTRAINT constraint_name
SQL> select constraint_name,constraint_type,status from user_constraints
2 where table_name=‘USERINFO_U2’;
CONSTRAINT_NAME C STATUS
SYS_C0011120 P ENABLED
UN_USERNAME_NEW U ENABLED
SQL> alter table userinfo_u2
2 disable constraint UN_USERNAME_NEW;
表已更改。
SQL> select constraint_name,constraint_type,status from user_constraints
2 where table_name=‘USERINFO_U2’;
CONSTRAINT_NAME C STATUS
SYS_C0011120 P ENABLED
UN_USERNAME_NEW U DISABLED
检查约束
作用:表中的值更具有实际意义
员工个人信息:
年龄,工资,电话号码
年龄=10000; X
工资=-50; X
这些都不符合实际的作用
在创建表时设置检查约束
CREATE TABLE table_name
( column_name datatype CHECK(expressions),
….)
SQL> create table userinfo_c
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0) check(salary>0));
表已创建。
SQL> insert into userinfo_c values(1,‘aaa’,-50);
insert into userinfo_c values(1,‘aaa’,-50)
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (SYSTEM.SYS_C0011122)
CONSTRAINT constraint_name
CHECK(expressions)
SQL> create table userinfo_c1
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0),
5 constraint ck_salary check(salary>0));
表已创建。
在修改表时添加检查约束
ADD CONSTRAINT constraint_name
CHECK(expressions)
SQL> create table userinfo_c3
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0));
表已创建。
SQL> alter table userinfo_c3
2 add constraint ck_salary_new check(salary>0);
表已更改。
删除检查约束
DISABLE|ENABLE CONSTRAINT constraint_name
SQL> create table userinfo_c3
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0));
表已创建。
SQL> alter table userinfo_c3
2 add constraint ck_salary_new check(salary>0);
表已更改。
SQL> desc userinfo_c3
名称 是否为空? 类型
ID NOT NULL VARCHAR2(10)
USERNAME VARCHAR2(20)
SALARY NUMBER(5)
SQL> select constraint_name,constraint_type,status from user_constraints
2 where table_name=‘USERINF0_C3’;
未选定行
SQL> select constraint_name,status from user_constraints
2 where table_name=‘USERINFO_C3’;
CONSTRAINT_NAME STATUS
SYS_C0011126 ENABLED
CK_SALARY_NEW ENABLED
SQL> alter table userinfo_c3
2 disable constraint CK_SALARY_NEW;
表已更改。
SQL> select constraint_name,status from user_constraints
2 where table_name=‘USERINFO_C3’;
CONSTRAINT_NAME STATUS
SYS_C0011126 ENABLED
CK_SALARY_NEW DISABLED
SQL>
DROP CONSTRAINT constraint_name
SQL> alter table userinfo_c3
2 drop constraint CK_SALARY_NEW;
表已更改。
SQL>
总结
非空约束
主键约束 每张表只能有一个,可以有多个字段构成
外键约束 涉及两个表之间的关系
唯一约束
检查约束
在创建表时设置约束
列级
非空约束只能在
不能在表级设置
在修改表时添加约束
ALTER TABLE table_name
MODIFY column_name datatype NOT NULL;
更改约束的名称
数据字典(user_constraints)
RENAME CONSTRAINT old_name
TO new_name
删除约束
ALTER TABLE table_name
MODIFY column_name datatype Null;
DISABLE|ENABLE CONSTRAINT constraint_name
DROP CONSTRAINT constraint_name
DROP PRIMARY KEY
查询
基本查询语句
在SQL*PLUS中设置格式
查询表中所有字段及指定字段
给字段设置别名
注意”给字段设置别名是针对查询结果进行的,并没有更改字段的名字.
运算符和表达式
在SELECT语句中使用运算符
带条件的查询
模糊查询
范围查询
对查询结果排序
Case…when语句的使用
Decode函数的使用
基本查询语句
不显示重复的
SELECT[DISTINCT] column_name1,….|*
FROM table_name
[WHERE coditions] 查询条件
在SQL*PLUS中设置格式
COLUMN column_name HEADING new_name
SQL> create table users
2 (id varchar2(10)primary key,
3 username varchar2(20),
4 salary number(5,0));
表已创建。
SQL> desc users
名称 是否为空? 类型
ID NOT NULL VARCHAR2(10)
USERNAME VARCHAR2(20)
SALARY NUMBER(5)
SQL> col username heading 用户名;
SQL> desc users
名称 是否为空? 类型
ID NOT NULL VARCHAR2(10)
USERNAME VARCHAR2(20)
SALARY NUMBER(5)
COLUMN column_name FORMAT dataformat
注意:字符类型只能设置显示的长度
SQL> select * from users;
ID 用户名 SALARY
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL> col username format a10;
SQL> select * from users;
ID 用户名 SALARY
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL>
SQL> col username format a10;
SQL> select * from users;
ID 用户名 SALARY
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL> col salary format 9999.9;
SQL> select *from users;
ID 用户名 SALARY
1 aaaa 8000.0
2 bbbb 1550.0
3 hhh 10.0
SQL> col salary format 9999.9;
SQL> select *from users;
ID 用户名 SALARY
1 aaaa 8000.0
2 bbbb 1550.0
3 hhh 10.0
SQL> col salary format 999.9;
SQL> select * from users;
ID 用户名 SALARY
1 aaaa ######
2 bbbb ######
3 hhh 10.0
SQL>
SQL> col salary format $9999.9;
SQL> select * from users;
ID 用户名 SALARY
1 aaaa $8000.0
2 bbbb $1550.0
3 hhh $10.0
SQL>
COLUMN column_name CLEAR
3 hhh $10.0
SQL> col username clear;
SQL> col salary clear;
SQL> select * from users;
ID USERNAME SALARY
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL>
SQL> col id heading 编号
SQL> ;
1* select * from users
SQL> col username heading 用户名;
SQL> col salary heading 工资;
SQL> select *from users;
编号 用户名 工资
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL>
查询自定字段
SQL> select username,salary from users;
用户名 工资
aaaa 8000
bbbb 1550
hhh 10
SQL>
给字段设置别名
SELECT column_name AS new_name,….
FROM table_name
SQL> select id as 编号,username as 用户名,salary 工资
2 from users;
编号 用户名 工资
1 aaaa 8000
2 bbbb 1550
3 hhh 10
SQL>
去掉重复的数据
SQL> select distinct username as 用户名
2 from users;
用户名
bbbb
hhh
aaaa
SQL>
运算符和表达式
表达式 23
表达式 = 操作数+运算符
Oracle中的操作数可以有变量,常量和字段
算术运算符(+,-,,/)
比较运算符(>,>=,<,<=,=<,>)
5>4 true 5>9 false
逻辑运算符(and,or,not)
Or 两边同时为假 为false
5<3 or 9<4结果为false
5<3 or 9>4 结果为ture
5>3or 9<4结果为 true
5>3 or 9>4 结果为ture
Not (9<4) true
Not(9>4)结果为false
工资加200
SQL> select id,username,salary+200 from users;
编号 用户名 SALARY+200
1 aaaa 8200
2 bbbb 1750
3 hhh 210
SQL>
使用比较运算符
SQL> select username from users where salary >800;
用户名
aaaa
bbbb
SQL>
< >不等于
SQL> select username from users where salary>800 and salary<>8200;
用户名
aaaa
bbbb
SQL>
带条件的查询
SQL> select salary from users where username=‘aaaa’;
工资
8000
SQL> select username,salary from users where id=3;
用户名 工资
hhh 10
多条件的查询
SQL> select *from users where username=‘aaaa’ or salary>2000;
编号 用户名 工资
1 aaaa 8000
SQL>
查询名字是aaaa,或者工资在800到2000之间的员工的信息
SQL> select * from users where username=‘aaaa’ or (salary>800 and salary<=200)
2 ;
编号 用户名 工资
1 aaaa 8000
SQL>
逻辑运算符的优先级:按not ,and,or 的顺序依次递减
比较运算符高于逻辑运算符
SQL> select *from users where not(username=‘aaaa’);
编号 用户名 工资
2 bbbb 1550
3 hhh 10
SQL>
带条件的查询
SQL> create table users_info
2 (id number(6,0),
3 username varchar2(20),
4 salary varchar2(20));
表已创建。
SQL> insert into users_info
2 values(1,‘aaaa’,‘80000’);
已创建 1 行。
SQL> select * from users_info;
ID USERNAME SALARY
1 aaaa 80000
2 nnnn 89552
3 bbbb 1234
SQL> select salary from users_info where username=‘aaaa’;
SALARY
80000
SQL> select username,salary from users_info where id=3;
USERNAME SALARY
bbbb 1234
SQL>
模糊查询
通配符的使用(_ %)
一个_只能代表一个字符
%可以代表0到多个任意字符
使用LIKE查询
SQL> select * from users_info where username =‘aaaa’ or salary>2000;
ID USERNAME SALARY
1 aaaa 80000
2 nnnn 89552
SQL> select * from users_info where username='aaaa’or (salary>800and salary<>8000);
ID USERNAME SALARY
1 aaaa 80000
2 nnnn 89552
3 bbbb 1234
SQL> select * from users_info where not (username=‘bbbb’);
ID USERNAME SALARY
1 aaaa 80000
2 nnnn 89552
SQL> select * from users_info where username like ‘a%’;
ID USERNAME SALARY
1 aaaa 80000
SQL> select * from users_info where username like ‘a_’;
未选定行
SQL> select username from users where username like ‘_a%’;
未选定行
SQL> select username from users_info where username like ‘_a%’;
USERNAME
aaaa
SQL> select username from users_info where username like ‘%a%’;
USERNAME
aaaa
SQL>
范围查询
Eg: 查询800到2000之间的员工工资
Salary>=80 and salary<=2000
BETWEEN…AND
SQL> select * from users_info where salary between 800and 2000;
ID USERNAME SALARY
3 bbbb 1234
SQL>
IN/NOT IN
SQL> select * from users_info where salary between 800and 2000;
ID USERNAME SALARY
3 bbbb 1234
SQL> select * from users_info where username in(‘bbbb’,‘nnnn’);
ID USERNAME SALARY
2 nnnn 89552
3 bbbb 1234
SQL> select * from users_info where username not in(‘bbbb’,‘nnnn’);
ID USERNAME SALARY
1 aaaa 80000
SQL>
对查询结果排序
SELECT…FROM…[WHERE…]
ORDER BY column1 DESC/ASC,…
DESC 降序
DESC,ASC, 多个字段同时排序
SQL> select * from users_info order by id desc;
ID USERNAME SALARY
3 bbbb 1234
2 nnnn 89552
1 aaaa 80000
SQL> select * from users order by id desc,salary asc;
未选定行
SQL> select * from users_info order by id desc,salary asc;
ID USERNAME SALARY
3 bbbb 1234
2 nnnn 89552
1 aaaa 80000
SQL> insert into users_info valuse(4,‘aaa’,‘10000’);
insert into users_info valuse(4,‘aaa’,‘10000’)
*
第 1 行出现错误:
ORA-00928: 缺失 SELECT 关键字
SQL> insert into users_info values(4,‘ccccc’,‘10000’);
已创建 1 行。
SQL> select * from users_info order by username desc,salary asc;
ID USERNAME SALARY
2 nnnn 89552
4 ccccc 10000
3 bbbb 1234
1 aaaa 80000
SQL>
Case…when语句的使用
CASE column_name
WHEN value1 THEN RESULT1,….
[ELSE result] END
SQL>
SQL> select username,case when username=‘aaaa’ then ‘计算机部门’
2 when username =‘bbbb’ then ‘市场部门’ else ‘其他部门’ end as 部门
3 from users_info;
USERNAME 部门
aaaa 计算机部门
nnnn 其他部门
bbbb 市场部门
ccccc 其他部门
SQL>
SQL> select username, case when salary <800 then ‘工资低’
2 when salary>5000 then ‘工资高’ end as 工资水平
3 from users_info;
USERNAME 工资水
aaaa 工资高
nnnn 工资高
bbbb
ccccc 工资高
SQL>
Decode(column_name,value1,result1,…,defaultvalue)
SQL> select username,decode(username,‘aaaa’,‘计算机部门’,‘bbbb’,‘市场部门’,‘其他’)as 部门
2 from users_info;
USERNAME 部门
aaaa 计算机部门
nnnn 其他
bbbb 市场部门
ccccc 其他
SQL>
课程总结
用户与表空间
表与约束
查询语句