Oracle学习笔记——第三天

oracle学习笔记——第三天

一、表连接

– 请查询员工的编号,姓名,工资,以及所在部门的名称

   select employee_id,last_name,salary,department_name
   from employees , departments
   where employees.department_id = departments.department_id;

1. 概念

当查询结果数据来自于多两张表时,需要使用特定的连接条件将两张表的记录连接在一起,这种语法“表链接”

2. 分类

内连接 外连接 自连接 多表连接(语法)

3. 内连接

语法:
使用关键字inner join连接两张表,其中inner可以省略,
使用关键字on给定连接条件,其他判定条件仍然使用where指定
– 请查询60部门的员工编号,姓名,工资,以及部门名称

   select e.employee_id,e.last_name,e.salary,d.department_name
   from employees e inner join departments d
   on e.department_id = d.department_id
   where e.department_id = 60 ;

特点:
只考虑连接条件成立的记录,对于连接条件出现null的记录直接舍弃,不出现在结果中。

4. 外连接

特点:
可以处理连接条件为null的记录
分类:
左外连接【重点】 右外连接 全外连接
左外连接:
使用关键字left outer join连接两张表,其中outer可以省略 ,连接条件使用on给定
在表连接过程中,以左表为主(左表记录全部出现),右表辅助
右外连接:
使用关键字right outer join连接,outer可以省略,连接条件用on给定
在表连接过程中以右表为主,左表辅助
全外连接:
使用关键字full outer join连接,outer可以省略,两张表的记录全部出现
– 请查询员工表的所有信息,以及对应的部门信息
– 左外

   select e.*,d.*
   from employees e left join departments d
   on e.department_id = d.department_id;

– 右外

   select e.*,d.*
   from departments d right join employees e
   on e.department_id = d.department_id ;

– 全外

   select e.*,d.*
   from employees e full join departments d
   on e.department_id = d.department_id ;

5. 自连接

– 请打印员工的姓名,以及他上司的姓名

   select e.last_name, m.last_name
   from employees e left join employees m
   on e.manager_id = m.employee_id ;

概念:
是一种特殊的表连接,通过为一张表定义两个别名的方式,完成表连接查询过程
在这里插入图片描述

6. 多表连接(语法)

– 请查询员工的姓名,所在部门的名称,以及所在的城市

   select e.last_name,d.department_name,lo.city
   from employees e left join departments d
   on e.department_id = d.department_id
   left join locations lo
   on d.location_id = lo.location_id;

二. 建表

在这里插入图片描述

1. 合法标识符

由 字母 、数字、_、$、# 组成 , 其中数字不能开始
不区分大小写,长度控制在30个字符
不能是关键字,不能与数据库当前用户下的其他对象命名冲突

2. 数据类型

数字类型(不区分整数和浮点类型)

  1. number( v1, v2 ) — 有效位数为v1,其中小数点后占v2位, v1最大可取值为38
    • number(7,2) — 表示的最大数字 99999.99
  2. number(v1) ---- 一个整数
  3. number ---- 表示一个很大的浮点数 , 类似于java里的double
    字符串类型(不区分字符和字符串)
  4. varchar2( n ) : 可变长字符串,最大容量n个字节,根据实际值的长度调整存储空间,n的最大取值4000
  5. char(n) : 定长字符串,长度n个字节,使用固定长度存储数据,n的最大取值为4000
  6. nvarchar2(n) : 可变长字符串,最大容量是n个字符,n最大取值为133
    日期类型
  7. date : 标准日期格式 dd-mon-rr ,可以精确到秒 sysdate
  8. timestamp : 时间戳 , 可以精确到10负六次方秒 systimestamp
    大数据类型
  9. blob : 二进制大对象, 最大空间4G 2) clob : 字符大对象 , 最大空间 4G

3. 约束

主键约束:
使用关键字 primary key 定义, 特点是非空唯一 ,简称pk
非空约束:
使用关键字not null定义 , 特点是字段必须有数据,简称nn
唯一约束:
使用关键字unique定义,当前字段里的值不重复(有值时,值不重复),简称uk唯一键
检查约束(自定义约束):
使用关键字check定义,简称ck
外键约束:
使用关键字 references 表名(字段名)定义 , 简称fk,特点值必须来自于关联表的主键
– team(id ,name ,amount)

   create table team( 父表
   id number(3) primary key,
   name varchar2(15) not null,
   amount number(2)
);

– student(id ,name,mobile,email,study_date,married,tid)

   create table student( 子表
   id number(5) primary key,
   name varchar2(15) not null,
   mobile char(11) not null,
   email varchar2(30) unique check( email like '%_@_%'),
   study_date date default sysdate,
   married number(1) default 0,
   tid number(3) references team(id)
   );

4. 特殊约束的定义(联合键)

在这里插入图片描述

三. 增删改数据

1. 添加数据 insert

全表插入(为表里所有的字段插入数据)
语法: insert into 表名 values( 值1,值2,… )
要求:值的个数,类型,顺序必须与表里字段完全一致

–请向team表插入一条数据

   insert into team values(1,'xiaoming',8);

–请向学生表里插入一条数据

   insert into student 
   values(1,'zhangs','12345678909','zhangs@126.com',sysdate,0);

选择插入
语法:insert into 表名(列1,列2,…) values(值1,值2,…)
要求: 值的个数,类型,顺序必须与前面小括号里的选择一致
对于表里非空,并且没有默认值的字段,必须入选

–请向student表里有选择的插入一条数据

   insert into student(id,name,mobile)   
   values(3,'wangwu','90876543212')

2. 修改数据 update

语法: update 表名 set 字段名=新值,字段名=新值 where … ;

   update student set email='wangwu@123.com',tid=1 where id=3;

3. 删除数据 delete

语法: delete from 表名 where 条件 ;

   delete from student where id=3; ok
   delete from team where id=1; 不成功

四. 关于删除功能的补充

1. 关于数据的删除

1) delete 删除数据 : 直接清空表里的数据,保留数据所占空间
2) truncate命令 : 截断表里的数据,数据被删除,同时数据所占空间被释放,只保留表头
语法: truncate table 表名 ;
3) drop 命令: 删除表( 数据 和 结构 )
语法: drop table 表名 【cascade constraint 】;

2. 关于关联表的删除

1) 有外键指向的两个表创建时: 先父后子
2)删除动作 : 先子后父
希望删除父表数据 — 先删除子表数据,在删除自己 ; 或者先清空子表相应的外键,在删除自己
希望删除父表 — drop table 表名 cascade constraint;
cascade constraint : 级联操作子表的外键约束,在删除父表的同时,将子表里的外键约束删

五. SQL命令的分类

1. DQL :

数据查询语言,完成数据的查询操作 ( select) 【重点】

2. DML :

数据操纵语言 ,完成对数据的访问操作(insert, update,delete)【重点】

3. DDL :

数据定义语言,用来操作数据库里对象的命令(create【重点】 drop truncate alter rename)

4. DCL :

数据控制语言,权限管理的命令 ( grant revoke)

5. TCL :

transaction control language 事务控制语言 【重点 *】(commit 提交 rollback 回滚)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值