Oracle数据库表管理详解:创建、修改和删除表,让数据库数据管理更灵活
发布时间: 2024-07-25 12:30:37 阅读量: 25 订阅数: 38
Oracle数据库管理中的表空间、用户操作及DDL、DML语言应用详解
![Oracle数据库表管理详解:创建、修改和删除表,让数据库数据管理更灵活](https://img-blog.csdnimg.cn/9927136125744b7db7cc6419a731a416.png)
# 1. Oracle数据库表管理概述**
Oracle数据库表是存储和组织数据的基本单元。表管理涉及创建、修改、删除和维护数据库表,以确保数据的完整性、可用性和性能。本节将概述表管理的基本概念,包括表结构、数据类型、约束和索引。
# 2. 创建Oracle数据库表
### 2.1 CREATE TABLE 语句的语法和选项
**语法:**
```sql
CREATE TABLE table_name (
column_name data_type [NOT NULL] [DEFAULT default_value] [PRIMARY KEY],
...
[CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table (column_name)]
);
```
**选项:**
- **NOT NULL:**指定列不能为 NULL。
- **DEFAULT:**指定列的默认值。
- **PRIMARY KEY:**指定列为主键。
- **FOREIGN KEY:**指定列为外键,并引用另一个表中的主键。
### 2.2 数据类型和约束的定义
**数据类型:**
Oracle数据库支持多种数据类型,包括:
| 数据类型 | 描述 |
|---|---|
| NUMBER | 数值数据 |
| VARCHAR2 | 可变长度字符串 |
| DATE | 日期 |
| TIMESTAMP | 时间戳 |
| BLOB | 二进制大对象 |
**约束:**
约束用于确保数据完整性,包括:
- **NOT NULL:**列不能为 NULL。
- **UNIQUE:**列中的值必须唯一。
- **PRIMARY KEY:**列为主键,唯一且非 NULL。
- **FOREIGN KEY:**列引用另一个表中的主键。
### 2.3 主键、外键和索引的创建
**主键:**
主键是唯一标识表中每行的列。一个表只能有一个主键。
**外键:**
外键是引用另一个表中主键的列。外键用于建立表之间的关系。
**索引:**
索引是表中列的快速查找结构。索引可以提高查询性能。
**代码示例:**
```sql
-- 创建一个名为 "employees" 的表,其中包含员工信息
CREATE TABLE employees (
employee_id NUMBER(10) NOT NULL,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
salary NUMBER(10,2),
department_id NUMBER(10),
PRIMARY KEY (employee_id),
FOREIGN KEY (department_id) REFERENCES departments (department_id)
);
```
**逻辑分析:**
此代码创建了一个名为 "employees" 的表,其中包含以下列:
- `employee_id`:员工 ID,为主键,不能为 NULL。
- `first_name`:员工名,不能为 NULL。
- `last_name`:员工姓,不能为 NULL。
- `salary`:员工工资,可以为 NULL。
- `department_id`:员工部门 ID,外键,引用 "departments" 表中的 `department_id` 列。
**参数说明:**
- `NUMBER(10)`:指定列为 10 位数字。
- `VARCHAR2(50)`:指定列为可变长度字符串,最大长度为 50 个字符。
- `NOT NULL`:指定列不能为 NULL。
- `PRIMARY KEY`:指定列为主键。
- `FOREIGN KEY`:指定列为外键。
- `REFERENCES`:指定外键引用的表和列。
# 3. 修改Oracle数据库表**
### 3.1 ALTER TABLE 语句的语法和选项
ALTER TABLE 语句用于修改现有表的结构或约束。其语法如下:
```sql
ALTER TABLE table_name
{
ADD column_name data_type [NOT NULL] [DEFAULT default_value]
| DROP COLUMN column_name
```
0
0