第二章、SQL和操作符
2.1、学习目标
-
理解SQL及其作用
-
了解数据定义语言和数据操作语言
-
了解事务控制语言和数据控制语言
-
掌握 SQL 操作符
-
WHAT(SQL是什么?)
——Structured Query Language,结构化查询语言
-
WHY(为何要使用SQL**?****)**
——难道仅仅使用,PL/SQL Developer操作数据库?
——应用程序如何与数据库打交道
-
WHEN(何时使用?)
——对Oracle执行所有的操作都可以
——程序中的增删改查
-
HOW(怎么使用?)
——…
2.2、SQL概述
- SQL是Structured Query Language(结构化查询语言)的首字母缩写词;
- SQL是数据库语言,Oracle使用该语言存储和检索信息;
- 表示主要的数据对象,用于存储数据;
- 通过SQL可以实现与Oracle服务器的通信。
2.3、SQL操作语言
- DML(数据操作语言)
——查询、插入、删除和修改数据库中的数据
——SELECT、INSERT、DELETE、UPDATE等 - DCL(数据库控制语言)
——用来控制存取许可、存储权限等
——GRANT、REVOKE等 - DDL(数据库定义语言)
——用来建立数据库、数据库对象和定义其列
——CREATE TABLE、DROP TAVLE、ALTER TABLE等 - TCL(事务控制语言)
——COMMIT(提交并结束事务处理)、SAVEPOINT(标记事务中可以回滚的带点)、ROLLBACK(撤销事务中已经完成的工作)等
2.4、SQL操作符
- 算出操作符
- 算数操作符用于执行数值计算;
- 可以在SQL语句中使用算数表达式,算数表达式由数值数据类型的列名、数值常量和连接他们的算数操作符组成;
- 算数操作符包括加(+)、减(-)、乘(*)、除(/)
- 连接操作符
连接操作符用于将多个字符串或数据值合并成一个字符串。 - 比较操作符
- 比较操作符用于比较两个表达式的值;
- 比较操作符包括=、!=、<、>、<=、>=、between…and、in、like、is null等。
- 逻辑操作符
- 逻辑操作符用于组合多个计较运算的结果以生成一个或真或假的结果;
- 逻辑操作符包括与(and)、或(or)、非(not)。
实例操作如下
--创建Dept部门表
create table Dept(
deptid varchar2(20), --部门id
deptname varchar2(30), --部门名称
deptdesc varchar2(100), --部门描述
deptcdate date --创建日期
)
--删除表
drop table Dept;
--alter table
--添加主键
alter table Dept add constraint pk_dept_deptid primary key(deptid);
--创建员工表
create table Employee
(
empid varchar2(20), --员工id
empname varchar2(20), --员工姓名
sex char(3), --性别(男,女)
age number(3), --年龄
deptid varchar2(20) --隶属部门(作为外键)
)
--添加主键 primary key
alter table Employee add constraint pk_employee_empid primary key(empid);
--添加检查约束(性别)check_sex
alter table Employee add constraint ck_employee_sex check(sex = '男' or sex = '女');
--添加约束 (年龄) check_age
alter table Employee add constraint ck_employee_age check(age>=18 and age<=120);
alter table Employee add constraint ck_employee_age check(age between 18 and 120);
--添加外键约束 fk_deptid
alter table Employee add constraint fk_employee_deptid2 foreign key(deptid) references Dept(deptid);
--添加列
alter table Employee add(empdesc);
--修改列属性
alter table Employee modify(empdesc varchar2(30));
--修改列名
alter table Employee rename column empsdesc to empdescription;
级联删除(外键)
–默认No action 不可直接删除主表中数据(已找到从表中关联数据)
–Cascade 删除主表中数据,连并一下把关联的从表中的数据全部删除
–Set null 删除主表中数据,只是单纯把从表中外键那一列设为空值了,并不会删除从表中关联的整行数据