Oracle学习笔记<6>
建表
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>的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记——点滴汇总
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- oracle学习笔记(一)用户管理
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- oracle学习笔记1(环境搭建)
学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...
随机推荐
- JavaScript中函数带与不带括号的区别
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- easyui datagrid数据网格
EasyUI是一组基于jQuery的UI插件集合,它的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.它的许多控件让我们不必写很复杂的javascript,从而极大地提高了开发效率. ...
- 快速的统计千万级别uv
菜菜,咱们网站现在有多少PV和UV了? Y总,咱们没有统计pv和uv的系统,预估大约有一千万uv吧 写一个统计uv和pv的系统吧 网上有现成的,直接接入一个不行吗? 别人的不太放心,毕竟自己写的,自己 ...
- shell本地变量和环境变量的对比
- 金蝶KIS客户端修改IP连接服务器的方法
问题现象:服务器IP变更后,金蝶KIS客户端打开时提示多个错误,并会自动关闭,无法联网登录 1. 到下面位置修改注册表 Windows Registry Editor Version 5.00 [HK ...
- python正则表达式 re (二)sub
背景: re.sub是re模块重要的组成部分,并且功能也非常强大,主要功能实现正则的替换. re.sub定义: sub(pattern, repl, string, count=0, flags=0) ...
- Sass函数:数字函数-ceil()函数
ceil() 函数将一个数转换成最接近于自己的整数,会将一个大于自身的任何小数转换成大于本身 1 的整数.也就是只做入,不做舍的计算: >> ceil(2.0) 2 >> ce ...
- ltp-ddt lmbench
ltp-ddt lmbench args='' # getopt fails, set help optionif [ $? -ne 0 ] ; then H="help&qu ...
- 消费者与生产者---LinkedList方式模拟
采用LinkedList数据结构方式来模拟消费者与生产者模型,小Demo import java.util.LinkedList; public class MyQueue { private fin ...
- BZOJ3926 诸神眷顾的幻想乡
传送门 树上SAM! 显然如果树上一条一条字符串放的话那么是n^2的w 但是 题目的性质非常吼啊! 20个叶子节点 我们就可以 把所有叶子结点拎出来当根 全部扔到一个SAM里 就吼啦 最后的答案是 ...