一、在创建表的时候加上主键的例子:
create table stu(
id number(5)primary key,
name varchar2(20)
);
以上是一种主键约束。简单了解下。约束表中id列中的数据,要求不为空且不能重复。
二、修改表结构常用的3种操作:
1.在一个表中加入一个新的列
语法格式:
alter table 表名 add
(列名 数据类型 [default默认值] [, 列名…])
如果加一列不够,可以逗号之后再加一列。
【注意】alter是DDL语句,一旦改动就永久改动。
例:为A表加入“age”一列,该列的数据类型为“number”,且默认值为23。
alter table A add age number(2) default 23
下面具体操作:
Step1:首先用lisi登录数据库,因为原sys用户下面的表太多,查询起来麻烦,换个自定义用户lisi登录数据库,查询方便,如下图:
Step2:查询当前用户下的表数量,注意下图中的命令:
Step3:发现lisi用户下没有表,那么创建一个表,如下图:
Step4:再次用步骤2的方法查询,如下图:
接着用desc A查询A表的结构,如下图:
发现lisi用户下已有表A。
Step5:为A表增加age列,如下图:
Step6:再次用desc A查看A表结构,如下图:
2.修改在一个表中已存在的列
语法格式:
alter table 表名 modify
(列名 数据类型 [default 默认值] [,列名…])
【注意】alter语句一旦执行,就永久修改。
例:将A表中的age这列的数据类型改为varchar2(2)
alter table A modify age varchar2(2)
下面具体操作:
Step1:为了说明报错信息,首先给空的A表中添加一行数据,如下图:
查询表结构和表内容,如下图:
说明数据内容添加成功。
Step2:这时候将表age列修改为varchar2(2),如下图:
发现报错,因为被修改的age列已经存在数据,所以被修改的列必须是空的才能修改
Step3:将表A的age列清空,注意下图中的命令,如下图所示:
查询表结构和表内容:
Step4:将表A中的age列修改为varchar2(2),如下图:
【注意】修改一个表中已经存在的列要注意以下事项:
(1)可以增加字符类型的列的宽度,简单说,比如原来该列是varchar2(2)类型,在不改变类型情况下,不管该列是否为空,都可以增加长度,比如把2加到10,即varchar(10);
(2)可以增加数字类型的列的宽度和精度,数字类型比如number类型;
(3)只有当所有列的值都为空或者表中没有数据时,才可以减少列的宽度;
(4)只有当所有列的值都为空时,才可以改变某一列的数据类型,如上面示例说明;
(5)如果改变某一列的默认值,该默认值只能影响以后的操作,如以下操作,在将A表age列的默认值改为23后,原来张三数据依然为空,之后添加的张四数据age默认值为23,所以只影响以后的操作:
表中原数据查询:
修改age列的默认值为23:
再次查询A表内容,发现原来数据的age列没改:
插入新数据张四:
查询发现新数据张四的age是新设置的默认值23:
所以修改某一列的默认值,不影响原数据,只影响后数据;
(6)只有当某一列没有改变该列的大小的情况下,才可以把char类型的列改变成varchar2类型的列,或者把varchar2类型的列改变成char类型的列,因为char类型如果数据长度不够,会自动补空格,所以如果把varchar2类型改为char类型,长度会改变,不安全。
3.从一个表中删除一列
语法格式:
alter table 表名 drop column 列名
例:将A表中的age列删除
alter table A drop column age
实战操作:
Step1:先看下现在的A表,如下图:
Step2:删除age列,如下图:
Step3:查询是否删除成功,如下图: