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]

操作表

认识表
数据类型
管理表

认识表
.基本存储单位
二维结构
行列
约定

  1. 每一列数据必须具有相同数据类型
  2. 列名唯一
  3. 每一行数据的唯一性

数据类型
字符型
数值型
日期型
其他型

字符型
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’,‘[email protected]’,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=‘[email protected]’;
有条件更新
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>

课程总结
用户与表空间
表与约束
查询语句

发布了68 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42913025/article/details/102645697