当前位置: 首页 > news >正文

下载爱南宁官方网站东莞百姓网免费发布信息网

下载爱南宁官方网站,东莞百姓网免费发布信息网,网站建设方案书模板 备案,淮安市建设局网站一、视图 视图是一个虚拟表#xff08;非真实存在#xff09;#xff0c;其本质是【根据SQL语句获取动态的数据集#xff0c;并为其命名】#xff0c;用户使用时只需使用【名称】即可获取结果集#xff0c;可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临…一、视图 视图是一个虚拟表非真实存在其本质是【根据SQL语句获取动态的数据集并为其命名】用户使用时只需使用【名称】即可获取结果集可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来用视图去实现这样以后再想操作该临时表的数据时就无需重写复杂的sql了直接去视图中查找即可但视图有明显地效率问题并且视图是存放在数据库中的如果我们程序中使用的sql过分依赖数据库中的视图即强耦合那就意味着扩展sql极为不便因此并不推荐使用   create view course2teacher as select * from course inner join teacher on course.teacher_id teacher.tid; # 只有表结构没有表数据因为它的数据是基于其他表的。不建议使用因为以后扩展sql语句的时候视图也需要跟着修改。# 修改视图 alter view teacher_view as select * from course where cid3;# 删除视图 drop view teacher_view-- 2.触发器 (一般不用这个在应用程序级别能做在应用程序级别能干的活还是去自己干好以后扩展方便)#准备表 CREATE TABLE cmd (id INT PRIMARY KEY auto_increment,USER CHAR (32),priv CHAR (10),cmd CHAR (64),sub_time datetime, #提交时间success enum (yes, no) #0代表执行失败 );CREATE TABLE errlog (id INT PRIMARY KEY auto_increment,err_cmd CHAR (64),err_time datetime );#创建触发器 delimiter // # 定义sql语句的结束语 CREATE TRIGGER tri_after_insert_cmd AFTER INSERT ON cmd FOR EACH ROW BEGINIF NEW.success no THEN #等值判断只有一个等号INSERT INTO errlog(err_cmd, err_time) VALUES(NEW.cmd, NEW.sub_time) ; #必须加分号END IF ; #必须加分号 END // delimiter ; # 把结束符号还原回来 #往表cmd中插入记录触发触发器根据IF的条件决定是否插入错误日志 INSERT cmd (USER,priv,cmd,sub_time,success ) VALUES(egon,0755,ls -l /etc,NOW(),yes),(egon,0755,cat /etc/passwd,NOW(),no),(egon,0755,useradd xxx,NOW(),no),(egon,0755,ps aux,NOW(),yes);# 删除触发器 drop trigger tri_after_insert_cmd;-- 3 存储过程# (1) 无参存储过程delimiter //create procedure p1()BEGINselect * from db7.teacher;END //delimiter ;# MySQL中调用call p1();# Python中调用cursor.callproc(p1)# (2) 有参存储过程。不但要指定是接收还是返回还要指定类型delimiter //create procedure p2(in n1 int,in n2 int,out res int)BEGINselect * from db7.teacher where tid n1 and tid n2;set res 1;END //delimiter ;# inout 可进可出 了解就行# MySQL中调用set x0call p2(2,4,x);select x; # 查看返回值结果# Python中调用 cursor.callproc(p2,(2,4,0)) # _p2_02,_p2_14,_p2_20cursor.excute(select _p3_2)cursor.fetchall()## 应用程序和数据库结合使用### 方式一MySQL: 编写存储过程python调用存储过程### 方式二Python编写纯生SQLMySQL什么都不用干### 方式三PythonORM -- 纯生SQL MySQL# 运行效率方式二高开发效率方式三高运行效率比方式二慢不了多少我们主要是用方式三偶尔用方式二很少会去用方式一除非一个人应用程序开发和DBA开发都很厉害。 二、事物 create table user( id int primary key auto_increment, name char(32), balance int );insert into user(name,balance) values (wsb,1000), (egon,1000), (ysb,1000);#原子操作 start transaction; update user set balance900 where namewsb; #买支付100元 update user set balance1010 where nameegon; #中介拿走10元 update user set balance1090 where nameysb; #卖家拿到90元 commit;#出现异常回滚到初始状态 start transaction; update user set balance900 where namewsb; #买支付100元 update user set balance1010 where nameegon; #中介拿走10元 uppdate user set balance1090 where nameysb; #卖家拿到90元,出现异常没有拿到 rollback; commit; 三、函数和流程控制 #1 准备表和记录 CREATE TABLE blog (id INT PRIMARY KEY auto_increment,NAME CHAR (32),sub_time datetime );INSERT blog (NAME, sub_time) VALUES(第1篇,2015-03-01 11:31:21),(第2篇,2015-03-11 16:31:21),(第3篇,2016-07-01 10:21:31),(第4篇,2016-07-22 09:23:21),(第5篇,2016-07-23 10:11:11),(第6篇,2016-07-25 11:21:31),(第7篇,2017-03-01 15:33:21),(第8篇,2017-03-01 17:32:21),(第9篇,2017-03-01 18:31:21);#2. 提取sub_time字段的值按照格式后的结果即年月来分组select date_format(sub_time,%Y-%m),count(id) from blog group by date_format(sub_time,%Y-%m); 四、索引原理 #1. 准备表 create table s1( id int, name varchar(20), gender char(6), email varchar(50) );#2. 创建存储过程实现批量插入记录 delimiter $$ # create procedure auto_insert1() BEGINdeclare i int default 1;while (i3000000) doinsert into s1 values(i,egon,male,concat(egon,i,oldboy));set ii1;end while; END$$ delimiter ; #3. 查看存储过程 show create procedure auto_insert1\G #4. 调用存储过程 call auto_insert1();#无索引mysql根本就不知道到底是否存在id等于333333333的记录只能把数据表从头到尾扫描一遍此时有多少个磁盘块就需要进行多少IO操作所以查询速度很慢 mysql select * from s1 where id333333333; Empty set (0.33 sec)# 创立索引前 select count(id) from s1 where id 1000 row in set (0.80 sec)# 创立索引 create index idx_id on s1(id) Query OK, 0 rows affected (2.63 sec) Records: 0 Duplicates: 0 Warnings: 0# 创立索引后 select count(id) from s1 where id 1000; row in set (0.00 sec)  转载于:https://www.cnblogs.com/hexiaorui123/p/10440378.html
http://www.sadfv.cn/news/378711/

相关文章:

  • 手机网站开发兼容性wordpress网站漏洞
  • WordPress出现503报错seo点击排名软件哪里好
  • 邀请码网站怎么做自助申请海外网站
  • 重庆电子工程职业学院招生网平台seo
  • 登录手机网站模板htmlseo薪酬水平
  • 用yii框架做的网站如何搭建百度搜索风云榜排行榜
  • 山西网站建站系统哪家好哪里有网站建设联系方式
  • phpcms做网站建栏目毕业设计网站开发类题目
  • 平湖网站建设公司克建设工程有限公司是做什么的
  • 网站安装php成都网站建设开发公司
  • 曲阜市建设局网站php网站如何做特效
  • 描述建设一个网站的具体步骤做美直播网站
  • 惠州市两学一做网站免费的公众号排版工具
  • 优秀的商城网站首页设计网建教程
  • 罗湖做网站公司中企动力苏州网页设计
  • 免费网络爬虫网站纯 flash 网站
  • 网站建设所需ie禁止访问网站
  • 凯里网站建设流程个人网页制作成品
  • 潍坊做网站好看wordpress极简模版
  • 网站关键词排名优化电话建设银行手机查询网站
  • 济宁建设网站看装修案例的网站
  • 泰安微信网站制作网吧手机网站模版
  • 网页设计制作一个餐饮网站网站结构图怎么画
  • 企业网站后台管理系统模板下载wordpress文章全屏
  • 应聘网站建设工程师企业seo网站优化设计
  • 专业网站建设品牌网页与网站的区别是什么
  • 网站服务器用哪个好北京装修大概多少钱一平方
  • 国外门户网站设计购物网站大全
  • 常州商城网站制作公司三合一网站有必要吗
  • 网站空间的控制面板首页提升学历选什么专业比较好