数据库视图

数据库中的视图

删除回忆录丶 提交于 2019-12-01 06:14:31
视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。 SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1、创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS SELET nid, name FROM A WHERE nid > 4 View Code 2、删除视图 --格式:DROP VIEW 视图名称 DROP VIEW v1 View Code 3、修改视图 -- 格式:ALTER VIEW 视图名称 AS SQL语句 ALTER VIEW v1 AS SELET A.nid, B. NAME FROM A LEFT JOIN B ON A.id = B.nid LEFT JOIN C ON A.id = C.nid WHERE A.id > 2 AND C.nid < 5 View Code 4、使用视图 使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建、更新和删除操作,仅能做查询用。 select * from v1 View Code

06-Django视图

喜欢而已 提交于 2019-12-01 06:11:40
什么是视图?   视图就是应用中views.py文件中的函数,视图函数的第一个参数必须是request(HttpRequest)对象。返回的时候必须返回一个HttpResponse对象或子对象(包含HttpResponse)作为响应。子对象(render,redirect)。返回子对象预先接收HttpRequest,进行逻辑处理,返回web响应HttpResponse给请求者。(响应内容HTML内容,404错误,重定向,json数据) 使用视图时的两个步骤:     1、配置URLconf即配置路由     2、在应用中的views.py中定义视图 项目准备:   创建项目-----创建应用------安装应用(设置里面的INSTALL__APPS)-----配置模板路径-----本地化(语言,时区)------mysql数据库(配置导入包,替换项目自带的数据库)------URLconfig------视图   mysql数据库使用之前的bookdb: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'bookdb', # 数据库名称 'HOST': 'localhost', # 数据库主机(建议使用主机真实IP) 'PORT': '3306', # 数据库端口

MySQL 视图、事务

百般思念 提交于 2019-12-01 05:40:52
一、 视图:   视图(view)是保存了查询语句的一种数据库对象,其数据来源是查询语句对应的数据表,他的结果与数据表查询的结果一样也是一张虚拟的数据表   1、 为什么需要视图:     1) 不同的用户关心的数据可能是不相同的,每个用户可以将关心的数据的查询语句定义为视图,方便以后使用     2) 针对一些不能被所有用户访问的数据可以通过创建视图只公开不需要保密的数据,提高数据的安全性     3) 针对复杂的查询,可以将它保存为视图,以后可以简化查询的操作   2、 视图的创建:     语法:     CREATE VIEW<视图名称>AS<查询语句>     举例:     CREATE VIEW vw_score AS SELECT id 编号,student_no 学生编号,subject_id 课程编号,exam_date 考试日期 FROM tb_score;   3、 视图的使用:查询视图与查询数据表的操作完全相同SELECT * FROM vw_score WHERE 课程编号=2; -- 课程编号为2的成绩 二、 事务:   1、 什么是事务?     当在执行一些重要的增删改时,往往需要将他们当作一个整体来看待,要么全部执行,要么全部不执行,当所有操作都正常结束后可以通过commit语句提交,当其中的全部或部分操作失败后,可以通过rollback语句回滚

Django事务、锁和中间件

南楼画角 提交于 2019-12-01 04:59:55
一、事务和锁 锁 mysql: select * from book where id=1 for update;数据库中行级锁的用法 begin; start transaction; select * from t1 where id=1 for update; commit rollback; django orm models.Book.objects.select_for_update().filter(id=1) 事务 Django是做事务处理 django1.8版本之前是有很多种添加事务的方式的,中间件的形式(全局的)、函数装饰器的形式,上下文管理器的形式等,但是很多方法都在1.8版之后给更新了,下面我们只说最新的: 1 全局开启   在Web应用中,常用的事务处理方式是将每个请求都包裹在一个事务中。这个功能使用起来非常简单,你只需要将它的配置项ATOMIC_REQUESTS设置为True。   它是这样工作的:当有请求过来时,Django会在调用视图方法前开启一个事务。如果请求被正确处理并正确返回了结果,Django就会提交该事务。否则,Django会回滚该事务。 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mxshop', 'HOST': '127.0.0.1'

Django之锁和事务,中间件

橙三吉。 提交于 2019-12-01 04:59:47
一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何开启事务,看下面的事务一节。 返回一个锁住行直到事务结束的查询集,如果数据库支持,它将生成一个 SELECT ... FOR UPDATE 语句。 举个例子: entries = Entry.objects.select_for_update().filter(author=request.user) #加互斥锁,由于mysql在查询时自动加的是共享锁,所以我们可以手动加上互斥锁。create、update、delete操作时,mysql自动加行级互斥锁 所有匹配的行将被锁定,直到事务结束。这意味着可以通过锁防止数据被其它事务修改。 一般情况下如果其他事务锁定了相关行,那么本查询将被阻塞,直到锁被释放。 如果这不想要使查询阻塞的话,使用select_for_update(nowait=True)。 如果其它事务持有冲突的锁,互斥锁, 那么查询将引发 DatabaseError 异常。你也可以使用select_for_update(skip_locked=True)忽略锁定的行。 nowait和  skip_locked是互斥的,同时设置会导致ValueError。 目前,postgresql

MySQL手册

☆樱花仙子☆ 提交于 2019-12-01 04:56:52
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables – 修改root密码 密码加密函数password() update mysql.user set password=password(‘root’); SHOW PROCESSLIST – 显示哪些线程正在运行 SHOW VARIABLES – /* 数据库操作 */ ------------------ – 查看当前数据库 select database(); – 显示当前时间、用户名、数据库版本 select now(), user(), version(); – 创建库 create database[ if not exists] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name – 查看已有库 show databases[ like ‘pattern’] – 查看当前库信息 show create database 数据库名 – 修改库的选项信息 alter database 库名 选项信息 – 删除库 drop database[ if

Django基础九之中间件

与世无争的帅哥 提交于 2019-12-01 04:49:28
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏      我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后添加的视图函数可能也需要加上装饰器,这样是不是稍微有点繁琐。   学完今天的内容之后呢,我们就可以用更适宜的方式来实现类似给所有请求都做相同操作的功能了    二 中间件介绍      中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。   Django的中间件的定义: Middleware is a framework of hooks into Django’s request/response processing. <br>It’s a light, low-level “plugin” system for globally altering Django’s input or output.   如果你想修改请求,例如被传送到view中的 HttpRequest 对象。

《深入浅出mysql》学习笔记

房东的猫 提交于 2019-12-01 04:38:03
一:sql分类及语法 1.sql分类: (1)DDL:数据库定义语言,用于定义表,列,索引等数据库对象. create,drop,alter等 (2)DML:数据库操纵语言,增删改查数据库的记录insert,delete,update,select等 (3)DCL:数据库控制语言,定义了数据库的表,字段,用户的访问权限和安全级别 grant,revoke等 2.DDL语句 (1)创建数据库:create database test1; (2)删除数据库:drop database test1; (3)创建表:create table user(name varchar(10),age int(2)); (4)删除表:drop table user; (5)修改表: alter table user modify name varchar ( 20 ); alter table user add column sex varchar ( 10 ); alter table user drop column age; Alter table user change age age1 int ( 4 ); Alter table user rename user1; 3.DML语句 (1)插入记录insert into user(name,age)values(‘zhangsan’,18

带你认识MySQL sys schema

蹲街弑〆低调 提交于 2019-12-01 04:27:26
前言: MySQL 5.7中引入了一个新的sys schema,sys是一个MySQL自带的系统库,在安装MySQL 5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库。 sys库里面的表、视图、函数、存储过程可以使我们更方便、快捷的了解到MySQL的一些信息,比如哪些语句使用了临时表、哪个SQL没有使用索引、哪个schema中有冗余索引、查找使用全表扫描的SQL、查找用户占用的IO等,sys库里这些视图中的数据,大多是从performance_schema里面获得的。目标是把performance_schema的复杂度降低,让我们更快的了解DB的运行情况。 1.sys库总览 本篇文章是基于MySQL 5.7.23版本实验的。打开sys库(希望你跟着我一起做哦),我们会发现sys schema里包含1个表,100个视图,存储过程及函数共48个,如下图所示: 其实我们经常用到的是sys schema下的视图,下面将主要介绍各个视图的作用,我们发现sys schema里的视图主要分为两类,一类是正常以字母开头的,共52个,一类是以 x$ 开头的,共48个。字母开头的视图显示的是格式化数据,更易读,而 x$ 开头的视图适合工具采集数据,显示的是原始未处理过的数据。 下面我们将按类别来分析以字母开头的52个视图: host_summary :这个是服务器层面的,以IP分组

数据库--面试题目

陌路散爱 提交于 2019-12-01 01:46:05
什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)。 存储过程的优点: 能够将代码封装起来 保存在数据库之中 让编程语言进行调用 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率 存储过程的缺点: 每个数据库的存储过程语法几乎都不一样,十分难以维护(不通用) 业务逻辑放在数据库上,难以迭代 ------------------------------------------------------------------------------------------------------------------------------------------------------- 三个范式是什么 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。 第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式