Oracle数据库入门 基础知识day05 火推阳光笔记
来源:互联网 发布:弈乐麻将 游戏网络 编辑:程序博客网 时间:2024/06/04 19:30
Oracle 05
DML 数据操作语言
事务 , insert
数据的删除
格式1.
删除指定表格中的所有数据
delete from 表名;
格式2.
根据where条件 ,删除匹配的数据
delete from 表名 where 条件;
练习:
需求: 删除id为11的person表格数据
delete from person where id=11;
commit;
需求: 删除id为12 或 22的person表格数据
commit;
delete from person where id=12 or id=22;
需求: 删除所有的person数据
commit;
delete from person;
数据的修改
格式: update 表名 set 字段名1=字段值1,字段名2=字段值2...字段名n=字段值n [where 条件];
在update语句中, set后面的字段名与值列表, 使用逗号隔开多个字段名/值
练习:
需求:
- 修改person表中的所有的age 为 18.
update person set age=18;
commit;
- 修改person表中的 id为12的 人 ,将他的年龄设置为188
update person set age=188 where id=12;
commit;
- 修改person表中的 id为13的人, 设置它的年龄为20 , 姓名为逗逼
update person set age=20,name='逗逼' where id=13;
commit;
TCL 事务控制语句
事务:
需要把多条的DML sql语句看作一个整体 , 要么一起成功, 要么一起失败
oracle 数据库 事务是需要手动结束的 , 如果不结束则对数据库产生不了任何的影响 !
Mysql 数据库 事务默认是自动提交 ,在你执行的每一条的dml语句后, 自动执行commit;
事务的特性:
1. 原子性: 同一个事务中的操作, 不可分割 ,要么一起成功, 要么一起失败 !
2. 一致性: 同一个事务的操作, 保持一致 !
3. 隔离性: 一个事务的dml操作, 在没有提交之前, 对于其他的事务来说, 数据应是不可见的 !
4. 持久性: 数据要一直保持
如何结束事务
1. commit
- 提交事务, 将数据写入数据库 !
2. rollback
- 回滚事务(回退操作) , 撤回, 回退本次事务的所有dml操作
使用格式:
1. rollback; 回退之前的所有dml操作:
2. rollback to 保存点
保存点添加的方式:
savepoint 保存点名称;
案例:
将对于perosn表的四次插入, 看作一个事务
insert into person values(10001,'凯凯',8);
savepoint a;
insert into person values(10002,'凯凯自充气版',8);
savepoint b;
insert into person values(10003,'凯凯合金弹头限量款',1);
savepoint c;
insert into person values(10004,'凯凯双马达动力款',20);
savepoint d;
--rollback to b;
rollback;
commit;
日期类型
在创建表格时, 字段类型指定为date即可, 不需要指定长度
创建表格:
表名: person
列:
- id number类型 长度5
- name varchar2类型 长度100
- age number类型 长度5
- createdate date类型
--------------------------------------------
create table person(
id number(5),
name varchar2(100),
age number(5),
createdate date
);
向表格插入日期
传入当前时间
sysdate : 表示系统(本机电脑)当前时间
insert into person values(10001,'凯凯',18,sysdate);
insert into person values(10002,'志强',28,sysdate);
使用to_char对日期进行格式化
to_char(参数1,参数2);
- 1. 将一个数字 转换为指定格式的 字符串
- 2. 将一个date 转换为指定格式的 字符串
- 类似Java中的 SimpleDateFormat (yyyy年-MM月-dd日 HH时mm分ss秒 sss毫秒)
参数1. 日期类型的数据
参数2. 日期格式化的模版
- 模版中的特殊字符的含义
yyyy:四位年
MM :月 (英文环境下 显示月份单词前三个字母)
dd :日
hh :12小时制
hh24:24小时制
mi :分钟
ss :秒
---------------------------
特殊:
day : 星期
month:月(英文环境下,显示月份整个单词)
am: 12小时制 ,
中文显示: 上午/下午
英文显示: am / pm
练习:
查询id为10002的person数据, 要求 ,创建日期要展示年月日时分秒
select id,name,age,to_char(createdate,'yyyy-MM-dd am hh:mi:ss day') from person where id=10002;
select id,name,age,to_char(createdate,'yyyy-MM-dd hh24:mi:ss day') from person where id=10002;
如何插入一个过去时间
向数据库插入北京奥运会开幕式的日期: 2008-8-8
默认日期格式:
英文环境: dd-mon-yy
例如: 2008年8月8日: 08-aug-2008
中文环境: 日-月-年
例如: 2008年8月8日: 08-8月-2008
通过上述格式的字符串 即可插入
insert into person values(10003,'凯凯3',18,'08-8月-2008');
to_date(参数1,参数2)
将一个日期字符串, 转换为date
使用方式与to_char基本一致 !
参数1. 字符串类型的时间
参数2. 匹配参数1的字符串 时间格式模版
-------------
使用to_date 像数据库中插入 2008年8月-8日 20时08分08秒
insert into person values(10004,'志强2',28,to_date('2008-08-08 20:08:08','yyyy-mm-dd hh24:mi:ss'));
commit;
日期的设置 与 取出
我们正常需求下 , 一般通过to_date 将数据插入数据库
通过to_char将数据从数据库中取出并展示
日期(date)的调整
sysdate : 系统当前时间,date类型的数据
date类型可以与数字进行加减 !
date类型可以减去date类型
sysdate-sysdate=0;
date类型无法与date类型相加
sysdate+1:当前时间增加一天
select to_char(sysdate+1,'yyyy-mm-dd hh24:mi:ss') from dual;
sysdate-1:当前时间减少一天
select to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss') from dual;
求出当前时间 向前推一小时的时间: (减少一小时)
sysdate-(1/24)
select to_char(sysdate-(1/24),'yyyy-mm-dd hh24:mi:ss') from dual;
练习:
求出当前时间增加10分钟
select to_char(sysdate+(10/60/24),'yyyy-mm-dd hh24:mi:ss') from dual;
求出当前时间减少一个半小时
select to_char(sysdate-(1.5/24),'yyyy-mm-dd hh24:mi:ss') from dual;
求出当前时间增加一个月的时间
add_months(参数1,参数2);
参数1. date类型的数据
参数2. number类型 , 1表示一个月 , -1表示负一个月
select to_char(add_months(sysdate,1),'yyyy-mm-dd hh24:mi:ss') from dual;
截取日期
trunc(参数1,参数2);
参数1. 要截取的日期类型的数据(date)
参数2. 要截取的日期单位 (默认截取单位是dd)(传入的值为日期模版中的单位)
2017-09-21 14:38:55
默认截取到dd
select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual;
截取到mm
select to_char(trunc(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss') from dual;
截取到hh
select to_char(trunc(sysdate,'hh'),'yyyy-mm-dd hh24:mi:ss') from dual;
日期操作练习题
1. 求出当前时间 , 当前月份的最后一分钟
select to_char(add_months(trunc(sysdate,'mm'),1)-(1/60/24),'yyyy-mm-dd hh24:mi:ss') from dual;
2. 查询s_emp表格(id,last_name,start_date) , 按照start_date排序
select id,last_name,to_char(start_date,'yyyy-mm-dd hh24:mi:ss') from s_emp order by start_date;
3. 查询s_emp表格(id,last_name,start_date) , 查询的条件为入职日期在1990年1月份 到 1990年12月份
select id,last_name,to_char(start_date,'yyyy-mm-dd hh24:mi:ss') from s_emp where start_date>to_date('1990-1-1','yyyy-mm-dd') and start_date<'31-12月-1990';
约束
数据库的约束, 是对于在数据库中进行数据插入时的一些限制!
满足约束条件的 则可以正常插入数据, 不满足的则报错!
约束的分类与含义
- 主键约束(primary key)(pk) :一个表格只允许存在一个主键列 , 一般用来做唯一标识 , 一个字段加了主键约束以后 ,则这个字段不能为null , 并且这个字段不可重复 ! 可以理解为: 非空+唯一
- 非空约束(not null) (nn):字段的值不能为空
- 唯一性约束(unique)(uk) :字段的值不可重复
- 检查约束(check)(ck) : 字段的值必须符合检查条件
- 外键约束:以后再说
----------------------------------------------------
约束的使用方式:
1. 列级约束: 在定义表的某一列时 , 在列后面追加约束关键字, 叫做列级约束!
2. 表级约束: 在定义完毕表的所有列之后, 再选择某些列添加约束, 叫做表级约束 !
列级约束-主键约束
创建一个person表格, 设置它的id为主键:
create table person(
id number primary key,
name varchar2(100),
age number
);
向上述的表格插入两行数据:
insert into person(name,age) values('a',18);
我们在尝试插入数据时, 忽略了主键字段, 报错!
insert into person values(1,'a',18);
我们在尝试插入全字段数据时, 插入成功
insert into person values(1,'b',28);
重复插入相同的主键, 报错 : 违反唯一与约束
练习:
创建一个表格person_1
拥有如下字段:
id number 主键
name varchar(100) 唯一
age number 非空
create table person_1(
id number primary key,
name varchar2(100) unique,
age number not null
);
约束别名
每个约束, oracle都会为其生成一个不重复的别名 , 系统生成的别名 不具备 见名知意的效果
我们可以主动在添加约束时, 给约束指定一个别名, 方便我们后期进行调试!
别名的特点:
具备唯一性
别名的命名规范:
表名_字段名_约束的简写
格式:
create table 表名(
字段名1 字段类型 constraint 别名 约束关键字,
字段名2 字段类型
...
);
create table person(
id number constraint person_id_pk primary key,
name varchar2(100) constraint person_name_uk unique,
age number constraint person_age_nn not null
);
尝试违反约束条件, 观看报错时的约束名称:
insert into person values(1,'凯凯',88);
commit;
insert into person values(1,'凯凯',88);
commit;
列级约束--检查约束
练习:
创建一个用户表格 , 因为网站的特殊性, 要求年龄满18岁才可以注册
create table user13(
uname varchar2(20),
upass varchar2(20),
age number constraint user13_age_ck check(age>=18)
);
尝试插入年龄低于18岁的信息
insert into user13 values('kaikai','yibaige6',12);
commit;
阅读全文
0 0
- Oracle数据库入门 基础知识day05 火推阳光笔记
- Oracle数据库入门 基础知识day04 火推阳光笔记
- Oracle学习笔记--day05
- Oracle数据库入门—基础知识
- oracle数据库基础知识学习笔记
- Oracle数据库 day01 火推
- day05笔记
- day05笔记
- day05笔记
- Oracle基础知识笔记(15) 数据库备份
- 直播推流基础知识笔记
- 2. oracle学习入门系列之二 数据库基础知识
- Oracle学习笔记day05——SQL概述
- Oracle学习笔记day05——DDL语言
- Oracle学习笔记day05——DML语言
- Oracle学习笔记day05——DQL语言
- Oracle学习笔记day05——TCL语言
- Oracle 10g sql 入门基础知识 笔记 第一部分
- Spring AOP 之 通知、连接点、切点、切面
- HDU 4273(计算几何+凸包重心)
- 二叉树的创建与遍历(递归)
- 第四周训练总结(一)
- “挖坑填坑”理解快速排序
- Oracle数据库入门 基础知识day05 火推阳光笔记
- 2017-09-21 LeetCode_031 Next Permutation
- Android Crash日志收集
- LWC 50:677. Map Sum Pairs
- 47. 数据结构笔记之四十七的有向无环图的应用排序
- 携程2018 秋招编程题
- Android组件化之终极方案
- 网页性能如何优化
- caioj 1077 dp