数据库建表

数据库建表

测试用户:scott/tiger

超级管理员:sys/as sysdba

1、建表

creat table 表名(列名 数据类型 约束,列名 数据类型 约束。。。)

数据类型

字符串:varchar(2)长度不固定 nvarchar(1) char(10)固定长度,不够补空格 nchar()

数字:number(7整数,0小数)

日期:date(7-7月-2019/除此格式其他都不识别)

大数据类型

 字节型/字符型

  blob(最多4G)/clob

2、约束

保证数据的完整性:正确,有效

四大类型

               A、实体完整性(每行数据唯一,不能重复)主键,唯一  

               B、域完整性(每列数据都在一个有效的范围内)检查,非空,默认值,数据类型

               C、引用完整性(两个表A/B,B中某一列的数据会参照A表中的某一列)  外键约束

                D、自定义完整性    触发器,过程

主键约束

primary key

1.非空 2.唯一 3.一个表中只能有一个主键,但一个主键可以是多列组合

语法

主键约束:alter table 表名

        add constraint pk_列名 primary key(列名)

唯一约束(只保证数据唯一,不保证非空,空值不验证唯一)

alter table 表名

add constraint uq_列名 unique(列名)

检查约束:alter table 表名

add constraint ck_列名 check(条件表达式)

关系运算符:> < >= <= = != <>

逻辑运算符:and or not

模糊匹配:like

通配符:

% 匹配任意长度的一段任意字符 (%.jpg 所有jpg文件)

_ 匹配一个任意字符

默认值约束:

default

alter table 表名 modify 列名 default ‘值’

外键:

foreign key

A (学生)主表 B(成绩)子表 子表参照主表中数据

A(账户) B(消费记录)

主表被参照的序列必须是主键

子表--------外键

alter table 表名 add constraint fk_列名 foreign key(外键列名) references 主表名(主键列名)

添加数据时,先加主表,再加子表

删除数据时,先删子表,再删主表

eg:create table student
(stuid number(10) not null,
 stuname varchar2(20) not null,
 gender varchar(4) not null,
 phone varchar2(11) null
)
查询表属性
desc student;
查询
select * from student;
添加主键(主键约束)
alter table student
add constraint pk_stuid primary key(stuid);
唯一约束(只保证数据唯一,不保证非空,空值不验证唯一)
alter table student
add constraint uq_phone unique(phone);
添加
insert into student values('10001','张三','男','12345678901')
检查约束
alter table student 
add constraint ck_gender check(gender='男' or gender='女');
性别默认男
alter table student modify gender default '男';
删除默认值

再建一个成绩表
create table exam(
stuno number(10) not null,
subject varchar(30) not null,
score number(3) not null,
examdate date not null);
添加外键
alter table exam add constraint fk_stuno foreign key(stuno) references student(stuid);
添加成绩
insert into exam values('10001'','java',87,sysdate);
删除学生
先删除成绩再删除学生
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值