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

李洋网站建设产品关键词的搜索渠道

李洋网站建设,产品关键词的搜索渠道,青浦做网站的公司,哪里有网站开发设计视图、索引、存储过程、触发器 group by补充: 规范来说,分组查询中,select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化,分组后如果某个字段的所有记录相同,同样可以select。 视图 视图是虚拟…

视图、索引、存储过程、触发器

group by补充:

规范来说,分组查询中,select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化,分组后如果某个字段的所有记录相同,同样可以select。

在这里插入图片描述

  

  

视图

视图是虚拟的表。与包含数据的表不一样,视图(虚拟表)是动态检索数据的查询

视图的作用是,如果表结构过于复杂,对于不了解表结构的使用者是不友好的,创建者可以根据使用者需求提炼(筛选)出一批数据成为一个虚拟的表供其使用。再有

在视图创建之后,可以用与表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。

重要的是知道视图仅仅是用来查看存储在别处的数据的一种设施。视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。

因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果你用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会发现性能下降得很厉害。所以不要滥用视图。

可以通过视图修改原数据,但是不建议这么做。

注意:

  • 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。

  • 对于可以创建的视图数目没有限制。

  • 为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。

  • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。

  • ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖。

  • 视图不能索引,也不能有关联的触发器或默认值。

  • 视图可以和表一起使用。例如,编写一条联结表和视图的SELECT语句。

使用命令:

  • 视图用CREATE VIEW语句来创建。

  • 使用SHOW CREATE VIEW viewname;来查看创建视图的语句。

  • DROP删除视图,其语法为DROP VIEW viewname;

  • 更新视图时,可以先用DROP再用CREATE。也可以直接用CREATE OR REPLACE VIEW,此时如果要更新的视图不存在,则更新语句会创建一个视图;如果要更新的视图存在,则更新语句会替换原有视图。

使用样例:

#查询订单编号为20005的:产品名称,供应商名称,产品价格,购买数量
SELECT order_num,prod_name, vend_name, prod_price, quantity
FROM orderitems oJOIN products p ON o.prod_id = p.prod_idJOIN vendors v ON p.vend_id = v.vend_id
WHERE o.order_num = 20005;# 创建视图,包含所有订单的产品名称,供应商名称,产品价格,购买数量
CREATE VIEW order_detail ASSELECT order_num,prod_name, vend_name, prod_price, quantity
FROM orderitems oJOIN products p ON o.prod_id = p.prod_idJOIN vendors v ON p.vend_id = v.vend_id;# 查看视图的所有数据
SELECT * FROM order_detail;# 从视图中过滤数据
SELECT * FROM order_detail WHERE order_num=20005;# 删除视图
DROP VIEW order_detail; 

  

  

索引

索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达。

索引是对数据库中一列或多列的值进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。

索引是一个单独的存储在磁盘上的数据库结构,包含着对数据表里所有记录的引用指针。使用索引可以快速找出在某个或多个列中的某个值。所有MySQL列类型都可以被索引,对相关列使用索引是提高查询操作速度的最佳途径。

索引是在存储引擎中实现的,因此每一种存储引擎的索引,都不一定完全相同。

  

索引的分类:

  • 普通索引和唯一索引

  普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。

  唯一索引要求索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合,必须唯一。

  主键索引是一种特殊的索引唯一,不允许有空值。在MySQL中,主键PRIMARY KEY会自动创建索引,唯一约束UNIQUE字段也会自动创建索引。

  • 单列索引和组合索引

单列索引及一个索引只包含单个列,一个表可以有多个单列索引。

组合索引是指在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。使用组合索引时遵循最左前缀原则。

  

使用命令:

  • 创建
--普通索引
CREATE TABLE book(id int AUTO_INCREMENT PRIMARY KEY ,bookname varchar(255) NOT NULL ,INDEX (bookname)   -- 注意
);
--唯一索引
CREATE TABLE book2(id int AUTO_INCREMENT PRIMARY KEY ,bookname varchar(255) NOT NULL ,UNIQUE INDEX (bookname)   -- 注意
); 
-- 给索引起名字
CREATE TABLE book3(id int AUTO_INCREMENT PRIMARY KEY ,bookname varchar(255) NOT NULL ,UNIQUE INDEX  name_idx (bookname)   -- 注意:如果不指定名称的话,名称则为字段名
); -- 注意:index 和key是等价的
  • 单独创建索引(非建表时)
--普通索引
CREATE INDEX index_name
ON table_name (column_name);
--唯一索引
CREATE UNIQUE INDEX index_name
ON table_name (column_name);
--组合索引
CREATE INDEX index_name
ON table_name (column_name1,column_name2);
  • 删除索引(两种方式)
ALTER TABLE table_name DROP INDEX index_name;DROP INDEX index_name ON table_name; 

  

  

存储过程

简单的说存储过程就是一条或者多条语句的集合,可视为批文件(脚本),但是其作用不仅限于批处理。

  • 基本形式
CREATE PROCEDURE  存储过程名 (参数列表)
BEGIN    SQL语句代码块
END
  • 举例一
# 创建存储过程
CREATE PROCEDURE my_test()
BEGINSELECT * FROM book;
END;# 调用存储过程
CALL my_test();# 删除存储过程
DROP PROCEDURE my_test;
  • 举例二
# 创建存储过程
CREATE PROCEDURE my_test()
BEGIN
#   declare 定义变量i DECLARE i int DEFAULT 0;WHILE i<10 doINSERT INTO book (bookname) VALUES (concat('悲惨的世界',i));SET i=i+1;end WHILE ;
END;

  

  

触发器

MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT,UPDATE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。

触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。

创建:

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tab_name FOR EACH ROW trigger_stmt
  • trigger_name:触发器名称,用户自行指定;

  • trigger_time :触发时机,可以指定为before或after;

  • trigger_event:触发事件,包括INSERT,UPDATE和DELETE;

  • tab_name:要建立触发器的表名;

  • trigger_stmt:触发器执行语句。

CREATE TABLE book2(id int AUTO_INCREMENT PRIMARY KEY ,bookname varchar(255) NOT NULL
);
ALTER TABLE book  ADD INDEX name_idx(bookname);# 创建触发器,在book表中插入一条数据时自动在book2尾部备份一份新的book
CREATE TRIGGER book_insert_select AFTER INSERT 
ON book FOR EACH ROW INSERT INTO book2(bookname) SELECT bookname FROM book;INSERT INTO book(bookname)VALUES ('《平凡的世界2》');# 查看触发器
SHOW TRIGGERS ;# 也可以在triggers表中查看触发器
SELECT * FROM information_schema.triggers;# 删除触发器
DROP TRIGGER book_insert_select;
http://www.bjxfkj.com.cn/article/104015.html

相关文章:

  • 网络信息设计石家庄网站seo
  • 各类网站导航国外外链平台
  • 花都网站建设策划口碑营销推广
  • 学生做网站的目的网站收录提交入口大全
  • 一个电商网站开发周期是多久吉安seo招聘
  • 黑客攻击的网站最新百度新闻
  • 公司网站是否必须做可信认证seo自然优化排名
  • wordpress评论seo整站优化方案案例
  • 山西百度公司做网站的如何建网站赚钱
  • 物流网站建设工作岗位百度大数据查询
  • 专做polo衫的网站企业推广策划公司
  • 岳阳企业网站定制开发公关服务
  • 广东网络seo推广公司单页网站seo优化
  • 网站cms是什么意思sem优化是什么
  • 自己如何在网上做网站武汉网站维护公司
  • 接视频做的网网站百度怎么发广告
  • 西安短视频培训班哪个好北京网站优化公司哪家好
  • 注册网站租空间哪里租搜索引擎优化的概念是什么
  • wordpress怎么用嘉兴关键词优化报价
  • 仙桃网站建设营销策略
  • 网站源码带采集重庆白云seo整站优化
  • 网站访问量数据4001688688人工服务
  • wordpress 弹出登录页seo数据是什么意思
  • 网站建设的利润率多少seo关键字优化教程
  • html电影网站源码厦门人才网个人版
  • 如何做购物网站的限购功能代码提高工作效率总结心得
  • b2c网站开发公司深圳龙岗区疫情最新消息
  • 思途智旅游网站开发网络营销策划方案书
  • 做网站效果怎么样软文营销平台
  • 好听的网络平台起名seo视频网页入口网站推广