网站建设SEO优化哪家好正规网站建设咨询电话
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:53
当前位置: 首页 > news >正文
网站建设SEO优化哪家好,正规网站建设咨询电话,网站开发技术考题,北京做网站周云帆视图、索引、存储过程、触发器 group by补充#xff1a; 规范来说#xff0c;分组查询中#xff0c;select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化#xff0c;分组后如果某个字段的所有记录相同#xff0c;同样可以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_num20005;# 删除视图
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 i10 doINSERT INTO book (bookname) VALUES (concat(悲惨的世界,i));SET ii1;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_stmttrigger_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;
相关文章
-
网站建设seo虾哥网络wordpress菜单跳转
网站建设seo虾哥网络wordpress菜单跳转
- 技术栈
- 2026年04月20日
-
网站建设sem怎么做网站备案目的
网站建设sem怎么做网站备案目的
- 技术栈
- 2026年04月20日
-
网站建设ps模板seo引流赚钱吗
网站建设ps模板seo引流赚钱吗
- 技术栈
- 2026年04月20日
-
网站建设seo优化浙江电商网站搜索引擎怎么做
网站建设seo优化浙江电商网站搜索引擎怎么做
- 技术栈
- 2026年04月20日
-
网站建设seo优化浙江玉环专业做网站
网站建设seo优化浙江玉环专业做网站
- 技术栈
- 2026年04月20日
-
网站建设sycmjz三亚西岛
网站建设sycmjz三亚西岛
- 技术栈
- 2026年04月20日
