表的创建、修改及约束

1、创建表

CREATE TABLE EMP2 AS SELECT * FROM EMP WHERE 1=2;--只复制表结构
CREATE TABLE TEST1 AS SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE DEPTNO=10;--只复制另一个表中的某几个字段
CREATE TABLE EMP2 AS SELECT * FROM EMP; --复制整张表,包括数据
CREATE TABLE EMP2 AS SELECT * FROM EMP WHERE rownum<=10;--只复制前10行数据

2、插入数据

INSERT INTO DEPT VALUES(50,‘DBA‘,‘HK‘);--所有字段都插入值
INSERT INTO DEPT(DEPTNO,DNAME) VALUES(60,‘TEST‘);--只插入其中几个字段值
INSERT INTO EMP2 (SELECT * FROM EMP);--使用子查询插入数据时,不要加values或as
INSERT INTO EMP2 (SELECT * FROM EMP WHERE ROWNUM<=10);

3、更新表中的数据

update emp2 set empno=2222,ename=‘rusky‘ where empno=1111;--如果不加where条件,则更新表中的所有行。
update emp2 set (empno,ename)=(2222,‘rusky‘) where empno=1111;--ORA-01767: UPDATE ...SET 表达式必须是子查询
update emp2 set (ename,job,hiredate)=(select ename,job,hiredate from emp where empno=7369) where empno=1111;--使用子查询修改表
DELETE FROM TEST1 WHERE EMPNO=7782;--删除表中的某一行记录
DELETE FROM TEST;--不加WHERE条件,清空表中所有记录
DELETE FROM EMP2 WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME=‘SALES‘); --使用子查询删除记录

4、修改表结构

ALTER TABLE DEPT2 ADD (MANAGER NUMBER(4)); --增加列
ALTER TABLE DEPT2 MODIFY(MANAGER NUMBER(4));--修改列属性
ALTER TABLE DEPT2 DROP COLUMN MANAGER;--删除表中的字段
DROP TABLE DEPT2;--直接删除表,包括表数据和表结构。
TRUNCATE TABLE DEPT2;--只清空表中的数据
RENAME DEPT2 TO DEPT3;--修改表名
COMMENT ON TABLE DEPT3 IS ‘THIS IS A TEST TABLE‘; --给表增加注释
COMMENT ON COLUMN DEPT3.MANAGER IS ‘THE MANAGER OF THIS DEPARTMENT‘;--给某个字段增加注释

5、相关查询及其它

SELECT * FROM USER_TABLES; --查看用户所有表
SELECT DISTINCT OBJECT_TYPE FROM USER_OBJECTS; --查看用户拥有的数据类型
SELECT * FROM USER_CATALOG; --查看用户拥有的表、视图、同义词、序列
查看表、字段、视图、同义词等的注释:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS

====
几种不常见的数据类型
LONG:可保存最大长度为2GB的字符数据
CLOB:可保存最大长度为4GB的字符数据
BLOG:可保存最大长度为4GB的二进制数据
BFILE:在外部文件中存储的二进制数据,最大为4GB
RAW and LONG RAW:存储二进行数据

6、约束
--约束用于确保数据库数据满足特定的商业规则。在Oracle中,约束包括:not null、unique、primary key, foreign key和check五种。

CREATE TABLE Goods(
GoodsId char(8) primary key, --主键
GoodName varchar2(50),
UnitPrice number(10,2) check(UnitPrice>0),--单价必须大于0
Category varchar2(30),
Provider varchar2(100));
--添加注释
COMMENT ON TABLE Goods is ‘ 商品表Goods(商品号GoodsId,商品名GoodName,单价UnitPrice,商品类别Categroy,供应商Provider)‘

CREATE TABLE Customers(
CustomerId char(8) primary key, --主键
Name varchar2(30) not null,--姓名允许为空
Address varchar2(150),
Email varchar2(100) unique, --Email唯一
Gender char(2) default(‘男‘) check(Gender in(‘男‘,‘女‘)), --性别只能是男或女
CardId char(18));
--添加注释
COMMENT ON TABLE Customers is ‘客户表Customers(客户号CustomerId,姓名Name,住址Address,电邮Email,性别Gender,身份证CardId)‘

CREATE TABLE Purchases(
CustomerId char(8) references Customers(Customerid), --外键
GoodId char(8) references Goods(GoodsId),
Num number(10) check(Num between 1 and 30));
--添加注释
COMMENT ON TABLE Purchases is ‘销售表Purchases(客户号CustomerId,商品号GoodsId,购买数量Num)‘

A、表级定义
表级定义是指在定义了所有列后,再定义约束,这里需要注意,not null约束只能在列级上定义。
案例:

sql> create table Goods(
GoodsId char(8),GoodsName varchar2(50), Category varchar(30),
constraint PK_GoodsId primary key(GoodsId));

B、列级定义
列级定义是在定义列的同时定义约束。
案例:

sql>create table Goods(
GoodsId char(8) constraint PK_GoodsId primary key ,--主键
GoodName varchar2(50),
UnitPrice number(10,2) check(UnitPrice>0),--单价必须大于0
Category varchar(30),
Provider varchar(100));

--添加、修改约束
--如果在建表时忘记建立必要的约束,则可以在建表后使用alter table命令为表增加约束,但是要注意:增加not null约束时,需要使用modify选项,而增加其他四种约束使用add选项。

ALTER TABLE Goods modify GoodsId not null;
ALTER TABLE Customers add constraint UQ_CardId unique(Cardid);

--删除约束

sql>alter table 表名 drop constraint 约束名称;
ALTER TABLE Customers drop constraints UQ_CardId;

--修改约束名

ALTER TABLE EMPLOYEE RENAME CONSTRAINT PK_EMPLOYEE TO PK_EMPLOYEE1;

特别说明:
在删除主键约束的时候,可能有错误。比如
alter table 表名 drop primary key;
这是因为如果在两表存在主从关系,那么在删除主表主键约束时,必须带上cascade选项。
sql> alter table 表名 drop primary key cascade;
--查看约束:
SELECT * FROM USER_CONSTRAINTS;
SELECT * FROM USER_CONS_COLUMNS;
================
其它示例:

列级定义约束:
CREATE TABLE DEPARTMENT(
DEPTID NUMBER(2) PRIMARY KEY,--或者DEPTID NUMBER(2) CONSTRAINT PK_DEPARTMENT PRIMARY KEY,
NAME VARCHAR2(12),
LOC VARCHAR2(12)
);
表级定义约束:
CREATE TABLE EMPLOYEE(
EMPID NUMBER(4),
NAME VARCHAR2(10),
DEPTID NUMBER(2),
CONSTRAINT PK_EMPLOYEE PRIMARY KEY(EMPID),
CONSTRAINT FK_DEPARTMENT FOREIGN KEY(DEPTID) REFERENCES DEPARTMENT(DEPTID)
);

====
定义多列的复合约束

CREATE TABLE DEPARTMENT2(
DEPTID NUMBER(2),--或者DEPTID NUMBER(2) CONSTRAINT PK_DEPARTMENT PRIMARY KEY,
DNAME VARCHAR2(12),
LOC VARCHAR2(12),
PRIMARY KEY(DEPTID,DNAME)
);

CREATE TABLE EMPLOYEE2(
EMPID NUMBER(4) PRIMARY KEY,
NAME VARCHAR2(10),
DEPTID NUMBER(2),
DNAME VARCHAR2(12),
CONSTRAINT FK_DEPARTMENT1 FOREIGN KEY(DEPTID,DNAME) REFERENCES DEPARTMENT2(DEPTID,DNAME) ON DELETE CASCADE--当删除部门表中的某个部门信息时,级联删除员工表中的
DEPTNO,DNAME.或者这样:ON DELETE SET NULL,设为null
);
时间: 2024-10-02 06:51:55

表的创建、修改及约束的相关文章

DDL 数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修改: alter 删除: DROP DATABASE [IF EXISTS] 库名; */ #一 : 库的管理 #1 库的创建 CREATE DATABASE books; CREATE DATABASE IF NOT EXISTS books; #2/库的修改 #库名的修改,需要停止服务器,然后修

Oracle二维表的创建与约束以及修改

Oracle二维表的创建与约束以及修改 创建表2477203708 create table 表名( 属性名 数据类型 行约束条件, 属性名 数据类型 行约束条件, …… 表级约束条件 ) 字符串 char 使用指定长度的固定长度表示的字符串,位数不足的字符串在其后补空字符: 字符串 varchar 存放固定长度的字符串 字符串 varchar2 长度可变的字符串,动态分配内存空间(Oracle所特有的数据类型) 数字 number number(6,3)数据长度为6,其中3位为小数 日期 da

MySQL 入门(五)—— 表的创建、修改和删除

表是DB存储数据的基本单位,一个表包含若干个字段或记录.表的操作包括创建.修改和删除. 1.创建表 创建表即在已存在的数据库中创立新表.在使用USE语句选择具体数据库后,可以使用它SQL语句创建表 其中,属性名指表中字段的名称,数据类型即对应字段的数据类型,完整性约束条件指对应字段的某些特殊约束条件. MySQL中基本的完整性约束条件有 1.1 设置表的主键 主键是表的一个特殊字段,该字段能唯一地表示该表中的每条信息,即主键如同表中记录的身份证.主键的主要目的在于帮助MySQL以最快的速度查找表

Oracle数据库零散知识05 -- 表创建,修改

1.表的创建 Create table student02(sno number); 2.表的删除 Drop table student02; 3.表的重命名 Rename student02 to student01; 4.表的修改 Alter table student01 --列的修改 Add ob number Modify ob varchar2(2) Rename column ob to obnew Drop column obnew --约束 Add constraint pk_

MySQL之表的创建、删除、修改、删除、查看及索引

创建数据库 create database|schema [if not exists] db_name [character set= ] [collate= ] 注:schema可以理解为方案或者数据库,与database一个意义 例创建一个students数据库,且默认字符集为'gbk'.默认排序为'gbk_chinese_ci'; create schema if not exists students character set 'gbk' collate 'gbk_chinese_c

MySQL入门很简单: 4 创建 修改删除表

1. 创建表的方法 1)创建表的语法形式 首先,选择数据库: USE 数据库名: 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 ); 2)设置表的主键 主键用于标识每一个记录, 主键必须唯一. 单字段主键: 主键是由一个字段构成的 语法规则: 属性名 数据类型 PRIMARY KEY 例子: CREATE TABLE example1(stu_id INT PRIMARY KEY, stu_name

mysql表的创建、查看、修改、删除

一.创建表 创建表前先使用use 数据库名进入某一个数据库,创建表语句的格式如下: create table 表名称 ( 列名1 列的数据类型 [约束], 列名2 列的数据类型 [约束], 列名2 列的数据类型 [约束], ... 列名N 列的数据类型 [约束] ); #注意:最后一个末尾没有逗号 比如创建一个表名称为students,有name和age两列的表的命令为: create table students ( name varchar(20), age INTEGER ); 创建完之后

SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )

c# 注册表操作,创建,删除,修改,判断节点是否存在

用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须要引入必要的命名空间: C#代码    using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~ 2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支: ClassesRoot,CurrentUser,Use

Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracle支持的数据类型: 字符型 char 定长 最大2000个字符 char(10)----'小韩' 前四个字符放'小韩',后添加6个空格补全.(查询效率高) varchar2(20) 变长 最大4000个字符 vachar2(10)----'小韩' oracle分配四个字符,这样可以节省空间. clo