java032
操纵数据(DML)
数据操纵语言:当添加、更新或者删除数据库中的数据时需要使用 DML 语句。DML 依据的一个集合构成了一个被称为事务的逻辑单元。
当完成下面操作时,DML 语句被执行:
1)添加新行到表中
2)修改表中的行
3)删除表中的行
DML语言之新增语句
INSERT 语句语法:INSERT INTO table [ ( column[,column...])] VALUES(value[, value.. .]) ;
示例 :
需求:向 departments 表中添加一条数据。 Department_Id=280 Department_name = Teaching Manager_id=180 Location_id =2000
指定添加:
Insert into departments(Department_Id,Department_name,Manager_id,Location_id)
values(280,’Teaching ’,180 ,2000 );
完全列添加:
特点:
1)向每一列添加数据。
2)省略列名,要求values()括号里面值的个数和顺序必须与列名相匹配
语法格式:insert into 表名 values(值1,值2...)
需求:向 departments 表中添加一条数据。 Department_Id=290 Department_name = Development Manager_id=149 Location_id =2000
insert into departments values(290,'Development',149,2000);
插入带空值的行
1)隐士方法:省略字段列表中的列
例:
insert into departments(department_id,department_name) values(300,'A');
2)显示方法:在values子句中指定关键字null
例:
insert into departments(department_id,department_name,manager_id,location_id)
values(310,’北京’,null,null);
使用默认值(default)
insert into departments(department_id,department_name,manager_id)
values(310,'研发部',default);
插入日期值 (to_date)
针对日期的格式的数据可以使用 to_date函数进行转换,否则只能按照默认日期的格式进行输入(日/月/年)
insert into employees(EMPLOYEE_ID,first_name,last_name,email,phone_number,hire_date,job_id,salary)
values(20,'zhang','san','www.136.com','110',to_date('2019_8_21','yyyy_MM_dd'),'养大熊猫','3000');
从另一个表中复制行
特点:
1)用一个查询写 INSERT 语句
2)不用 VALUES 子句
3)在查询中列的数目要匹配 INSERT 子句中列的数目
先创建一个表
create table EMP
(
id NUMBER not null,
name VARCHAR2(50),
salary NUMBER(8,2),
commission NUMBER(2,2)
)
需求:将employees 表中的 job_id 中含有 REP 的工作岗位的数据插入到 emp 表中。
insert into emp(id,name,salary,commission)
select employee_id,last_name,salary,commission_pct
from employees where job_id like '%REP%'; OR
insert into emp select employee_id,last_name,salary,commission_pct
from employees where job_id like '%REP%';
DML语言之修改语句
UPDATE 语句的语法:update表名 set列名1=值1,列名2=值2. . .[where于语句]
例1:update dept set aid=10,aname='北京' where amount=20;
例2:
没有where条件。将会修改所有的记录。update dept set dname='测试2';
DML语言之删除语句
语法格式:delete [from] 表名 [where子句]
例1:delete from employees where salary=3000;
例2:
没有where条件。会导致删除所有记录。Delete from employees;
事务和TCL
事务:指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
事物的特性:
1)原子性(ATOMICITY) :事务中的操作要么都不做,要么就全做。
2)一致性(CONSISTENCY) :一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。
3)隔离性(ISOLATION) :一个事务的执行不能被其他事务干扰。
4)持久性(DURABILITY) :一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
事务控制语言
1)commit..... 事物提交
2)rollback.... 事物回滚
3)savepoint.. 设置回滚点
数据定义语言(DDL)
create.....创建数据库对象
drop.......删除数据库对象
arter......修改数据库对象
rename.....修改数据库对象名称
数据库表格的创建
Oracle中的数据类型
1)字符类型:char,varchar2,nvarchar2
2)数字类型:number,integer
3)浮点类型:binary_float,binary_double
4)日期类型:date,timestamp,timestamp with time zone,timestamp with local time zone
5)lob类型:clob,blob,nclob
6)Long&raw&long raw类型:long,raw,long raw
char和varchar2之间的区别:
1)char类型是定长字符串,给定的长度如果字符长度未达到给定长度则自动用空格填充长度;
2)varchar2类型是变长字符串,不会用空格填充未达到给定长度的长度。
表格的修改和删除
表格进行重命名:rename 表名 to 别名
修改表格某个字段的类型:alter table 表名 modify (column 类型);
数据库中的约束类型
非空约束(NOT NULL)
唯一性约束(UNIQUE)
主键约束(PRIMARY KEY)
外键约束(FOREIGN KEY)
用户自定义约束(CHECK)
表格的约束:表格的约束就是对表格中列进行数据规则的规定。
约束有什么作用:约束用于规定表中的数据规则,如果存在违反约束的数据行为,运行就会被约束终止。
1)主键约束:保证了某列的唯一性和非空性。
2)非空约束:指定列不能包含空值。
3)唯一约束:指定列的值或者列的组合的值对于表中所有的行必须是唯一的。
4)检查约束:对某列数据的格式和范围进行限制。
5)外键约束(FOREIGN KEY):在列和引用表的一个列之间建立并强制一个外键关系。