在运行时指定变量

目的:用户和代码进行交互
定义:运行时变量可以让我们和sql语句之间有个交互,允许我们执行sql语句时动态传递参数。
语法:
取值 &varName
运行时变量可以出现在任何位置
定义变量
define[def] varName =value;
查看定义的变量:
sql>define[def] [varname]
取消定义的变量:
sql> undefined/undef varName;
例如:
1.define name = zhangSan;//定义一个变量名字为name,值为张三
运行select时候,如果语句中遇到&name会自动替换为zhangSan;
2.def/define: 查看当前环境中定义的所有变量
3.def/define name : 查看变量name的值
例如:
select &colName1,&colName2 from &tbName where &colName=&colValue;

select id ,last_name from s_emp where dept_id = &id;

在这里插入图片描述
在这里插入图片描述命令 sql> set verify off 交互关闭 //默认都是打开的
单引号转义使用单引号 ‘’‘smith’’’ ==“smith”

5.使用accept 用来定义带数据类型 和提示符的变量语法:
语法:accept varName [datatype prompt XXX]
accept varName :
定义一个变量名字为varName,当按下回车时需要用户输入值。
accept varName dataType:
代表定义一个带数据类型的变量:
例如:accept varName number:代表定义一个变量为varNum,类型为Number,当输入类型不是数字类型是报错,提示继续输入。
prompt:当输入变量时,给用户的提示信息。
accept myNum number prompt 区域id:
定义一个number myNum number prompt 区域id:
定义一个Number类型的变量myNum,当按下回车时提示区域id:
如果希望插入的值是隐藏的,可以在写上HIDE:
accept num number prompt 密码: HIDE
例: accept name char prompt ‘请输入一个用户名’
在这里插入图片描述
sql>accept id number prompt ‘请输入id的值:’
6.取消变量的定义
undefined varName;
7.向脚本文件传递参数
在文件中参数使用&n(n代表数字)来表示取几个参数值,然后再调用文件执行的时候使用
@file val…(多个参数值使用空格分开。)
select &1,&2 from &3 where &4 =&5;
例:
select &col1,&col2 from &table_name where id=&val;

在这里插入图片描述
数据库设计的结果是:
将模型转换成一个可操作的软件
实体-关系图
entry-relationship Diagram
E-R图,提供了表示实体类型,属性和关系的方法,用来描述显示世界的概念模型。
构成E-R图的基本要素是实体,属性和关系
数据建模和数据库设计
1.分析数据内容
2.设计
3.建立模型-物理模型
4.建表
5.产品

数据模型:
Model of system in client’s mind
entity model of client‘s model
table model of entity model
server – tables on disk
1.实体 事务(类似于java的类(域对象)),实体由实体名和实体属性来表示。
2.属性 实体所具有的某一特性,一个实体可以有若干个属性。
3.关系 实体彼此之间相互连接的方式称为关系。
一般可分为以下3种类型:
1,一对一关系(1:1)
这种关系比较少见
维护关系:随意选择一方构建外键
例如: wife and husband
w1 h1
wife husband
id name h id id name
2,多对一 关系维护在多的一方
关系:乘客和飞机
3,多对多 使用桥表
例如:员工和技能

数据库设计:
        数据建模完成之后,可以把E-R图转换成数据中的表
                 1.实体的名字转换为表的名字
                 2.实体的属性转换为表中的列
                 3.具有唯一特点的属性设置为表中的主键
                 4.根据实体之间的关系设置为表中某列为外键列(主外键关联)
       设计关系数据库时,遵从不同的规范要求,才能设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系数据库有六种范式:
第一范式(1NF):
第二范式(2NF):
第三范式(3NF):
巴斯-科德范式(BCNF)
第四范式(4NF):
第五范式(5NF,又称完美范式):

注:满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二方式(2NF),其余范式一次类推。一般说来,数据库只需要满足第三方式(3NF)就行了。

第一范式:
一个表中,每个列里面的值是不能再分割的。
例如:我们设计的表中有一个列是:爱好
这个列的值可能是这样的:足球篮球乒乓球
所以这种设计是不满足第一范式
第二范式:
第二范式是在满足第一范式的基础上
表中的非主键列都是必须依赖于主键列
例如:
订单表: 订单编号 是主键
订单编号 订单名称 订单日期
订单中产品的生产地
第三范式
第三范式是在满足第二范式的基础上
表中的非主键列都必须直接依赖主键列,而不能间接的依赖。
(不能产生依赖传递)
列如:
订单表: 订单编号 是主键
订单编号 订单名称 顾客编号 顾客姓名

 顾客编号依赖于订单编号,顾客姓名依赖于顾客编号,从而顾客姓名,从而顾客姓名间接依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的。
 BCNF模式:
 1.所有的非主属性对每一个码都是完全函数依赖
 2 .所有的主属性对每一个不包含它的码也是完全依赖。
 3.没有任何属性完全依赖于非码的任何一个属性。

主键和外键
主键:
1.能做主键的列必要满足非空唯一的特点
2.只要满足非空唯一的列都可以做主键
3.可以让表中一个有意义的列做主键,比如说学号,它即表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件。
4.可以表级约束,可以列级
5.自动创建唯一值索引。
外键:
1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张的主键的值(5.有唯一约束的列就可以,不一定非要引用主键列)
2.另外一张表的主键列中出现过的值都可以在外键列中使用。
3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键。
4.如果把B表中的联合主键的值引用到A表中做外键,因为是两个列在B表中做联合主键,那么A表引用过来的时候要把两个列的值都引过来,那么他们在A表中就会作为一个联合外键出现。
完整性约束:
1,实体完整性:主键非空且唯一,如果主键是有多个属性组成的,那么所有的主属性不能为空。
2,引用(参照)完整性:外键列的值必须是引用的另外一张表的的列的值,或者为null值
3,列级完整性(域):列的值必须满足数据类型要求。
4,用户自定义:针对于某一具体应用所涉及的数据必须满足的语义要求
建表:
1.映射实体 -----表
2.映射属性-----列
3.添加约束
4.描述关系信息(外键)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值