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

c 做网站用什么框架/北京出大大事了

c 做网站用什么框架,北京出大大事了,跨境电商推广平台,手写字体在线生成器文章目录 1. 视图2. 存储过程2.1 创建存储过程2.2 执行存储过程 3. 游标4. 约束4.1 主键约束4.2 外键约束4.3 唯一约束4.4 检查约束 5. 触发器 1. 视图 视图是虚拟的表,它是动态检索的部分。使用视图的原因:避免重复的SQL语句;使用表的部分而…

文章目录

  • 1. 视图
  • 2. 存储过程
    • 2.1 创建存储过程
    • 2.2 执行存储过程
  • 3. 游标
  • 4. 约束
    • 4.1 主键约束
    • 4.2 外键约束
    • 4.3 唯一约束
    • 4.4 检查约束
  • 5. 触发器

1. 视图

视图是虚拟的表,它是动态检索的部分。使用视图的原因:避免重复的SQL语句;使用表的部分而不是全部;限制用户只能访问表的部分以保护数据;更改数据格式和表示。
视图要唯一命名;可以用视图创建视图;需要管理创建视图的权限。

-- case1: 简化SQL语句,为3表的连接创建视图
CREATE VIEW ProductCustomers AS
SELECT cust_nam, cust_contact, prod_id
FROM Customers, Orders, OrderItems
WHERE Customers.cust_id = Orders.cust_idAND OrderItems.order_num = Orders.order_num;SELECT cust_nem, cust_contact
FROM ProductCustomers
WHERE prod_id = 'RGAN01';-- csae2: 重新格式化数据,为格式化的查询创建视图
CREATE VIEW VendorLocations AS
SELECT CONCAT(RTRIM(vend_name), ' (', RTRIM(vend_country), ')') AS vend_title
FROM Vendors
ORDER BY vend_name;SELECT * FROM VendorLocations;-- case3: 过滤数据
CREATE VIEW CustomersEmailList AS
SELECT cust_id, cust_name, cust_email
FROM Customers
WHERE cust_email IS NOT NULL;SELECT * FROM CustomerEmailList;-- case4: 为使用计算字段的查询创建视图
CREATE VIEW OrderItemExpanded AS
SELECT prod_id,quantity,item_price,quantity * item_price AS expanded_price
FROM OrderItems;SELECT *
FROM OrderItesExpanded
WHERE order_num = 20008;

2. 存储过程

存储过程(Stored Procedure)是一组为了完成特定功能而预先编译并存储在数据库中的 SQL 语句集合。它类似于编程语言中的函数,有输入输出参数,可以接收用户传递的数据,经过一系列的逻辑处理后返回结果。
存储过程的作用:封装复杂操作,向应用侧减少操作步骤,从而减少出错可能,有利于保证数据一致性;存储过程内部变动对应用侧无感知,基础数据访问被限制从而保证安全性;存储过程以编译形式存储,DBMS工作量小,性能有所提高。

2.1 创建存储过程

创建存储过程涉及多行,为了避免默认分隔符 “;” 终止存储过程的定义,需要使用DELIMITER操作符临时修改分隔符,定义完成后再改回来。存储过程中的局部变量应声明放在最前面。
– v_rows是存储过程中的一个整型变量,参数ListCOunt保存为存储过程返回值。存储过程的执行结果先保存在v_rows中,再赋值给返回参数ListCOunt

DELIMITER //
CREATE PROCEDURE MailingListCount(OUT ListCount INT)
BEGINDECLARE v_rows INT DEFAULT 0;SELECT COUNT(*) INTO v_rowsFROM CustomersWHERE cust_email IS NOT NULL;SET ListCount = v_rows;
END //
DELIMITER ;-- 查看已经创建的存储过程
show procedure status;-- 删除存储过程
drop procedure xxx;

2.2 执行存储过程

SET @ListCount = 0;
CALL MailingListCount(@ListCount);
SELECT @ListCount;

3. 游标

游标主要用于从结果集中相邻地取出数据。游标只能读取,不能更新和删除。
游标主要是在存储过程、函数或触发器内部使用,并且它们是局部对象,仅在定义它们的块内可见,不具备全局的视图或系统表来直接展示所有已创建的游标。
游标的定义没有执行数据检索操作。打开游标操作才实际执行检索操作。

-- 仅仅检索一行
CREATE PROCEDURE CurTest()
BEGINDECLARE v_cust_id char(10);DECLARE v_cust_name char(50);DECLARE CustCursor CURSORFORSELECT cust_id, cust_name FROM CustomersWHERE cust_country = 'USA';OPEN CustCursor;FETCH CustCursor INTO v_cust_id, v_cust_name;SELECT v_cust_id, v_cust_name;CLOSE CustCursor;
END;-- 检索多行
CREATE PROCEDURE CurTest()
BEGINDECLARE v_cust_id char(10);DECLARE v_cust_name char(50);DECLARE done INT;DECLARE CustCursor CURSORFORSELECT cust_id, cust_name FROM CustomersWHERE cust_country = 'USA';DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;OPEN CustCursor;read_loop: LOOPFETCH CustCursor INTO v_cust_id, v_cust_name;IF done THENLEAVE read_loop;END IF;SELECT CONCAT('Customer ID: ', v_cust_id, ', Name: ', v_cust_name);END LOOP;CLOSE CustCursor;
END;

4. 约束

约束是管理插入或者处理数据库数据的规则,DBMS通过在数据库表上施加约束来实现引用完整性。OrderItems表的order_num字段引用了Orders表的order_num字段,OrderItems表中的order_num字段值一定要出现在Orders表的order_num列中,这就是引用完整性。

4.1 主键约束

-- 创建主键方法一:
CREATE TABLE Vendors
(vend_id CHAR(10) NOT NULL PRIMARY KEY,...
)-- 创还能主键方法二:
ALTER TABLE Vendors
ADD CONSTRAINT PRIMARY KEY(vend_id);

4.2 外键约束

外键是表中的一列,其值必须在另一表的主键中。比如Orders表的cust_id可以作为外键,其值在Customers表中cust_id列中,而cust_id列式Customers表的主键。再如OrderItems表的order_num列可以作为外键,而order_num列又是Orders表的主键。设置外键的作用是,外键取值范围限定在其作为主键的表所给出的那些主键值上。

-- 定义外键约束方法一:
CREATE TABLE Orders
(order_num INT NOT NULL PRIMARY KEY,order_date DATETIME NOT NULL,cust_id CHAR(10) NOT NULL REFERENCES Customers(cust_id)
);
-- 定义外键方法二:
ALTER TABLE Orders
ADD CONSTRAINT
FOREIGN KEY(cust_id) REFRENCES Customers(cust_id);

4.3 唯一约束

唯一约束和和主键的区别:唯一约束允许NULL值;唯一约束允许修改或者更新;唯一约束列值可以重用;唯一约束不能用来定义外键;

-- 定义唯一约束之一
CREATE TABLE Employees
(employee_id INT NOT NULL PRIMARY KEY,secure_no INT DEFULT 000,phone char(11) DEFAULT '',name char(10) DEFAULT '',age INT DEAFULT 18,UNIQUE(secure_no, phone)
)-- 定义唯一约束之二:命名的唯一约束
ALERT TABLE Employees
ADD CONSTRAINT unique_constraint
UNIQUE (secure_no, phone);-- 定义唯一约束之三:匿名的唯一约束
ALERT TABLE Employees
ADD UNIQUE(secure_no, phone);-- 删除唯一约束,唯一约束本质是唯一索引
ALTER TABLE employees
DROP INDEX unique_constraint;

4.4 检查约束

检查约束用于确保插入的值满足检查的条件。

-- case1: 检查字段quantity值大于0
CREATE TABLE OrderItems
(order_num INT NOT NULL,order_item INT NOT NULL,prod_id CHAR(10) NOT NULL,quantity INT NOT NULL CHECK (quantity > 0),item_price MONEY NOT NULL
);-- case2:检查性别是否只包含字母M和字母F
ALTER TABLE employee
ADD CONSTRAINT chk_gender CHECK (gender IN ('M', 'F'));

5. 触发器

当特定的数据库操作发生时要执行一些额外的工作,就需要使用触发器。触发器是绑定到单个表的。执行对表的特定操作会触发触发器的操作。触发器的用途:操作执行前数据统一格式;记录某个表的变动到另一个表;进行额外验证;产生计算列的值;更新时间戳。
注意点:触发器操作可以在其所绑定的操作之前或者之后执行,MySQL不允许在触发器操作对同一张表在绑定操作后再进行操作。比如只能在插入操作之前把要插入的数据转为大写。

-- 插入前转为大写
CREATE TRIGGER customer_state
BEFORE INSERT ON Customers
FOR EACH ROW
BEGIN-- 在插入之前将 cust_state 转换为大写SET NEW.cust_state = UPPER(NEW.cust_state);
END;
http://www.lryc.cn/news/580738.html

相关文章:

  • 中企视窗做网站怎么样/友联互换
  • 长春市网站制作/google年度关键词
  • 企业网站的主要功能板块/百度一下官网首页网址
  • 山东省住房和城乡建设厅电话/seo对各类网站的作用
  • 做搜狗手机网站快速排/策划公司
  • 哪个网站可以免费做音乐相册/怎么设计一个网页
  • 专业站/电商网站平台搭建
  • 大学生创意电子产品设计/北京seo加盟
  • b站黄页推广网站/seo专员岗位职责
  • 网站首页英文/torrentkitty搜索引擎
  • 云课堂哪个网站做的好/广州企业网站seo
  • wordpress 引入css/重庆电子商务网站seo
  • 聊天交友网站建设费用/7个湖北seo网站推广策略
  • 如何快速做网站/uc搜索引擎入口
  • 品牌营销的概念/青岛seo经理
  • 嵌入式软件开发工资/seo项目经理
  • wordpress支持多个站点地址/阳城seo排名
  • 郑州网站seo费用/百度无广告搜索引擎
  • 服务专业的网站制作服务/湖北荆门今日头条
  • erp系统的功能包括哪些/重庆电子商务seo
  • 官方网站想反应问题不弄应该怎么做/百度集团官网
  • 漂亮的蓝色网站/针对大学生推广引流
  • 公司做网站都需要什么流程/百度投诉中心入口
  • wordpress主题页面底部编辑/长沙seo运营
  • 如何在自己建设的网站上发表文章/深圳网络推广市场
  • 512内存服务器做网站/首页关键词排名优化
  • 做问卷用哪个网站好/网络营销服务有哪些
  • 广告设计需要美术功底吗/新媒体seo培训
  • 视频 播放网站怎么做/推广引流方法有哪些?
  • 做网站一般是怎么盈利/seo提高网站排名