- 博客(50)
- 收藏
- 关注
原创 视图的使用
这时就可以为这一模块创建一个视图,开发人员只能看到和操作通过这一视图所看到的数据,虽然这些数据是来自不同的表,但对于开发人员来说这些数据就好像来自一个表一样。当模块的功能变化需要不同的数据时,需要改变的只是相应的视图而不需要改变真正的表。研究表明:虽然随着用户的需求的变化,模块的变化几乎是不可避免的,但是信息系统中的数据却几乎是不变的(数据的排列可能会变化)。因为接下去的工作已经很轻松了,只要将这个图中的实体转换成关系数据库的表,将实体与实体之间的关系转换成关系数据库的约束即可。可以限制数据库的访问。
2023-04-12 11:31:42
704
原创 索引与约束的使用
约束是加在表上的,因为只有表中存有数据。例13-10的结果表明:在组合索引EMPCON JOB SAL IDX 中最左边的索引关键字(列)JOB的COLUMN POSITION 的值为1,而组合索引 EMPCON JOB_SAL_IDX中左边第二位的索引关键字(列)SAL的COLUMN_POSITION的值为2。由于图书目录是按一定的顺序排放的,会很快地找到所需要的书的记录,在该记录中标有此书存放的准确位子,这时您就可直奔存书的地方了。与一般的索引不同的是,基于函数的索引中的索引关键字是表达式而不是列。
2023-04-09 17:27:42
1323
原创 数据的维护
当有人对数据库中的数据进行任何写操作(即DML操作)时,Oracle 数据库系统首先将原始的数据复制到回滚段中,之后才做相应的操作,在事务处理结束之前其他的用户可以读这些数据,但读的是回滚段上的数据。Oracle 数据库系统的这一设计确实大大地提高了大型的商业数据库的效率,但这一设计也会产生数据的不一致,因为在同一时刻,同一个数据可能会有两个不同的值。注意:|在使用UPDATE 语句来修改表中的记录时,如果WHERE子句中的条件写错了,就会造成该修改的记录没改而不该修改的记录都改了。
2023-04-08 16:14:20
569
原创 替代变量的使用
为了以后的演示方便,您可以先将例11-7的SQL语句存入一个叫JOB的脚本文件,如例11-8。由于我们已经使用例11-19的SQL语句将替代变量v.job赋为CLERK,所以Oracle 系统已经记住了这次的输入值并不再提示输入而是直接把CLERK作为变量v_job的值来使用。用这样的方法开发的软件用户是很难满意的。当运行例11-2的SQL语句时,Oracle系统会给出:"输入v_salary的值:"的提示,此时可以输入任何您感兴趣的工资值,如1600,按回车键之后,您就会得到所需要的结果。
2023-04-07 16:09:12
549
原创 使用python模块
我们需要从模块中指定所有内容直接使用时,可以写成【from xx模块 import *】的形式,*代表“模块中所有的变量、函数、类”,我们再运行一个小案例。现在我们要做的是把这段代码拆分成两个模块,把封装好的变量、函数、类,放到test.py文件中,把执行相关的语句放到main.py文件中。比如import a,b,c可以同时导入“a.py,b.py,c.py”三个文件。里想提醒大家的是,比较小的模块(比如random模块)可以通过这样的方式自学,大型模块的学习就比较困难(除非你有充足的专业背景知识)。
2023-04-07 10:53:57
420
原创 创建表的语句和例子
假设您的公司在其他国家或城市有许多个分公司,这些分公司的一些分析员要使用统计软件对 emp 表中的一些列进行大规模的统计分析,这些分析可能需要反复查询 emp 表,假设 emp 表存有一百多万行数据,如果这些分析员都访问总公司的 Oracle 服务器上的表emp的话,网络的流量可能会非常大,这样对网络压力和对总公司的Oracle服务器的压力都会很大,系统的整体效率会大幅度下降。所谓的数据库设计就是表的设计。LONG数据类型的列最多可以存储2G的数据,而LOB数据类型的列最多可以存储4G的数据。
2023-04-06 14:23:18
3380
原创 文件的读写
它是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,而当字符在ASCII码的范围时,就用一个字节表示,所以UTF-8还可以兼容ASCII编码。把最后一个比特位也编进来吧。16进制是用0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f来表示。此外,用decode()解码的时候则要注意,UTF-8编码的字节就一定要用UTF-8的规则解码,其他编码同理,否则就会出现乱码或者报错的情况,现在请你将下列字节解码成UTF-8的形式,打印出来。
2023-04-06 10:15:09
89
原创 数据字典和数据字典视图
考虑到系统效率,Oracle服务器以最简捷(最快)的方式来操作数据字典的基表,所以,数据字典的基表中所存的数据就像天书一样,几乎是没什么人能看得懂。它们包括了用户名、用户的权限、对象名、约束和审计等方面的信息。如果您刚被某公司聘为Oracle数据库管理员,想知道您所管理的Oracle数据库的名字和创建日期等信息,可使用数据字典vSdatabase来得到有关的信息。ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息再加。USER_*:有关用户所拥有的对象的信息,即用户自己创建的对象的信息。
2023-04-05 19:57:18
593
原创 控制SQL*PLUS的环境和数据字典简介
可以使用例9-17 的SQL*PLUS命令把标题LOC设置为Location,之后再重新输入与例9-16完全相同的查询语句,如例9-18。可以使用如例9-15的SQL*PLUS命令来把该列的宽度设置为9个字符,之后再重新输入与例9-12完全相同的查询语句,如例9-16。如果已经记不清它们的格式了,可以使用例9-21和例9-22的SQL*PLUS命令来得到所需的信息。从例9-25 显示的结果很难看出工资(SAL)的单位到底是什么,可以先使用例9-26 的SQL*PLUS命令来格式化SAL列。
2023-04-05 19:49:00
326
原创 子询查操作
因此写查询语句的人一定要保证子查询中的WHERE子句的条件成立并返回惟一的值。在例8-5中的子查询中一定不能含有GROUP BY子句,因为该子句将使子查询返回多值如果在子查询中加入了GROUP BY子句,Oracie会返回错误信息,如例8-6的查询语句。例8-3中括号内的查询叫子查询(Subquery)或内查询(Inner query),括号外的查询叫主查询(Main query)或外查询(Outer query)。例8-3的查询语句包含了一个子查询,它与例8-2显示的结果完全相同。
2023-03-29 11:37:05
140
原创 python类与对象
【类】是【对象】的模板。注意,以上说的【对象】,都是指【实例对象】。我们可以以【类】为模板,多次复制,生成多个【实例对象】。什么叫实例对象呢?大家可以想象一下,【类】就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费、购买、使用,真正融入我们生活的东西。这些产品,在Python中就叫【实例对象】。往深了说,Python中,万事万物都可以是对象,【类】这种模板层级的本身也是【对象】,但并不是【实例对象】。从模具变成产品,也就是从【类】变成【实例对象】的过程,就叫做【实例化】。c
2023-03-29 10:21:13
103
原创 多表连接使用
尽管例7-11的查询结果与例7-7自连接(Selfjoin)的查询结果完全一样,但这样做需要多创建一个表manager,而表 manager 的内容全部来自表 emp。实际上例7-25相当于例7-26的查询语句。例7-22的查询语句是用SQL:1999语法的一个多表连接,它所显示的结果与例7-12 的相等连接的结果完全相同。显然,例7-23显示的结果与例7-22的完全一样,查询语句中只要把例7-22的关键字WHERE换成了AND就行了。例7-20所显示的结果与例7-1的相等连接的结果完全相同。
2023-03-28 19:33:03
416
原创 表规范化过程
这样就把最初的一个表分拆成了图7-7、图7-8、图7-9的3个表。仔细分析图7-3所示的Order表您就会发现,我们只要知道了某一商品的商品号就能知道该商品的全部信息,即商品其他部分的信息只依赖于商品号。消除重复组(Repeating Groups)和部分依赖的表为第二范式(2NF)的表,因此图7-5 (Order)所示的表已经是第二范式(2NF)的表了。因此产生的数据的冗余已经大大地减少。如果一个表是第一范式(1NF)的表,并且它的主键由一列(单一属性)组成,那么该表自动地成为第二范式(2NF)的表。
2023-03-28 15:15:27
292
原创 两种编程思维
如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。它们两者最大的区别,一个是它的调用格式:类.函数名()比函数名()多了一个【类.】,但更重要的是,“类”中的函数可以利用“类”中的变量(也就是类方法可以调用类属性)类A()是一个空类(里面的pass语句代表“什么都不做”),利用类A.变量1,我们在外部给类A()添加了一个类属性变量1,然后使用print语句把类属性打印了出来。有两种途径来增加或修改类属性。
2023-03-28 14:11:57
268
原创 函数的基本知识
像常见的type()函数、数据类型转换函数,还有我们之前学过的bool()都是这样,会返回一个值。第1行:def的意思是定义(define),greet是【函数名】(自己取的),再搭配一个括号和冒号,括号里面的name是参数(参数名也是自己取)。这里的'话梅花生'和'牛肉拉面'是对应参数appetizer和course的位置顺序传递的,所以被叫作【位置参数】 ,这也是最常见的参数类型。元组的写法是把数据放在小括号()中,它的用法和列表用法类似,主要区别在于列表中的元素可以随时修改,但元组中的元素不可更改。
2023-03-26 10:45:14
161
原创 综合数据和分组函数
从例6-7的显示结果可以看出,查询的结果是按GROUPBY子句中列的由小到大的顺序排列(升序排序),这也是使用GROUP BY子句时Oracle默认的排序方式。可以使用例6-9的查询语句来得到按职位(job)分类(job并没有包含在SELECT子句中)的每类员工的平均工资,并且显示的结果是按职位(job)由小到大的顺序排列的(升序)。可以使用例6-8的查询语句来得到按职位(job)分类的每类员工的平均工资,并且显示的结果是按平均工资(average salary)由大到小的顺序排列(降序)。
2023-03-25 11:12:38
272
原创 NULL 值的处理、逻辑操作和函数嵌套
(1)算术运算符→(2)连接运算符→(3)比较(关系)运算符→(4)IS NULL,IS NOT NULL,LIKE,NOT LIKE,IN,NOT IN 运算符→(5)BETWEEN,NOT BETWEEN 运算符→(6)NOT逻辑运算符→(7)AND逻辑运算符→(8)OR逻辑运算符。按照运算符的优先级,Oracle 首先执行由黑体部分组成的条件,即找出所有的文员(CLERK)和推销员(SALESMAN),接下来找出工资在1300元或以上的员工;它的值是没有定义的、未知的、不确定的。
2023-03-21 10:55:04
443
原创 RR 日期格式的算法和实例
(2)如果当前年份的最后两位数(即不包括世纪)为0~49,并且指定的年份的最后两位数为50~99,则返回的日期为上一世纪。(4)如果当前年份的最后两位数(即不包括世纪)为50~99,并且指定的年份的最后两位数也为50~99,则返回的日期在本世纪。(3)如果当前年份的最后两位数(即不包括世纪)为50~99,并且指定的年份的最后两位数为0~49,则返回的日期为下一世纪。(1)如果当前年份的最后两位数(即不包括世纪)为0~49,并且指定的年份的最后两位数也为0~49,则返回的日期在本世纪。
2023-03-20 09:59:45
270
原创 不同数据类型之间的显式转换
为了能在一行中显示日期数据HIREDATE,可以使用例4-47的SQL*PLUS命令将HIREDATE的输出宽度加长为60个字符。之后,可以使用例4-48的查询语句以得到员工的名字(Name),工资(Salary)和雇用日期(HIREDATE)的信息。您还可以使用SP和TH,它们分别为数字的英文表示和数字的序数表示。其中例4-45中的'DD/MM/YY'为日期模式,它们必须用单引号括起来。该函数的这种格式把日期型数据转换成变长字符串,其中,fmt为日期模式。YYYY:完整的年份数字表示(如2001);
2023-03-16 09:58:01
135
原创 不同数据类型之间的隐含转换
数字型(NUMBER)的数据与日期型(DATE)的数据之间不能进行直接转换。在将字符类型的数据转换为日期型时,要保证字符型数据为有效的日期,否则转换不能成功。■ 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成数字型(NUMBER);■ 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成数字型(NUMBER);■ 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成日期型(DATE);■ 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成日期型(DATE)。
2023-03-14 11:04:22
242
原创 用数据做判断:布尔值
这个表的左侧一列,它们在Python中被判定为假,比如False、0、'' (空字符串)、[]、{}、none等等。计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”),没有灰色地带。dict = {'法国':'巴黎','日本':'东京','中国':'北京'}print('以下数据判断结果都是【假】:')print('长安'=='长安')print('以下是and运算')print('以下是or运算')print('熊猫')print('熊猫')
2023-03-10 11:56:18
179
原创 while循环
for循环和whlie循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。while a < 5: #设定一个放行条件:a要小于5,才能办事。 password = input('请尝试输入密码:')password = input('请尝试输入密码:')a = a + 1 # 满足条件时,就办事:将a+1。while循环:办事流程。
2023-03-10 11:13:17
88
原创 常用的数字型函数
因为300比400小,不够除,所以余数就为300。应该记住Oracle的这一规定。该函数将列名或表达式所表示的数值四舍五入到小数点后的n位。该函数将列名或表达式所表示的数值截取到小数点后的n位。该函数将m除以n并取余数。
2023-03-10 10:56:16
249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人