题目
创建学生信息表
信息
- 类型:问答
- 难度:⭐
考点
表创建语法,数据类型,约束
快速回答
在Oracle中创建学生信息表的基本语法:
- 使用
CREATE TABLE语句定义表结构 - 常用数据类型:
NUMBER(学号/年龄),VARCHAR2(姓名/性别) - 关键约束:
PRIMARY KEY(主键),NOT NULL(非空)
示例代码:CREATE TABLE students (id NUMBER PRIMARY KEY, name VARCHAR2(50) NOT NULL);
解析
1. 核心语法结构
Oracle创建表的标准语法:
CREATE TABLE table_name (
column1 datatype [constraint],
column2 datatype [constraint],
...
);2. 学生表示例代码
CREATE TABLE students (
student_id NUMBER(8) PRIMARY KEY, -- 学号(主键)
name VARCHAR2(50) NOT NULL, -- 姓名(必填)
gender CHAR(1) CHECK(gender IN ('M','F')), -- 性别检查约束
birth_date DATE, -- 出生日期
enroll_date DATE DEFAULT SYSDATE -- 入学日期(默认当前日期)
);3. 关键要素说明
- 数据类型
NUMBER(p):数值类型,p表示总位数(如学号)VARCHAR2(n):变长字符串(如姓名),n为最大字节数DATE:日期类型(如出生日期)
- 约束类型
PRIMARY KEY:唯一标识记录(自动创建唯一索引)NOT NULL:禁止空值(如姓名必填)CHECK:自定义条件(如性别只允许'M'/'F')DEFAULT:未指定值时自动填充(如默认入学日期)
4. 最佳实践
- 始终为表定义主键确保数据唯一性
- 对字符串字段使用
VARCHAR2而非CHAR以节省空间 - 日期字段使用
DATE类型而非字符串,方便日期计算 - 为字段添加注释:
COMMENT ON COLUMN students.name IS '学生姓名';
5. 常见错误
- 忘记主键约束导致重复数据:
PRIMARY KEY缺失 - 字符串长度定义不足:
VARCHAR2(10)但实际存入超长姓名 - 日期格式混淆:直接插入
'2023-01-01'应改用TO_DATE('2023-01-01','YYYY-MM-DD') - 约束命名缺失:Oracle自动生成形如
SYS_C0012345的约束名,建议显式命名:student_id NUMBER CONSTRAINT pk_student PRIMARY KEY
6. 扩展知识
- 表空间管理:大型表可指定表空间
CREATE TABLE students (...) TABLESPACE users; - 复制表结构:
CREATE TABLE student_backup AS SELECT * FROM students WHERE 1=0; - 常见数据类型补充
CLOB:大文本(如学生简历)BLOB:二进制数据(如照片)TIMESTAMP:精确到毫秒的时间戳