转载自友情链接
创建表的命令、插入记录、更改记录、删除记录的命令
- 创建表的命令
命令格式:1
2
3
4
5
6create table 表名
(字段名1 类型 约束(可选),
字段名2 类型 约束(可选),
...
字段名n 类型 约束(可选)
);
- 插入记录
命令格式1:1
2insert into 表名
values(字段1的值,字段2的值,...,字段n的值);命令格式2:1
2insert into table_name(列1,列2,...)
values(值1,值2,....)
- 更改记录
命令格式:1
2
3update 表名
set 列名=值
where 筛选条件;
- 清空表中的所有记录
- 排序
- 降序
desc1
Order by 排序字段 desc
- 升序
asc1
Order by 排序字段 asc
- 降序
- 不选择重复行
Distinct
说明:重复的结果只显示1次 - 筛选条件
where- 命令格式:
1
2
3select 字段1,....
from 表名
where 筛选条件;
- 命令格式:
- 列取别名
命令格式1:1
2select 列名 as 别名
from...命令格式2:1
2select 列名 别名
from...
- 从select结果创建新表
- 算数操作符
种类:+ - * /
功能:number类型的列,可使用算数操作符进行运算 - 比较操作符
功能: 对两个表达式的值进行比较
| 种类 | 说明 |
|---|---|
| = | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| IN(值1,值2,…) | 与列表中的值匹配 |
| LIKE | 字符匹配模式。匹配符 %:任意个字符。 匹配符 ?: 一个字符 |
| IS NULL | 判断字段值为空 |
- 逻辑运算符
| 运算符 | 用法 |
|---|---|
| AND | Where 条件A and 条件B |
| OR | Where 条件A or 条件B |
| NOT | Where not 条件 |
- 集合运算符
| 运算符 | 用法 |
|---|---|
| Union | 联合 |
| Union All | 联合所有 |
| Intersect | 交集 |
| Minus | 减集 |
- Minus 差集
命令格式:说明:1
2
3select .. from 表 --结果A
minus
select .. from 表 --结果BA与B的交集
举例:employee表中存放了在职和已退休员工的工号(empno),retireEmp 存放了已退休员工的工号(rempno)。
要求:仅查询在职员工的工号1
2
3SELECT empno FROM emp
MINUS
SELECT rempno FROM retireEmp; - 字符串连接符
说明:用于将两个字符串合并成一个新字符串
命令格式:1
列A || 列B
练习习题
题1 确定合适的类型
| 属性名 | 特征 | 类型(宽度) |
|---|---|---|
| 员工编号 | 4位数字。如1111 | NUMBER(4) |
| 员工姓名1 | 英文字母,不超过10个字母。 要尽量高的存储空间利用率 |
VARCHAR2(10) |
| 员工姓名2 | 汉字,不超过10个汉字 要尽量高的存储空间利用率 |
NVARCHAR2(10) |
| 岗位1 | 英文字母,不超过10个字母 | VARCHAR2(10) |
| 岗位2 | 汉字,不超过10个汉字 | NVARCHAR2(10) |
| 上级经理编号 | 4位数字 | NUMBER(4) |
| 入职日期 | 年-月-日 | DATE |
| 薪水 | 数字,最大5位数 | NUMBE(5) |
| 岗位津贴 | 数字,最大5位数 | NUMBER(5) |
| 所属部门编号 | 2位数字。如01 | NUMBER(2) |
| 证件照 | 图片 | BLOB |
| 自我介绍 | 视频 | BLOB |
| 简历 | 可能超过2000汉字 | CLOB(2000) |
题2 约束的种类
| 约束 | 关键字 |
|---|---|
| 主键约束 | primary key |
| 外键约束 | foreign key |
| 非空约束 | not null |
| 唯一值约束 | unique |
| 默认约束 | default ‘默认值’ |
| Check约束 | 举例:check(gender='男' or gender='女'); |
题3 创建部门表、约束
- (1)创建部门表,表名为dept
| 属性说明 | 属性 | 类型(宽度) | 约束 | ||
|---|---|---|---|---|---|
| 部门编号 | deptno | number(2) | 主键 | ||
| 部门名称 | dname | varchar2(14) | 非空、唯一 | ||
| 部门地址 | loc | VARCHAR2(13) | 默认值 ‘company’ | ||
| 代码: | |||||
|
- (2)将以下数据插入到dept中
| 属性说明 | 属性 | 类型(宽度) | 约束 | ||
|---|---|---|---|---|---|
| 员工编号 | eno | number(4) | 主键约束 | ||
| 员工姓名 | ename | varchar2(10) | 非空 | ||
| 岗位 | job | VARCHAR2(9) | |||
| 领导编号 | mgr | number(4) | |||
| 入职日期 | Hiredate | date | |||
| 薪资 | sal | number(7,2) | |||
| 福利 | Comm | number(7,2) | |||
| 所属部门号 | deptno | number(2) | 外键,参照部门表的部门号 dept(deptno) |
||
| 代码: | |||||
|
题4 使用rownum实现分页查询
- (1)查询employee表中按sal字段 降序排列后的 第5到第9条记录
代码:
1
2
3
4Select * from
(select e.*, rownum rn from
(select * from employee order by sal desc) e)
where rn>=5 and rn<=9;
- (2)查询employee表中按ename字段升序排列后的 第1到第3条记录
1
2
3
4Select * from
(select e.*, rownum rn from
(select * from employee order by ename asc) e)
where rn>=1 and rn<=3;题5 筛选、排序、选择不重复行
- (1)选出所有岗位为CLERK的记录的ename属性,sal属性, 按sal降序排序
代码:
1
2
3select ename,sal from employee
where job='CLERK'
order by sal desc;
- (2)选择出employee表中的所有岗位(job),每种岗位只显示1次
代码:
1
select distinct job from employee;
题6 SQL操作符
- (1)查询employee表中姓名以字母A开头的员工
代码:
1
2select * from employee
where ename like 'A%';
- (2)查询employee表中ename长度为5个字符的所有记录
代码:
1
2select * from employee
where ename like '_____';
- (3)查询employee表中comm字段为空的员工
代码:
1
2select * from employee
where comm is null;
- (4)查询岗位(job) 为 CLERK、MANAGER、SALSMAN之一的所有员工
代码:
1
2Select * from employee
where job in('CLERK','MANAGER','SALESMAN');
- (5)将employee表的job列和ename列进行拼接,显示 出 job列 _ 姓名列, 新列显示成 “岗位_姓名”
代码:
1
select job || '_' || ename 岗位_姓名 from employee;