oracle建表

1、创建表的同时创建主键约束
(1) 无命名 create table student ( studentid int primary key not null, studentname varchar(8), age int);
(2) 有命名 create table students ( studentid int , studentname varchar(8), age int, constraint yy primary key(studentid));

2、删除表中已有的主键约束
(1) 无命名可用 SELECT * from user_cons_columns; 查找表中主键名称得 student 表中的主
键名为 SYS_C002715 alter table student drop constraint SYS_C002715;
(2) 有命名 alter table students drop constraint yy;

3、 向表中添加主键约束 alter table student add constraint pk_student primary key(studentid);

4、 向表中添加外键约束 ALTER TABLE table_A ADD CONSTRAINT FK_name FOREIGN KEY(id)
REFERENCES table_B(id);

主键约束用于唯一地标识表中的每一行记录。在一个表中,最多只能有一个主键约束,主键约束既可以由一个列组成,也可由两个或两个以上的列组成(这种成为联合主键)。主键约束同时也具备非空约束的特征。
唯一性约束强调所在的列不允许有相同的值。但是,它的定义要比主键约束弱,即,它所在的列允许空值。唯一性约束的主要作用是在保证除主键列外,其他列值的唯一性。
Eg:qq varchar2(20) constraint QQ_UK unique
如果,UNIQUE 约束的列有值,则不允许重复,但是可以插入多个 NULL 值,即该列的空值可以重复。

oracle 中 char,varchar,varchar2 的区别区别:
1. CHAR 的长度是固定的,而 VARCHAR2 的长度是可以变化的, 比如,存储字符串“abc",对于 CHAR (20),表示你存储的字符将占 20 个字节(包括 17 个空字符),而同样的 VARCHAR2 (20)则只占用 3 个字节的长度,20 只是最大值,当你存储的字符小于 20 时,按实际长度存储。
2.CHAR 的效率比 VARCHAR2 的效率稍高。
3.目前 VARCHAR 是 VARCHAR2 的同义词。工业标准的 VARCHAR 类型可以存储空字符串,但是 oracle 不这样做,尽管它保留以后这样做的 权利。Oracle 自己开发了一个数据类型 VARCHAR2,这个类型不是一个标准的 VARCHAR,它将在数据库中 varchar 列可以存储空字符串的 特性改为存储 NULL 值。
如果你想有向后兼容的能力,Oracle 建议使用 VARCHAR2 而不是 VARCHAR。
何时该用 CHAR,何时该用 varchar2?
CHAR 与 VARCHAR2 是一对矛盾的统一体,两者是互补的关系.
VARCHAR2 比 CHAR 节省空间,在效率上比 CHAR 会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2 虽然比 CHAR 节省空间,但是如果一个 VARCHAR2 列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的 I/O,是数据库设计和调整中要尽力避免的,在这种情况下用 CHAR 代替 VARCHAR2 会更好一些。 char 中还会自动补齐空格,因为你 insert 到一个 char 字段自动补充了空格的,但是 select 后空格没有删除。

### Oracle 数据库中创的语法与示例 在 Oracle 数据库中,`CREATE TABLE` 是用于定义新的关键字。以下是创的标准语法: ```sql CREATE TABLE schema_name.table_name ( column_1 data_type column_constraint, column_2 data_type column_constraint, ... table_constraint ); ``` #### 名和列定义 - `schema_name`: 可选参数,指定模式名称。如果省略,默认为当前用户的方案。 - `table_name`: 要创的新的名称。 - 列定义部分包括列名、数据类型以及可选约束条件。 #### 示例 1:基本 以下是一个简单的例子,展示如何创一个名为 `employees` 的[^1]: ```sql CREATE TABLE employees ( employee_id NUMBER(6) PRIMARY KEY, first_name VARCHAR2(50), last_name VARCHAR2(50) NOT NULL, email VARCHAR2(100) UNIQUE, hire_date DATE DEFAULT SYSDATE, salary NUMBER(8, 2) ); ``` 在此示例中: - `employee_id` 定义为主键,确保每条记录唯一。 - `last_name` 设置为不可为空 (`NOT NULL`)。 - `email` 字段具有唯一性约束,防止重复值。 - `hire_date` 默认设置为系统日期 (`SYSDATE`)。 #### 示例 2:带注释的 可以使用 `COMMENT ON COLUMN` 添加字段描述,便于理解结构[^4]: ```sql CREATE TABLE products ( product_id NUMBER(10) PRIMARY KEY, product_name VARCHAR2(100) NOT NULL, price NUMBER(8, 2), category_id NUMBER(5) ); -- 添加注释 COMMENT ON COLUMN products.product_name IS '产品名称'; COMMENT ON COLUMN products.price IS '价格,单位为元'; ``` #### 示例 3:指定空间 可以通过 `TABLESPACE` 子句将分配到特定的空间: ```sql CREATE TABLE testTable ( id VARCHAR(3) ) TABLESPACE testOracle; ``` 此命令将在 `testOracle` 空间中创 `testTable` 。 #### 示例 4:分区 对于大规模数据集,可以考虑使用分区技术来提高查询性能[^3]: ```sql CREATE TABLE t_partition_rh ( id NUMBER, name VARCHAR2(50) ) PARTITION BY RANGE (id) ( PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LESS THAN (200), PARTITION p3 VALUES LESS THAN (MAXVALUE) ); ``` 上述代码展示了基于范围分区的设计方法。 --- ### 插入数据示例 向已创中插入数据时,可以使用如下语句: ```sql INSERT INTO employees (employee_id, first_name, last_name, email, salary) VALUES (1, 'John', 'Doe', 'john.doe@example.com', 75000); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值