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 ...
随机推荐
- day50 初识JavaScript
一.背景介绍 (一)web开发的三种样式: 结构:HTML:从语义的角度,描述页面结构 样式:CSS:从审美的角度,描述样式(美化页面) 行为(动态)JavaScript:从交互的角度,描述行为(用于 ...
- Nginx 教程 (1):基本概念
简介 嗨!分享就是关心!所以,我们愿意再跟你分享一点点知识.我们准备了这个划分为三节的<Nginx教程>.如果你对 Nginx 已经有所了解,或者你希望了解更多,这个教程将会对你非常有 ...
- 一些常见的js校验
今天有时间来总结一下那些常用的js校验: vernull = function(value){//非空校验 if(value.trim(value).length == 0){ return fals ...
- idea 创建 SSM + maven Java Web 项目流程
idea 创建 SSM + maven Java Web 项目流程 一.idea 中选择File,New Project 新建项目 二.选择Maven,勾选上面的Create from archety ...
- JavaScript 中JSON
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.X ...
- 2019CCPC网络预选赛 1003 K-th occurrence 后缀自动机 + 二分 + 主席树
题意:给你一个长度为n的字符串,有m次询问,每次询问l到r的子串在原串中第k次出现的位置,如果没有输出-1.n, m均为1e5级别. 思路:后悔没学后缀数组QAQ,其实只要学过后缀数组这个题还是比较好 ...
- windows linux子系统(Windows Subsystem for Linux)的存放目录
win10子系统把windows的底层接口做了个转换到Linux从而能运行linux,但是他在安装的时候并没有提供安装位置的选项.(还有hyper v) 现在,所有从商店安装的发行版都存在于以下目录中 ...
- Flutter-icon
常用屬性 Icon( Icons.access_alarm,//设置使用哪种图标 size: 300,//设置图标大小 color: Colors.yellow,//设置图标颜色 textDirect ...
- bzoj4145 [AMPPZ2014]The Prices 状压 DP
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4145 题解 好像这道题有不少方法呢. ...谁叫这道题有点简单,所以方法多呗. 我的方法: 求 ...
- MySQL使用版本号实现乐观锁
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11608581.html 乐观锁适用于读多写少的应用场景 乐观锁Version图示 Project D ...