Oracle学习DayTwo
一、创建表和管理表
1.表名和列名的命名规则
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
2.create table语句
条件:
CREATE TABLE权限
存储空间
格式:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
实例;
create table test_create(
name varchar2(10),
id number(10),
email varchar2(20)
)
3.数据类型
VARCHAR2(size) 可变长字符数据
CHAR(size) 定长字符数据
NUMBER(p,s) 可变长数值数据
DATE 日期型数据
LONG 可变长字符数据,最大可达到2G
CLOB 字符数据,最大可达到4G
RAW (LONG RAW) 原始的二进制数据
BLOB 二进制数据,最大可达到4G
BFILE 存储外部文件的二进制数据,最大可达到4G
ROWID 行地址
4.使用子查询创建表
格式:
CREATE TABLE table
[(column, column...)]
AS subquery;
注意:
使用 AS subquery 选项,将创建表和插入数据结合起来;
指定的列和子查询中的列要一一对应
通过列名和默认值定义列
实例:
复制表
create table emp1
as select * from employees;
--emp2为结构和employees相同的空表
create table emp2
as select * from employees where 1=2;
5.alter table语句
(1)追加一个新列
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
(2)修改列
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
可以修改列的数据类型, 尺寸和默认值
对默认值的修改只影响今后对表的修改
(3)删除列
ALTER TABLE table
DROP COLUMN column_name;
(4)重命名列
ALTER TABLE table_name RENAME COLUMM old_column_name
TO new_column_name
6.删除表
DROP TABLE table_name;
数据和结构都被删除
所有正在运行的相关事务被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
7.清空表数据
TRUNCATE TABLE table_name;
删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
使用 DELETE 语句删除数据,可以回滚
8.改变对象的名称
RENAME obj_name TO new_name;
二、数据处理(DML)
1.插入数据:insert语句
格式:
INSERT INTO table_name [(column [, column...])]
VALUES (value [, value...]);
注意事项:
使用这种语法一次只能向表中插入一条数据
为每一列添加一个新值。
按列的默认顺序列出各个列的值。
在 INSERT 子句中随意列出列名和他们的值。
子句中没有列出的列将被赋为空值null
字符和日期型数据应包含在单引号中。
使用 & 变量指定列值,& 变量放在VALUES子句中,创建脚本由用户输入列值
实例:
INSERT INTO employees(employee_id,last_name,email,hire_date,job_id)
VALUES (300,’Tom’,’tom@126.com’,to_date(‘2012-3-21’,’yyyy-mm-dd’),’SA_RAP’);
从其他表中拷贝数据
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
--不用书写values子句
--子查询中的值列表应与 INSERT 子句中的列名对应
2.更新数据:update语句
格式:
UPDATE table_name
SET column = value [, column = value, ...]
[WHERE condition];
特点:
可以一次更新多条数据
使用 WHERE 子句指定需要更新的数据。
如果省略 WHERE 子句,则表中的所有数据都将被更新
实例:
在 UPDATE 中使用子查询,使更新基于另一个表中的数据。
UPDATE copy_emp
SET department_id = (SELECT department_id
FROM employees
WHERE employee_id = 100)
WHERE job_id = (SELECT job_id
FROM employees
WHERE employee_id = 200);
3.删除数据:delete语句
格式:
DELETE FROM table_name
[WHERE condition];
特点:
使用 WHERE 子句删除指定的记录。
如果省略 WHERE 子句,则表中的全部数据将被删除。
4.数据库事务
定义:
事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
数据库事务由以下的部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句
结构:
以第一个 DML 语句的执行作为开始
以下面的其中之一作为结束:
COMMIT 或 ROLLBACK 语句
DDL 语句(自动提交)
用户会话正常结束
系统异常终止
COMMIT和ROLLBACK语句的优点:
确保数据完整性。
数据改变被提交之前预览。
将逻辑上相关的操作分组。
回滚到保留点:
使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
UPDATE...
SAVEPOINT update_done;
INSERT...
ROLLBACK TO update_done;
提交或回滚前的数据状态:
改变前的数据状态是可以恢复的。
执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正。
其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
DML语句所涉及到的行被锁定, 其他用户不能操作。
提交后的数据状态:
数据的改变已经被保存到数据库中。
改变前的数据已经丢失。
所有用户可以看到结果。
锁被释放,其他用户可以操作涉及到的数据。
所有保存点被释放。
数据回滚后的状态:
使用 ROLLBACK 语句可使数据变化失效:
数据改变被取消。
修改前的数据状态被恢复。
锁被释放。
Oracle学习DayTwo的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Oracle学习线路
出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验) 作为oracle的基本功,需要大家对sql和 ...
- Oracle学习指南
Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习系列7
Oracle学习系列7 ************************************************************************************ 关联表 ...
- Oracle学习系列6
Oracle学习系列6 ************************************************************************************ 删除约 ...
- Oracle学习系列5
Oracle学习系列5 ************************************************************************************ ,掌握 ...
- Oracle学习系列4
Oracle学习系列4 ************************************************************************************ 数据库 ...
- Oracle学习系列3
Oracle学习系列3 ************************************************************************************ 多表查 ...
随机推荐
- django项目上线环境部署
django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...
- JS 作用域(执行环境)与作用链---JS 学习笔记(二)
一 作用域(执行环境) 作用域:定义了变量和函数有权访问的其他数据,决定了他们各自的行为.--------<JS高级程序设计>4.2 好难理解啊~参考了参考尤克希的博客内容,大体上理解了 ...
- 实验十一 团队项目设计完善&编码测试
任务一: 根据OOD详细设计工作要点,修改完善团队项目系统设计说明书和详细设计说明,将完善后内容以<XX团队项目软件设计方案>为名发布在团队博客中,博文中要突出对完善内容的陈述说明,修改部 ...
- Web安全测试工具 Burp Suit 使用简介
参考文档: https://blog.csdn.net/gitchat/article/details/79168613 https://www.cnblogs.com/nieliangcai/p/6 ...
- inline temp 内联临时变量
double basePrice = order.getPrice(); return basePrice; 改成 return order.getPrice(); 去掉临时无用的临时变量
- 什么是卷积convolution
定义 卷积是两个变量在某范围内相乘后求和的结果.如果卷积的变量是序列x(n)和h(n),则卷积的结果 , 其中星号*表示卷积. 当时序n=0时,序列h(-i)是h(i)的时序i取反的结果:时序取反使得 ...
- C语言 九九乘法表
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { int i,j,k; ...
- 字体图标库 IcoMoon IconFont Font Awesome的使用
在项目开发的过程中,我们会经常用到一些图标.但是我们在使用这些图标时,往往会遇到失真的情况,而且图片数量很多的话,页面加载就越慢.所以,我们可以使用字体图标的方式来显示图标,字体图标任意放大缩小不会失 ...
- vue-cli中怎么样使用less
1.安装安装less依赖,npm install less less-loader --save 2.修改配置文件, 在build/webpack.base.conf.js文件的module.expo ...
- net.js
var http = require('http'); var https = require('https'); var url=require("url"); var pass ...