在Oracle关于时间属性的建表
Example:
create table courses(
cid varchar(20) not null primary key,
cname varchar(20) not null,
ctype integer,
ctime date DEFAULT SYSDATE,
cscore float not null
)
insert into courses values('ss01','java',0,TO_DATE('2009-8-28','yyyy-mm-dd'),94)
insert into courses values('ss02','music',1,TO_DATE('2009-8-27','yyyy-mm-dd'),88)
insert into courses values('ss03','c++',0,TO_DATE('2009-8-29','yyyy-mm-dd'),78)
在PL/SQL建表以后,记得commit,才能在pl/sql上查询到数据。
对于日期类型
将字符串转换成日期:
Insert Into table(col_date)Values(to_date(‘2003-01-16’,’yyyy-mm-dd’));
将日期转换成字符串:
Insert Into table (col_char)Values(to_char(Date,’format’));
select * from courses where ctime>to_date('2009-8-28','yyyy-mm-dd')
创建表
1. ORACLE常用的字段类型
ORACLE常用的字段类型有
VARCHAR2 (size) 可变长度的字符串, 必须规定长度
CHAR(size) 固定长度的字符串, 不规定长度默认值为1
NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数
最长38位. 不够位时会四舍五入.
DATE 日期和时间类型
LOB 超长字符, 最大可达4G
CLOB 超长文本字符串
BLOB 超长二进制字符串
BFILE 超长二进制字符串, 保存在数据库外的文件里是只读的.
数字字段类型位数及其四舍五入的结果
原始数值1234567.89
数字字段类型位数 存储的值
Number 1234567.89
Number(8) 12345678
Number(6) 错
Number(9,1) 1234567.9
Number(9,3) 错
Number(7,2) 错
Number(5,-2) 1234600
Number(5,-4) 1230000
Number(*,1) 1234567.9
2. 创建表时给字段加默认值 和约束条件
创建表时可以给字段加上默认值
例如 : 日期字段 DEFAULT SYSDATE
这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间
创建表时可以给字段加上约束条件
例如: 非空 NOT NULL
不允许重复 UNIQUE
关键字 PRIMARY KEY
按条件检查 CHECK (条件)
外键 REFERENCES 表名(字段名)
3. 创建表的例子
CREATE TABLE DEPT(
EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13)) ;
CREATE TABLE region(
ID number(2) NOT NULL PRIMARY KEY,
postcode number(6) default '0' NOT NULL,
areaname varchar2(30) default ' ' NOT NULL);
4. 创建表时的命名规则和注意事项
1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#
2)大小写不区分
3)不用SQL里的保留字, 一定要用时可用双引号把字符串括起来.
4)用和实体或属性相关的英文符号长度有一定的限制
注意事项:
1)建表时可以用中文的字段名, 但最好还是用英文的字段名
2)创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面
3)建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引
4)一个表的最多字段个数也是有限制的,254个.
5. 约束名的命名规则和语法
约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字)
约束名字符串的命名规则同于表和字段名的命名规则
6. 使用约束时的注意事项
约束里不能用系统函数,如SYSDATE和别的表的字段比较
可以用本表内字段的比较
想在事务处理后, 做约束的检查
SQL> alter session set constraints deferred.
7. 由实体关系图到创建表的例子 s_dept
前提条件:已有region表且含唯一关键字的字段id
SQL> CREATE TABLE s_dept
(id NUMBER(7)
CONSTRAINT s_dept_id_pk PRIMARY KEY,
name VARCHAR2(25)
CONSTRAINT s_dept_name_nn NOT NULL,
region_id NUMBER(7)
CONSTRAINT s_dept_region_id_fk REFERENCES region (id),
CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));
8. 较复杂的创建表例子
SQL> CREATE TABLE s_emp
(id NUMBER(7)
CONSTRAINT s_emp_id_pk PRIMARY KEY,
last_name VARCHAR2(25)
CONSTRAINT s_emp_last_name_nn NOT NULL,
first_name VARCHAR2(25),
userid VARCHAR2(8)
CONSTRAINT s_emp_userid_nn NOT NULL
CONSTRAINT s_emp_userid_uk UNIQUE,
start_date DATE DEFAULT SYSDATE,
comments VARCHAR2(25),
manager_id NUMBER(7),
title VARCHAR2(25),
dept_id NUMBER(7)
CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id),
salary NUMBER(11,2),
commission_pct NUMBER(4,2)
CONSTRAINT s_emp_commission_pct_ck CHECK
(commission_pct IN(10,12.5,15,17.5,20)));
8. 通过子查询建表
通过子查询建表的例子
SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date
FROM s_emp WHERE dept_id = 41;
SQL> CREATE TABLE A as select * from B where 1=2;
只要表的结构.
10. 用子查询建表的注意事项
1)可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。
2)用子查询方式建立的表,只有非空NOT NULL的约束条件能继承过来, 其它的约束条件和默认值都没有继承过来.
3)根据需要,可以用alter table add constraint ……再建立其它的约束条件,如primary key等.
11. Foreign Key的可选参数ON DELETE CASCADE
在创建Foreign Key时可以加可选参数:
ON DELETE CASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除.
如果没有ON DELETE CASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.
12. 如果数据库表里有不满足的记录存在,建立约束条件将不会成功.
13. 给表创建和删除同义词的例子
SQL> CREATE SYNONYM d_sum
2 FOR dept_sum_vu;
SQL> CREATE PUBLIC SYNONYM s_dept
2 FOR alice.s_dept;
SQL> DROP SYNONYM s_dept;
分享到:
相关推荐
这段代码首先通过子查询来更新`yl_pgsq`表中的`sjzd`字段,子查询从`yl_lnrxxb`和`yl_pgsqa`两个表中找到符合条件的第一条记录(即`sfzh`等于`ssfz`且`sxzqh`字段以'1005%'开头),然后将该记录的`zz`值赋给`sjzd`。...
BLOB类型用于存储二进制大对象,本文将详细介绍如何使用Java来读取和写入Oracle数据库中的BLOB字段。 首先,我们需要引入Oracle JDBC驱动,即`ojdbc`库,以便能够连接到Oracle数据库。在代码中,可以看到使用`Class...
Oracle Forms与Reports是Oracle数据库应用开发的重要组成部分,主要用于构建企业级的业务应用程序。这个主题涵盖了两个关键组件:Oracle Forms用于创建交互式数据输入和展示的图形用户界面,而Oracle Reports则专注...
最后,虽然有些数据库系统支持`UPDATE FROM`语法,但Oracle并不支持此操作。因此,在Oracle数据库中,我们通常使用`UPDATE`结合子查询或者`MERGE`语句来完成类似的任务。 总结,更新Oracle数据库中的多张表可以通过...
为了查看Oracle查询的执行计划,可以使用`DBMS_XPLAN.DISPLAY`函数,这将显示SQL语句的详细执行步骤、预计的成本、行数、操作类型等信息。在案例中,执行计划显示了一个`SORT ORDER BY`操作,表明数据在返回给用户...
这些函数可以基于一组行进行操作,而不是整个结果集,这使得它们非常适合于生成高级报表和数据分析。 #### 三、案例解析 ##### 案例1:查找上一年度各个销售区域排名前10的员工 为了找到上一年度每个销售区域销售...
Java中通常使用JDBC(Java Database Connectivity)来连接和操作数据库,如MySQL、Oracle或SQL Server等。开发者可能需要编写SQL查询语句来获取、插入、更新或删除学生数据。 3. **数据模型与实体类**:在Java中,...
- 在Oracle中,为了确保能够更新或删除游标中的行,SELECT语句需要包含`FOR UPDATE`子句,这可以锁定对应的行以便后续操作。 #### 十八、Oracle游标属性 **题目**: 在Oracle中,不属于游标属性的是? - (1) %NOT...
Oracle数据库中,rownum和rowid是两个非常重要的概念,它们在查询语句中有着不同的作用和特性。本文将深入探讨两者的区别,并通过实例解析它们在查询中的行为。 首先,rownum是一个“伪数列”,它并不是数据库中...
除了MongoDB外,Mycat还支持其他类型的数据库。例如,下面是配置Oracle数据库的一个例子: ```xml <dataHost name="jdbchost2" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="oracle" dbDriver=...
5. **新建报表并建立数据连接**:创建新的报表,选择连接类型为ODS。测试连接后,进入报表设计阶段。 6. **插入表格和关联字段**:从菜单中选择“插入”->“插入表”,等待系统抓取所有表。将报表所需表拖至设计...
- **人员信息管理**:维护教职工基本信息。 - **最新动态管理**:发布最新的通知公告等。 ##### 2.3 开发与运行环境 - **开发工具**:MyEclipse 8.5 - **开发语言**:JavaWeb - **数据库管理系统软件**:Oracle10g...
通过`SET`子句指定要修改的字段及其新值,结合`WHERE`子句进行条件筛选,我们可以实现对数据库的精确操作。在使用`UPDATE`时,务必谨慎,因为它会立即修改数据,如果未正确使用`WHERE`子句,可能会导致大量记录被...
Java Platform, Enterprise Edition(JavaEE)是由Oracle公司发布的企业级应用开发平台标准。它基于Java Standard Edition(Java SE),并提供了一系列用于构建分布式、多层中间件应用的服务,如Web容器、EJB容器、...
#### 一、文件操作技巧 **知识点1:查询文件中的空行行号** - **方法一**: 使用`awk`命令 - `awk'{if($0~/^$/)printNR}' file1` - **解释**: 这里`$0`表示每一行的内容,`/^$/`是一个正则表达式,用于匹配空行,`...