欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle数据库开发必备利器之SQL基础

程序员文章站 2022-04-21 15:02:46
...

2-1使用系统用户登录Oracle
用户于表空间
1.用户
2.表空间
登录SQL Ps’slus
1.系统用户
2.使用系统用户登录
系统用户
sys>system Hejun52191314
sysman
scott scott默认的密码是tiger
使用系统用户登录
Oracle数据库开发必备利器之SQL基础
查看登录用户
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’,‘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>

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