Oracle中的table是个逻辑概念table由一个或多个segment组成
创建一个表
CREATE TABLE table_name (
参数1 数据类型 约束条件,
参数2 数据类型 约束条件,
参数3 数据类型 约束条件,
...
也可以在后面补约束条件CONSTRAINT 约束名 约束条件 (列名)
);
外键约束写到后面
constraint fk_name foreign key(列名) references 其他表名(列名);
被当作外键的列需要是主键或者有唯一约束,这样保证从外键得来的数据是唯一的
是将其他表的一列作为该表的该列的外键就是其他表有某个数据该表才能有某个数据
常用数据类型有
NUMBER:数字类型,包括整型和浮点型;
VARCHAR2(最大长度):可变长度字符串;用多少占用多少
CHAR(规定长度):定长字符串;
DATE:日期类型;
CLOB:大型文本类型;
BLOB:二进制大型对象类型。
常见的约束条件有
NOT NULL:非空;
PRIMARY KEY:主键;
UNIQUE:唯一性;
FOREIGN KEY:外键;
CHECK:检查条件。
插入数据
语法“insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....),(值1,值2,值2);”。
Oracle字符串用的是单引号只有Oracle中特殊字符名用双引号
修改输出格式
col format a大小
消除更改的格式
column not allowed here
事务级临时表:
数据会在每个事务提交时被删除。如果你执行了COMMIT命令,那么表中的数据就会被清除。这意味着在一个事务中插入的数据在另一个事务提交后将不再可见。
CREATE GLOBAL TEMPORARY TABLE test_table (
id NUMBER,
name VARCHAR2(50)
) ON COMMIT DELETE ROWS;
插入数据后commit提交事物后数据会消失
索引
索引结构: Oracle使用B树(或B*树)和位图索引等数据结构来组织索引。B树是一种平衡树结构,它能够保持有序并提供快速的查找、插入和删除操作。每个索引条目都包含键值和指向实际数据行的指针。
1. 提高查询性能:索引可以加快数据的检索速度,特别是在大型数据库中,可以大幅减少查询所需的时间。
2. 加速排序:当使用索引进行排序时,可以快速定位和读取数据,从而加快排序操作的速度。
3. 提高连接操作的效率:当使用索引进行连接操作时,可以快速定位和匹配数据,从而提高连接操作的效率。
4. 保持数据的唯一性:通过唯一索引可以提供数据的唯一性约束,确保表中的数据不会出现重复。
5. 加速数据修改操作:使用索引可以加快对表中数据的插入、更新和删除操作的速度,特别是在更新和删除操作时,可以快速定位和修改数据。
6. 优化存储空间:索引可以减少数据的存储空间,特别是当使用了位图索引或稀疏索引时,可以大幅减少索引占用的存储空间。
7. 提供数据完整性:通过在索引中添加约束,可以确保数据的完整性,例如,使用唯一索引可以确保某列的值唯一。
需要注意的是,索引的创建和维护会占用额外的存储空间和计算资源,因此在设计数据库时需要谨慎选择和使用索引。
能够提高查询速度的原理?
创建索引
这些情况该列会自动创建索引
主键约束(Primary Key Constraint): 当你在表上定义主键时,Oracle会自动在主键列上创建唯一索引。主键列的值是唯一的,所以自动创建索引可以确保主键的唯一性。
唯一约束(Unique Constraint): 类似于主键约束,唯一约束也会在约束的列上自动创建唯一索引。这确保了该列的数值唯一,但允许空值(null)。
外键约束(Foreign Key Constraint): 当你创建外键引用其他表的主键时,Oracle通常会自动在外键列上创建索引以加速关联查询。
创建视图(Views): 在一些情况下,创建视图时,如果涉及到需要自动创建索引的列,Oracle也会自动创建相应的索引,以提高视图的性能。
create index 索引名 on 表名(列名);唯一索引需要该列具有唯一约束