SQL堂上作业九
表的建立
我们可以用CREATE TABLE xxx来建表
CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));
然后,我们用DESCRIBE dept来查看该表的格式
输出如下:
名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13)
数据库中表名的查询
我们可以用以下命令进行查询:
SELECT table_name FROM user_tables ;
输出将会是若干个表的名字,节选如下:
TABLE_NAME ------------------------------------------------------------ AQ$_KUPC$DATAPUMP_QUETAB_G AQ$_AQ_PROP_TABLE_G AQ$_AQ$_MEM_MC_G AQ$_ALERT_QT_G AQ$_SCHEDULER_FILEWATCHER_QT_G AQ$_SCHEDULER$_REMDB_JOBQTAB_G AQ$_SCHEDULER$_EVENT_QTAB_G RECENT_RESOURCE_INCARNATIONS$ CHNF$_GROUP_FILTER_IOT CHNF$_CLAUSES RULE_SET_ROP$ TABLE_NAME ------------------------------------------------------------ RULE_SET_IOT$ RULE_SET_PR$ UTL_RECOMP_COMPILED UTL_RECOMP_SORTED 已选择950行。
我们可以下列命令查询对象名
SELECT DISTINCT object_type FROM user_objects ;
输出如下:
OBJECT_TYPE -------------------------------------- EDITION TABLE SUBPARTITION INDEX PARTITION CONSUMER GROUP SEQUENCE TABLE PARTITION SCHEDULE QUEUE RULE PROCEDURE OPERATOR OBJECT_TYPE -------------------------------------- LOB PARTITION DESTINATION WINDOW SCHEDULER GROUP LOB PACKAGE PACKAGE BODY LIBRARY PROGRAM RULE SET CONTEXT OBJECT_TYPE -------------------------------------- TYPE BODY TRIGGER JOB CLASS UNDEFINED DIRECTORY TABLE INDEX VIEW FUNCTION SYNONYM CLUSTER OBJECT_TYPE -------------------------------------- TYPE RESOURCE PLAN JOB EVALUATION CONTEXT 已选择37行。
我们可以用下列命令,输出TABLES,VIEWS等内容
SELECT * FROM user_catalog ;
输出足足有48xx行,就不列举了
表中数据类型
表中可以允许的数据类型如下图所示
Data Type | Description |
---|---|
VARCHAR2(size) | Variable-length character data |
CHAR(size) | Fixed-length character data |
NUMBER(p,s) | Variable-length numeric data |
DATE | Date and time values |
LONG | Variable-length character data up to 2 gigabytes |
CLOB | Character data up to 4gigabytes |
RAW and LONG RAW | Raw binary data |
BLOB | Binary data up to 4 gigabytes |
BFILE | Binary data stored in an external file; up to 4 gigabytes |
ROWID | A 64 base number system representing the unique address of a row in its table. |
懒得翻译了qwq,大家直接看吧
子查询建表
我们可以用SELECT子句+CREATE TABLE,基于已有的数据进行建表
CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80;
表的类型如下:
名称 是否为空? 类型 ----------------------------------------------------- -------- ------------------------------------ EMPLOYEE_ID NUMBER(6) LAST_NAME NOT NULL VARCHAR2(25) ANNSAL NUMBER HIRE_DATE NOT NULL DATE
ALTER命令
ALTER命令可以对表的一些默认参数进行修改
比如说:ALTER TABLE xxx ADD可以添加一个新列,还可以用MODIFY修改,DROP去掉一列等
ADD操作
ADD可以给一个表新增一个列,并且指定这个列的名字
我们准备给表DEPT80,新增一个叫做JOB_ID的列,命令如下:
ALTER TABLE dept80 ADD (job_id VARCHAR2(9));
表的类型变更为下文:
名称 是否为空? 类型 ----------------------------------------------------- -------- ------------------------------------ EMPLOYEE_ID NUMBER(6) LAST_NAME NOT NULL VARCHAR2(25) ANNSAL NUMBER HIRE_DATE NOT NULL DATE JOB_ID VARCHAR2(9)
MODIFY操作
MODIFY可以用于对一个列的类别进行修改
假设我们要将LAST_NAME这一列,修改为其他的数据类型,命令如下
ALTER TABLE dept80 MODIFY (last_name VARCHAR2(30));
表的类型变更为了这样:
名称 是否为空? 类型 ----------------------------------------------------- -------- ------------------------------------ EMPLOYEE_ID NUMBER(6) LAST_NAME NOT NULL VARCHAR2(30) ANNSAL NUMBER HIRE_DATE NOT NULL DATE JOB_ID VARCHAR2(9)
DROP操作
我们可以用DROP命令删除掉某个表的一列
ALTER TABLE dept80 DROP COLUMN job_id;
表的类型变更为如下图所示:
名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- EMPLOYEE_ID NUMBER(6) LAST_NAME NOT NULL VARCHAR2(30) ANNSAL NUMBER HIRE_DATE NOT NULL DATE
UNUSED标签
对于不使用的行,我们可以打上UNUSED标签,以便于DROP
ALTER TABLE dept80 SET UNUSED (hire_date);
表的删除
我们可以用DROP命令删表
DROP TABLE dept80;
表的重命名
我们可以用RENAME命令给表重命名
RENAME dept TO detail_dept;
表的清空
我们可以用TRUNCATE命令对表进行清空
TRUNCATE TABLE student;
这个命令将会把表student清空。
警告:清空命令可以对抗rollback,被清空的表无法通过rollback恢复。
表的注释
我们可以通过COMMENT命令给表添加注释
COMMENT ON TABLE employees IS 'Employee Information';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!