二、SQL和操作符
2.1 SQL
- SQL概述
- SQL是Structured Query Language(结构化查询语言)的首字母缩写词;
- SQL是数据库语言,Oracle使用该语言存储和检索信息;
- 通过SQL可以实现与Oracle服务器的通信;
- 表是主要的数据库对象,用于存储数据。
- SQL的组成
- DML(数据操作语言)
------查询、插入、删除和修改数据库中的数据
------select、insert、update、delete等 - DCL(数据库控制语言)
------用来控制存取许可、存取权限等
------grant、revoke等 - DDL(数据定义语言)
------用来改变数据库结构,包括创建、更改和删除数据库对象
------create table、drop table、alter table - TCL(事务控制语言)
------commit(提交并结束事务处理)、savepoint(标记事务中可以回滚的点)、rollback(撤销事务中已完成的工作)
- DML(数据操作语言)
2.2 操作符
-
算数操作符
- 算数操作符用于执行数值计算;
- 可以在SQL语句中使用算数表达式,算数表达式由数值数据类型的列名、数值常量和连接他们的算数操作符组成;
- 算数操作符包括加(+)、减(-)、乘(*)、除(/)
-
连接操作符
连接操作符用于将多个字符串或数据值合并成一个字符串。 -
比较操作符
- 比较操作符用于比较两个表达式的值;
- 比较操作符包括=、!=、<、>、<=、>=、between…and、in、like、is null等。
-
逻辑操作符
- 逻辑操作符用于组合多个计较运算的结果以生成一个或真或假的结果;
- 逻辑操作符包括与(and)、或(or)、非(not)。
-
通配符
通配符 解释 示例 _ 一个字符 A LIKE ‘C_’ % 任意长度的字符串 B LIKE ‘CO_%’ [ ] 括号中所指定范围内的一个字符 C LIKE ‘9W0[1-2]’
2.3 数据操纵语言(DML)
数据操纵语言用于检索、插入和修改数据,包括SELECT、INSERT、UPDATE、DELETE等命令。
-
SELECT
- 利用现有的表查询
--查询所有 select * from 表名; --查询某列 select 列名1,列名2,... from 表名;
- 选择无重复的行(使用DISTINCT关键字)
select DISTINCT 列名 from 表名;
- 使用列别名
select 列名 AS 新列名 from 表名;
- 利用现有的表查询
-
INSERT
- 插入单行数据
insert into 表名(列名) values (值列表);
- 插入多行数据
--插入源表的所有列 insert into 表名(列名) select 列名 from 源表名; --插入源表的指定列 insert into 表名(列名) select 列名 from dual UNION select 列名 from dual UNION ... select 列名 from dual;
小贴士:
dual是一张虚表;UNION是合并多条select语句的结果集,最后一个select语句中可以省略。
- 插入单行数据
注意事项:
- 每次插入一行数据,不能只插入半行或者几列数据,插入的数据是否有效将按照整行的完整性的要求来检验(自增序列也必须赋值!!);
- 每个数据值的数据类型、精度和小数位数必须与相应的列匹配;
- 如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
- 插入的数据项,要求符合检查约束的要求;
- 具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值。
-
UPDATE
--更新一列数据 update 表名 set 列名 = 更新值 where 更新条件; --更新多列数据 update 表名 set 列名1=更新值1,列名2=更新值2,... where 更新条件;
注意:在更新多个列的值得时候,使用逗号隔开!
-
DELETE
delete from 表名 where 删除条件;
注意:delete后面不能跟任何列,只能紧跟from!
--创建部门表
create table Dept
(
deptid varchar2(20), --部门id
deptname varchar2(30), --部门名称
deptdesc varchar2(100),--部门描述
deptdate date --创建日期
)
drop table Employee;
--创建员工表
create table Employee
(
empid varchar2(20), --员工id
ename varchar2(20), --员工姓名
sex char(3), --性别(男,女)
age number(3), --年龄
deptid varchar2(20) --隶属部门(外键)
)
--添加主键约束 primary key
alter table Dept add constraint pk_dept_deptid primary key(deptid);
--添加外键约束 foreign key
alter table Employee add constraint fk_Employee_deptid foreign key(deptid) references Dept(deptid);
--添加检查约束 check
alter table Employee add constraint ck_Employee_sex check(sex='男' or sex='女')
alter table Employee add constraint ck_Employee_sex check(sex in('男','女'));
--添加检查约束 check
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);
--添加列
alter table Employee add(empdesc varchar2(20));
--删除列
alter table Employee drop(empdesc);
--修改列的数据类型
alter table Employee modify(empdesc varchar2(30));
--修改列的名称
alter table Employee rename column empdesc to empdescription;
2.4 事务控制语言
事务是最小的工作单元,作为一个整体进行工作;保证事务的整体成功或失败,称为事务控制,用于事务控制的语句有三个:
- COMMIT-提交并结束事务处理
- ROLLBACK-撤销事务中已完成的工作
- SAVEPOINT-标记事务中可以回滚的点
update emp2 set comm=2000 where empno=7936;
savepoint maker1; --做了一个标记
delete emp2 where empno=7936;
savepoint maker2; --做第二个标记
rollback to savepoint maker1; --maker1后面的语句(delete emp2 where empno=7936)执行无效
commit;