建表

1.建表语句语法
create table [schema.]table_name(
字段名 字段类型 [默认值] [列级约束],
字段名 字段类型 [默认值] [列级约束],
字段名 字段类型 [默认值] [列级约束],
....
[表级约束], [表级约束], [表级约束]
);

2.schema
用来指定表创建到哪个用户下
创建s_test表到lucy用户下?
create table lucy.s_test(...);
此操作需要权限。
create table 表名(..);
不加Schema默认创建到当前用户下

3.命名规则
1)必须以字母开头
2)长度必须在1-30个字符之间
3)必须以字母、数字、下划线、$、#组成
4)表名不可重复
5)不能使用oracle中的保留字

4.oracle中的数据类型
1)字符串类型
varchar 可变长字符串
任何一个数据库中都可以使用的可变长字符串
varchar2 可变长字符串
是oracle特有的可变长字符串
比较节省内存
检索效率较低
适用于字段值长度不定或差距较大的字段
比如:备注
char(长度) 不可变长字符串
浪费内存
检索效率很高
适用于长度固定的字段 例如:电话 身份证号
cell_phone char(11)
clob 大数据字符串 2GB

在不同的字段类型存储'Hello'字符串,
所占用内存空间如下:
varchar2(10) 占用5个内存
char(10) 占用10个内存

2)数值类型
number 定义一个整数类型字段
number(p,s) 定义一个小数字段
p:总长度 s:小数点后的位数
整数位数 = p - s
number(p) 定义一个定长的整数类型
例如:number(10)最大可存储的数字为9999999999。

有一个字段要求整数部分9位,小数部分3位,
A. number(9,3)
b. number(12,3)
c. number(6,3)
3)日期类型
date
4)二进制类型
blob
保存二进制数据。例如,向数据库中保存图片、音乐、视频等。

5.默认值
1)默认值的作用:
当某个字段配置了默认值之后,
如果插入数据时未向该字段插入数值,
则会自动取默认值作为该条数据的该字段值。

2)语法:
字段名 字段类型 default 默认值
例如有表和字段如下
s_student(id,name,age,dob);
声明age字段默认值为20?
age number default 20

给dob字段声明默认值为2000年1月1号?
dob date default '01-1月-00'
dob date default to_date('2000-01-01','YYYY-MM-DD')

6.列级约束
1)not null 非空约束
字段名 字段类型 not null
2)unique 唯一性约束
插入到该字段的值是表中该字段唯一的值。
字段名 字段类型 unique,
声明电话号码为唯一性约束
cell_phone char(11) unique,
3)primary key 主键约束 实体性完整性约束
表中某一条数据的唯一标识
特点:非空唯一
字段名 字段类型 primary key,
4)foreign key 外键约束 参照性完整性约束
字段名 字段类型 references 表名(主键字段名),
外键所依赖的字段必须是那张表的主键
5)check 选择性约束/检查性约束
字段名 字段类型 check( 判断条件 )
= > < >= <= between in
声明年龄字段必须小于100?
age number check( age between 0 and 100 )
声明性别字段必须在‘男’和‘女’之间选择?
gender char(10) check( gender in('男','女') )
判断条件中出现的字段必须是本字段

7.给列级约束起名字

如何查看表中添加了哪些列级约束?
当前用户下添加的所有的列级约束信息都会
存放到一张user_constraints表当中。

查询当前用户下有哪些列级约束?
select constraint_name
from user_constraints;

如果不给约束起名字的话,系统会默认给他起一个名字
SYS_Cn
n代表某个数字
自己给约束起名字会代替系统默认的约束名

查询某一张表的约束?
select constraint_name
from user_constraints
where table_name = 'TEST';//表名要大写

创建一张表:
create table test(
id number primary key,
name varchar2(10) not null,
phone char(11) unique);

给列级约束起名的语法:
在字段声明之后、约束类型声明之前
加上constraint 约束名;

例如:给主键字段加约束名
id number constraint 约束名 primary key,
约束名的规范(建议):
表名_字段名_约束类型的简写
主键:PK
外键:FK
非空:NN
选择性/检查性:CK
唯一性:UK unique

一个字段可以加多个列级约束
name varcar2(10) not null unique,

给s_stu表中的id添加主键约束并且给约束起名?
create table s_stu(
id number constraint s_stu_id_pk primary key,
.....
);
8.表级约束
列级约束和表级约束的关系:
列级约束中除了not null之外的约束都可以使用表级约束去实现。

除了列级约束可以定义的内容之外,表级约束还可定义:
联合主键
联合外键
联合唯一键

顾客表(顾客id,顾客姓名,顾客收货地址.....)
商品表(商品id,商品名,商品单价,商品描述.....)

桥表:
订单表(顾客id,商品id,商品数量)
1 1 10
1 5 20
2 3 10
1 1 20
create table s_shopcar(
cus_id number,
product_id number,
num number
);
表级约束:
constratin s_shopcar_cus_id_product_id_pk primary key(cus_id,product_id)

create table [schema.]table(
字段名 字段类型 [默认值] [列级约束],
字段名 字段类型 [默认值] [列级约束],
字段名 字段类型 [默认值] [列级约束],
....
[表级约束], [表级约束], [表级约束]
);
表级约束语法 constraint 约束名 约束类型(字段)

给id字段加上一个主键约束?
列级约束:
id number constraint test_id_pk primary key,
表级约束:
create table test(
id number,
name varchar2(10),
age number,
eid number //依赖于s_emp的id主键
constraint test_id_pk primary key(id),
constraint test_name_uk unique(name),
constraint test_eid_fk foreign key(emp_id) references 表名(主键)
);

删除表:
drop table 表名;

Oracle学习笔记<6>的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  3. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  4. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  10. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

随机推荐

  1. 使用定时器实现在console中打印内容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. elk相关启动脚本-shell编写

    elasticsearch-restart: #!/bin/bash PID=`ps -ef|grep elasticsearch|grep -vE 'grep|controller|elastics ...

  3. 解决java compiler level does not match the version of the installed java project facet问题

    在编写项目的时候是,后来有改java写法,将工程改成了jdk1.7,后来工程就有了一个红叉,但是代码,文件里没有任何问题,也可以运行,不知道是什么原因,后来在problems里才知道是:java co ...

  4. Vue列表渲染:一个取值范围的v-for

    v-for 也可以取整数.在这种情况下,它将重复多次模板. 例子 <div id="app"> <span v-for="n in 10"&g ...

  5. springBoot+mysql+mybatis demo [基本配置] [遇到的问题]

    springBoot+mysql+mybatis的基本配置: 多环境 application.properties spring.profiles.active=dev spring.applicat ...

  6. bzoj1190 [HNOI2007]梦幻岛宝珠 背包

    题目 https://lydsy.com/JudgeOnline/problem.php?id=1190 题解 好神仙的一道题啊. 既然 \(w_i = a_i\cdot 2^{b_i}\),那么不妨 ...

  7. bzoj5049 [Lydsy1709月赛]导航系统 双向bfs

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5049 题解 题面里面满眼的随机.既然数据完全随机,那就是在锻炼选手的乱搞能力啊. 根据一个常用 ...

  8. 算法 识别有效ip地址和掩码并做统计

    题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...

  9. Docker安装RMQ

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11752934.html 进入rabbitmq的docker hub镜像仓库地址:https://hub ...

  10. JavaScript-黑科技

    单行写一个评级 var rate = 3; "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate); 随机字符串 Math.random().toStrin ...