例如,根据department_id查询雇员(雇员表)和部门(部门表)信息。模式1(通用):从…中选择…其中选择e .姓氏,e .部门标识,d .部门名称来自员工e,部门d其中e .部门标识= d .部门标识
例如,根据department_id查询雇员(雇员表)和部门(部门表)
信息。
模式1(通用):从…中选择…其中
选择e .姓氏,e .部门标识,d .部门名称
来自员工e,部门d
其中e .部门标识= d .部门标识
方法2:从…自然联接中选择…
有一些限制:两个表中的相同列将被自动连接(可能不止一个:department_id和manager_id)。
SELECT姓氏,部门标识,部门名称
来自员工
自然加入部门
模式3:选择…加入…使用…
局限性:比第二种方法好,但是如果多个表的连接列名不同,这种方法就不适合。
SELECT姓氏,部门标识,部门名称
来自员工
加入部门
使用(部门标识)
模式4:选择…从…加入…于…
普通方式比第一种方式更容易实现外连接(左、右、满)。
SELECT姓氏,e .部门标识,部门名称
来自员工e
加入部门d
e .部门标识= d .部门标识
–内部连接
1)
–等价连接
不,是等值联接。
2)
–非自连接
–自连接
–外部连接
–左外部连接、右连接、全外部连接
创建和管理表(DDL)
创建表/截断表/更改表/重命名…到/删除表..操作结束后,自动提交;因此,回滚对其操作没有影响。
1。创建一个表
1)直接创建
创建表emp1(
姓名varchar2(20),
薪资编号(8,2)默认1000,
身份证号码(4)、
雇佣日期日期
);
2)通过子查询创建
创建表emp2
如同
select姓氏姓名,员工标识id,聘用日期
来自员工;
或
创建表emp2
如同
select姓氏姓名,员工标识id,聘用日期
来自员工
其中department _ id = 80/其中1 = 2;
2。修改表
1)添加新列
更改表emp1
添加(生日)
2)修改现有列
更改表emp1
修改(name varchar2(25) default 'abc ')
3)重命名现有列
更改表emp1
将列salary重命名为sal
4)删除现有列
更改表emp1
降栏生日;
3。清除空表中的数据(与从table_name中删除不同)
截断表emp2
4。重命名该表
将emp2重命名为emp3
5。删除表
删除表emp3
数据处理DML
1)添加
1.1添加记录
插入到[表名](,,,,)
值(,,,,)
1.2从其他表中复制数据
插入到[表名]
选择…从[另一张桌子]
哪里…
2)改变
更新[表名]
设置…..
哪里…
3)删除
删除[表格名称]
哪里…
4)检查(最常用的数据库操作)
选择…
来自…
哪里…
分组依据…
拥有…
按…排序。
近似束
对已创建表的列属性和字段的限制。例如非空/唯一/主键/外键/检查
1。如何定义约束—创建表时添加相应属性的约束
1.1表级约束和列约束
创建表emp1(
员工id号(8位)、
工资编号(8)、
–列级约束
雇佣日期日期不为空,
部门标识号(8),
email varchar2(8)约束emp1_email_uk unique,
name varchar 2(8)constaint EMP 1 _ name _ uu不为空,
名字varchar2(8),
–表级约束
约束emp1_emp_id_pk主键(employee_id),
约束EMP 1 _ fir _ name _ uk unique(first _ name),
约束emp1_dept_id_fk外键(dept_id)引用了删除级联中的部门(department_id)
)
1.2 Only not null只能使用列级约束。其他约束有两种方式
2。添加和删除表的约束–表创建后,只能添加和删除,不能修改
2.1增加
更改表emp1
添加约束emp1_sal_ck检查(薪金& gt0)
2.1.1对于not null,需要使用modify而不是add:
更改表emp1
修改(薪资不为空)
2.2删除
更改表emp1
删除约束emp1_sal_ck
2.3使一个约束无效:这个约束仍然存在于表中,但是不起作用
更改表emp1
禁用约束emp1 _ email _ uk
2.4激活一个约束:激活后,这个约束是绑定的
更改表emp1
启用约束emp1 _ email _ uk