求百合(GL)小说黑百合38分百度云资源源

什么是数据库里的虚拟表
什么是数据库里的虚拟表
10-01-14 &匿名提问
虚拟表啊,就是视图啊
请登录后再发表评论!在Django的视图中使用数据库查询的方法
投稿:goldensun
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了在Django的视图中使用数据库查询的方法,是Python的Django框架使用的基础操作,需要的朋友可以参考下
在视图中也有笨方法可以从数据库中获取数据。 很简单: 用现有的任何 Python 类库执行一条 SQL 查询并对结果进行一些处理。
在本例的视图中,我们使用了 MySQLdb 类库(可以从 /r/python-mysql/ 获得)来连接 MySQL 数据库,取回一些记录,将它们提供给模板以显示一个网页:
from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
这个方法可用,但很快一些问题将出现在你面前:
&&& 我们将数据库连接参数硬行编码于代码之中。 理想情况下,这些参数应当保存在 Django 配置中。
&&& 我们不得不重复同样的代码: 创建数据库连接、创建数据库游标、执行某个语句、然后关闭数据库。 理想情况下,我们所需要应该只是指定所需的结果。
&&& 它把我们栓死在 MySQL 之上。 如果过段时间,我们要从 MySQL 换到 PostgreSQL,就不得不使用不同的数据库适配器(例如 psycopg 而不是 MySQLdb ),改变连接参数,根据 SQL 语句的类型可能还要修改SQL 。 理想情况下,应对所使用的数据库服务器进行抽象,这样一来只在一处修改即可变换数据库服务器。 (如果你正在建立一个开源的Django应用程序来尽可能让更多人使用的话,这个特性是非常适当的。)
正如你所期待的,Django数据库层正是致力于解决这些问题。 以下提前揭示了如何使用 Django 数据库 API 重写之前那个视图。
from django.shortcuts import render_to_response
from mysite.books.models import Book
def book_list(request):
books = Book.objects.order_by('name')
return render_to_response('book_list.html', {'books': books})
我们将在本章稍后的地方解释这段代码。 目前而言,仅需对它有个大致的认识。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
下列关于视图和查询的叙述中,错误的是________.A、可以把视图当作数据库的一个定制的虚拟表 B、视图被下列关于视图和查询的叙述中,错误的是________.A、可以把视图当作数据库的一个定制的虚拟表B、视图被分为本地视图和远程视图两大类C、可以把查询的结果保存到一个新的数据表中D、对查询结果和视图数据的修改都会影响数据源
扫二维码下载作业帮
1.75亿学生的选择
答案是D、对查询结果和视图数据的修改都会影响数据源因为查询是不能修改数据的.
为您推荐:
其他类似问题
扫描下载二维码> 问题详情
关于视图的说法中,下列正确的是()。A.视图是一个虚拟的表B.视图是一个不依赖数据库的表C.视图是一
悬赏:0&答案豆
提问人:匿名网友
发布时间:
关于视图的说法中,下列正确的是()。A.视图是一个虚拟的表B.视图是一个不依赖数据库的表C.视图是一个真实的表D.视图是一个能修改的表请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1下列关于创建工具栏的说法中,正确的是(&&)。A.只能定制VFP系统工具栏,不能自定义工具栏B.不能定制VFP系统工具栏,但可以自定义工具栏C.既能定制VFP系统工具栏,也可自定义工具栏D.只能使用系统工具栏,不能创建自定义工具栏2关于数据库表和自由表,下列说法中,正确的是(&&)。A.数据库表和自由表均可设置字段,记录级规则B.数据库表可设置字段规则, 自由表可设置记录的规则C.数据库表可设置记录规则,自由表可设置字段的规则D.数据库表可设置字段、记录规则,而自由表不可设置3数据库系统的构成为:数据库、计算机硬件系统、用户和(&&)。A.操作系统B.文件系统C.数据集合D.数据库管理系统4同一个数据表全部备注字段的内容存储在(&&)。A.不同的备注文件B.同一个文本文件C.同一个备注文件D.同一个数据库文件
我有更好的答案
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
享三项特权
享三项特权
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
常用邮箱:
用于找回密码
确认密码:Oracle 数据库视图与基表的关系_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle 数据库视图与基表的关系
来源:Linux社区&
作者:贺子_DBA时代
一:首先解释什么是视图:视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。
二:视图的创建:&CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中: OR REPLACE:若所创建的试图已经存在,自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名; subquery:一条完整的SELECT语句,可以在该语句中定义别名 可以挑选某个表中你需要的属性; WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY : 该视图上不能进行任何DML操作。& 三:视图的修改:直接利用前边创建时的or replaece& 重建即可。
四:视图上的DML 操作:
1,一般简单视图,也就是基表只有一个的视图,是可以通过修改视图来修改基表的, Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_ 如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报&ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句&的异常。 2.针对复杂视图,也就是基表有多个表,通过内连接查询建立的视图,只能通过视图来修改key_preserved表, 什么是Key-Preserved Table呢.Oracle给出的定义是:A table is key preserved if every key of& the table can also be a key of the result of the join.It is not necessary that the key or keys of a table be selected for it to be key preserved.&It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join.
如果某一个表的主键可以作为这个join结果(view通常是几个表的join结果)的主键,那么这个表就是key preserved table.
这个表的主键并非一定要出现在select出来的结果集中(select list里面),但是如果其出现在结果集中,那么它必须可以满足作为这个结果集的主键的要求. &通过下面的例子来解释:
create view liuwenhe as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.empno in (10,30) and e.deptno = d.deptno;&
emp表的主键是empno,dept表的主键是deptno, 可以看出来emp表的主键empno的值是唯一的,并且非空,所以是可以做查询结果集的主键的,但是结果集的dempno的值就不一定唯一了。所以这个视图的key_preserved表是emp, 五;视图的作用:减少复杂性和增强安全性。
1.视图可以隐藏你的查询的复杂性,例如:
SELECT d.dname,count(*) as NUM_EMPS&FROM emp e, dept d&WHERE e.deptno=d.deptno&GROUP BY
不需要输入如此复杂的查询(按照今天的标准来说,那其实并不算是复杂),我可以查询如下的一个视图:
SELECT dname,num_emps FROM my_& & & (前提是你创建了基于上面查询的视图)
你也能够将好多相当复杂的查询存储为一个视图,这样就会将查询大大的简化。通过这种方式,视图就是一种宏,它可以在幕后做许多事情,并使得这个过程让终端用户或者应用程序看起来非常简单。 2,视图也可以用于加强安全性。让我们假设一下,我只想要用户BOB看到EMP表中的ENAME 和DEPNO两个列。我可以使用如下所示: GRANT select ON emp TO
但是上面的命令会使BOB看到表的全部内容。我可以写下如下的一个视图,使BOB只看到自己能够看到的列:
CREATE VIEW bob_emp AS SELECT ename,deptno FROM GRANT select ON bob_emp TO
通过这两条命令,BOBO只能在视图中看到这个表中的两个列。
让我们更进一步的讨论一下安全性的概念。假设我们想要使得每个人都可以查询EMP表,但是只是他们自己的记录。我可以写出如下的视图:
CREATE VIEW my_emp AS SELECT * FROM emp WHERE ename=USER; GRANT select ON my_emp TO
当一个用户查询MY_EMP表示,上述视图只会返回那些ENAME列值为他们自己的用户名
3.Oracle视图非常强大的功能之一在于其可以创 建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成 视图里的该字段名称,那么视图马上就可以成为合法的。
更多Oracle相关信息见 专题页面
本文永久更新链接地址:
相关资讯 & & &
& (08/30/:48)
& (05/06/:42)
& (05/16/:43)
& (07/20/:35)
& (05/21/:51)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 黑百合38分百度云资源 的文章

 

随机推荐