表的结构---create /alter /drop /truncate
1 创建表
创建表结构的格式:
create table 表名(
列名1 数据类型 ,
列名2 数据类型 ,
列名3 数据类型 ,
列名4 数据类型 ,
列名5 数据类型 ,
...
列名N 数据类型
);
create table 表名(
列名1 数据类型 [primary key],
列名2 数据类型 [unique],
列名3 数据类型 [not null | null],
列名4 数据类型 check(条件),
列名5 数据类型 [references 表名(列名)]
...
列名N 数据类型 [default 默认值] [各种约束]
);
列名命名规则:字母、数字、下划线(_)组成,不要以数字开头
mobile number(7,3)
10000 12312313 1 123.45 1234.567 1234.567
shengri date
数据类型:
数字:number 可以表示整数,也可以表示小数 number(5,2) 一个数为5位数的有效数,2位小数 -999.99~999.99 numbe(5) -99999~99999
日期:date
字符串:char、varchar2,在Oracle中,字符串用单引号引起来,用双引号引起来是别名
char是定长,如char(12),存储内容的最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用12个字节 char(10) 小明
varchar2是可变长,如varchar2(12),存储内容的最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用6个字节
字节:字节是由二进制代码组成,二进制代码就是0和1组成,8个二进制位组成1个字节,即1B = 8b
字符:是由字节经过特定的编码方式组成,1个中文字符占3个字节,对于英文字符来说,一个字符占用1个字节。
创建一个简单的表
create table t_student(
id number,
name varchar2(50),
sex char(12),
birthday date
);
create table student_tmp(
id number,
name varchar2(50),
sex char(12),
birthday date
);
字段的约束条件(约束不是必写的):
约束:就是限制
唯一约束(unique):值不能重复,但是可以为null。属于表对象(跟列一样),必须要有名字,若没有指定名字,则Oracle随即分配一个唯一的名字
非空约束(not null):值不能为空,一个列默认是可以为空
默认值(default):当没有给列指定值的时候,则取默认值;在创建表时,若没有给列指定默认值,那么该列的默认值是空(即null)
检查约束(check):检查值是否满足某个条件,属于表对象,必须要有名字
主键(primary key):相当于身份证号码,包含非空约束和唯一约束,也是属于表对象,在设计一张表示,需要有主键列
外键(references):也属于表对象,必须要有名字
主键(primary key):相当于身份证号码,是唯一的,通过身份证号码只能找到一个人,即通过主键列只能找到一行数据,在创建表时,通常要有主键列,主键属于表对象,所以主键有一个名字,若没给主键指定名字,oracle会自动分配一个唯一的名字,在一个表中只能有一个主键对象
以下两个表有约束关系:
create table t_class(
classid number primary key, ---- 主键
classname varchar2(100)
);
--sysdate:获取系统当前时间,格式是:年月日时分秒
create table t_user(
t_id number primary key, ---- 主键
t_sex varchar2(20) check(t_sex = 男 or t_sex = 女), ----- 检查
t_name varchar2(50) not null, --- 非空
t_cardid varchar2(20) unique, --- 唯一
t_birthday date default sysdate, ---- 默认值
classid number references t_class(classid) ----- 外键
);
商品售货系统设计案例
现有一个商品的数据、记录客户及其购物情况,由下三张表组成
1)、商品goods(商品号goodsid,商品名goodsname,单价unitprice,商品类别ccategory,供应商provider)
2)、客户customer(客户号customerid,姓名cname,住址address,电邮email,性别sex,身份证cardid)
3)、购买purchase(客户号customerid,商品号goodsid,购买数量nums)
要求:每个表格要建立主键或外键,客户的姓名不能为空值;单价必须大于0,购买数量必须在1到30之间;
电邮不能重复;客户的性别必须是男或女,默认是男。
-------- 查看表结构 --------
在 command window(命令窗口)下输入:
desc 表名;
2 修改表
修改表:增加列
alter table 表名
add(字段名1 数据类型 [not null | null],字段名2 数据类型 [not null | null]);
如果要新增多个列,则要用逗号将各列定义分开。
例:向t_student表中增加一个性别和住址字段
alter table t_student
add(score number,addr varchar2(50));
alter table t_student
add classid number references t_class(classid);
--------修改列:修改数据类型、约束等等--------
alter table 表名
modify(列名 数据类型 [default 默认值] [not null | null]);
如果要修改多个列,则要用逗号将各列定义分开。
例:修改t_student的name字段类型为varchar2(100)。
alter table t_student
modify name varchar2(100) ;
删除列
alter table 表名
drop column 列名;
例:
alter table t_student
drop column score;
alter table t_student
drop column addr;
3 表的删除
删除表结构:drop table 表名
truncate table 表名
例:删除student_tmp2表
drop table student_tmp2;
dept --> 部门表:
deptno 部门号
dname 部门名称
loc 部门地址
emp --> 员工信息表: