0%

使用SQL语句操作表

转载自友情链接

创建表的命令、插入记录、更改记录、删除记录的命令

  • 创建表的命令
    • 命令格式:
      1
      2
      3
      4
      5
      6
      create table 表名
      (字段名1 类型 约束(可选),
      字段名2 类型 约束(可选),
      ...
      字段名n 类型 约束(可选)
      );
  • 插入记录
    • 命令格式1:
      1
      2
      insert into 表名
      values(字段1的值,字段2的值,...,字段n的值);
    • 命令格式2:
      1
      2
      insert into table_name(列1,列2,...)
      values(值1,值2,....)
  • 更改记录
    • 命令格式:
      1
      2
      3
      update 表名
      set 列名=
      where 筛选条件;
  • 清空表中的所有记录
    • 命令格式:
      1
      truncate table 表名

      查询关键字

  • 排序
    • 降序desc
      1
      Order by 排序字段 desc
    • 升序asc
      1
      Order by 排序字段 asc
  • 不选择重复行
    Distinct
    说明:重复的结果只显示1
  • 筛选条件
    where
    • 命令格式:
      1
      2
      3
      select 字段1,....
      from 表名
      where 筛选条件;
  • 列取别名
    • 命令格式1:
      1
      2
      select 列名 as 别名 
      from...
    • 命令格式2:
      1
      2
      select 列名 别名 
      from...
  • 从select结果创建新表
    • 命令格式:
      1
      2
      3
      create table 表名
      as
      select ....

      SQL操作符

  • 算数操作符
    种类:+ - * /
    功能: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
    3
    select .. from--结果A
    minus
    select .. from--结果B
    说明:A与B的交集

    举例:employee表中存放了在职和已退休员工的工号(empno),retireEmp 存放了已退休员工的工号(rempno)。

    要求:仅查询在职员工的工号
    1
    2
    3
    SELECT 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’
代码:
1
2
3
4
create table dept
(deptno number(2) primary key,
dname varchar2(14) not null unique,
loc varchar2(13) default'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)
代码:
1
2
3
4
insert into dept values(10,'Accounting','New York');
insert into dept values(20,'Research','Dallas');
insert into dept values(30,'Sales','Chicago');
insert into dept values(40,'Operations','Boston');

题4 使用rownum实现分页查询

  • (1)查询employee表中按sal字段 降序排列后的 第5到第9条记录

代码:

1
2
3
4
Select * 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
    4
    Select * 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
3
select 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
2
select * from employee
where ename like 'A%';

  • (2)查询employee表中ename长度为5个字符的所有记录

代码:

1
2
select * from employee
where ename like '_____';

  • (3)查询employee表中comm字段为空的员工

代码:

1
2
select * from employee
where comm is null;

  • (4)查询岗位(job) 为 CLERK、MANAGER、SALSMAN之一的所有员工

代码:

1
2
Select * from employee
where job in('CLERK','MANAGER','SALESMAN');

  • (5)将employee表的job列和ename列进行拼接,显示 出 job列 _ 姓名列, 新列显示成 “岗位_姓名”

代码:

1
select job || '_' || ename 岗位_姓名 from employee;

点这里请我吃个小蛋糕吧~~

Welcome to my other publishing channels