《深入浅出SQL》问答录(十)

时间:2022-07-23
本文章向大家介绍《深入浅出SQL》问答录(十),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

花絮

检查约束

CREATE TABLE piggy_bank(
	id INT NOT NULL PRIMARY KEY,
	coin CHAR(1) CHECK (coin IN ('P','N','D','Q'))
);

CHECK(检查)用于限定允许插入某个列的值。它与WHERE子句都使用相同的条件表达式。 如果插入的值无法通过CHECk条件,则出现错误信息。

ALTER TABLE my_contacts
ADD CONSTRAINT CHECk gender IN ('M','F');

视图

创建视图

CREATE VIEW web_designers AS
SELECT mc.first_name,mc.last_name.mc.phone,mc.email
FROM my_contacts mc
NATURAL JOIN job_desired jd
WHERE jd.title = 'Web Designer';

查看视图

就像普通表那样。

SELECT * FROM web_designers;

视图的实际行动

SELECT* FROM(
SELECT mc.first_name,mc.last_name,mc.phone,mc.email
FROM my_contacts mc
NATURAL JOIN job_desired jd
WHERE jd.title = 'Web Designer' AS web_designers;
)

最后为什么要用个AS呢?因为当SELECT语句的结果是一个虚表时,若没有别名,SQL就无法取得其中的表。

为什么视图对数据库有好处?

  1. 如果创建了视图,就不需要重复创建复杂的联接与子查询。视图隐藏了子查询的复杂性。当SQL其他编程语言结合后,把视图加入程序代码会比加入冗长、复杂、充满联接的查询更简单。
  2. 为数据库创建属兔,可用于改变底层表结构时以视图模仿数据库的原始结构,因而无需修改使用旧结构的应用程序。
  3. 创建视图可以隐藏读者无需看到的消息。
  4. 可以对视图进行增删改、约束等操作,这些操作会被写入原表,不过这需要包括NOT NULL的值,所以少这么干。

销毁视图

DROP VIEW pb_dimes;

事务

事务是一群可以完成一组工作的SQL语句。

START TRANSACTION;	--持续追踪后续所有SQL语句

COMMIT; --提交所有程序代码造成的改变

ROLLBACK;	--回滚,回到事务开始前

问答录

Q:可以查看以创建的视图吗?

A:SHOW TABLES;


Q:如果我卸载了有视图的表,会发生什么事?

A:看情况。有的RDBMS允许使用视图,但不返回数据。一般而言,最好先去除视图,然后再卸载它所依据的表。