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

陕西公路工程建设有限公司网站外发加工平台

陕西公路工程建设有限公司网站,外发加工平台,前端素材网,桂林漓江景区介绍一、约束 1.1定义 约束是对表中的数据进行限制的一套规则,用于防止用户向数据库中输入无效数据。它可以保证表中的数据满足特定业务规则和逻辑,从而维护数据的准确性和可靠性。 1.2作用 数据完整性 :约束可以确保数据在插入、更新或删除时符…

一、约束

1.1定义

        约束是对表中的数据进行限制的一套规则,用于防止用户向数据库中输入无效数据。它可以保证表中的数据满足特定业务规则和逻辑,从而维护数据的准确性和可靠性。

1.2作用

  • 数据完整性 :约束可以确保数据在插入、更新或删除时符合预定义的规则,从而避免数据不一致和错误。

  • 数据质量 :通过约束,可以强制执行数据的格式、范围和相关性等要求,从而提高数据的质量。

  • 优化查询 :约束可以提供有关数据结构和关系的信息,有助于优化数据库查询的性能,使数据库管理系统能够更有效地执行查询操作。

1.3常见的约束及其作用

约束描述关键字
非空约束限制该字段的数据不能为nullNOT NULL
唯一约束保证该字段数据都是唯一的、不重复的UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
检查约束保证字段值满足一个条件CHECK
外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

非空约束 

CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(50) NOT NULL, -- 非空约束price DECIMAL(10, 2) NOT NULL, -- 非空约束description TEXT
);

 唯一约束

CREATE TABLE users (user_id INT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE, -- 唯一约束email VARCHAR(100) UNIQUE -- 唯一约束
);

 主键约束

CREATE TABLE employees (employee_id INT PRIMARY KEY, -- 主键约束name VARCHAR(50) NOT NULL,position VARCHAR(50),salary DECIMAL(10, 2)
);

 默认约束

CREATE TABLE blog_posts (post_id INT PRIMARY KEY,title VARCHAR(100) NOT NULL,content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 默认值约束
);

        如果没有指定created_at,将自动使用当前时间戳。

 检查约束

CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT NOT NULL,order_date DATE NOT NULL,status VARCHAR(20) CHECK (status IN ('Processing', 'Shipped', 'Delivered')) -- 检查约束
);

 外键约束

CREATE TABLE departments (department_id INT PRIMARY KEY, -- 主键department_name VARCHAR(50) NOT NULL
);CREATE TABLE employees (employee_id INT PRIMARY KEY,name VARCHAR(50) NOT NULL,department_id INT,FOREIGN KEY (department_id) REFERENCES departments(department_id) -- 外键约束
);

添加外键

create table 表明{字段名 数据类型,...[constraint] [外键名称] foreign key [外键字段名] references 主表(主表列名)};
alter table 表名 add constraint 外键名称 foreign key [外键字段名] references 主表(主表列名);

删除外键

alter table 表名 drop foreign key 外键名称;

外键行为

行为说明
NO ACTION当在父表中删除或者更新对应记录时,若有外键则不允许删除或更新
RESTRICT当在父表中删除或者更新对应记录时,若有外键则不允许删除或更新
CASCADE当在父表中删除或者更新对应记录时,若有外键则删除或更新外键在子表中的记录
SET NULL当在父表中删除对应记录时,若有外键则设置子表中该外键值为null(要求可以取null)
SET DEFAULT父表变更时,子表将外键列设置为一个默认的值

二、多表查询 

2.1什么是多表查询

        多表查询是指在同一个SQL语句中,从两个或多个表中检索数据。在数据库设计中,数据通常被存储在不同的表中,以避免数据冗余并提高数据完整性。通过多表查询,可以将这些表中的相关数据组合起来,以获取有意义的结果。

2.2单表查询与多表查询的区别

  • 单表查询:只涉及一个表的数据,通过WHERE子句过滤条件来查找数据。

  • 多表查询:涉及两个或多个表的数据,需要使用联接(JOIN)操作来指定表之间的关系,并通过WHERE子句过滤条件来查找数据。

2.3连接类型

1. 内联接(INNER JOIN)

内联接是默认的联接类型,它返回两个表中满足连接条件的记录。

  • 隐式内联接:
select 字段列表 from 表1,表2 where 条件...;
  • 显示内联接 :
select 字段列表 from 表1 [inner] join 表2 on 连接条件...;

2. 外联接(OUTER JOIN)

外联接可以分为以下三种类型:

  • 左外联接(LEFT OUTER JOIN):返回左表中的所有记录,以及右表中满足条件的记录。如果右表中没有匹配的记录,则返回NULL。

    select 字段列表 from 表1 left [outer] join 表二 on 条件...;
  • 右外联接(RIGHT OUTER JOIN):返回右表中的所有记录,以及左表中满足条件的记录。如果左表中没有匹配的记录,则返回NULL。

    select 字段列表 from 表1 right [outer] join 表二 on 条件...;
  • 全外联接(FULL OUTER JOIN):返回两个表中的所有记录,如果另一个表中没有匹配的记录,则返回NULL。

3. 交叉联接(CROSS JOIN)

交叉联接返回两个表的笛卡尔积,即所有可能的组合。

4. 自联接(SELF JOIN)

自联接是指将一个表与其自身进行联接。通常用于层次结构数据,例如员工表中的上下级关系,必须使用别名。

select 字段列表 from 表A 别名A join 表A 别名B on 条件...;

5.联接运算符

在SQL中,可以使用以下运算符来指定联接类型:

  • =:用于等值联接。

  • <><=>=<>等用于不等值联接。

2.4实例

        这里假设有三张表,一张订单表Orders,一张产品表Products,一张客户表Customers。

等值内联接

查询所有订单及其对应的产品信息:

SELECT Orders.OrderID, Orders.CustomerName, Products.ProductName
FROM Orders
INNER JOIN Products ON Orders.ProductID = Products.ProductID;

左外联接 

查询所有客户及其订单信息,即使某些客户没有下过订单:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

全外联接

查询所有客户和所有订单,无论是客户是否有订单,还是订单是否有客户: 

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

 三、子查询

3.1什么是子查询

        子查询是指嵌套在另一个SQL语句中的查询。它通常出现在SELECT、FROM、WHERE等子句中,主要用于为外部查询提供数据或条件。

3.2子查询的功能

  • 条件过滤:在外查询的WHERE子句中使用子查询,根据子查询返回的结果来过滤外部查询的数据。

  • 数据集:在FROM子句中使用子查询,将子查询的结果作为一个临时表来使用。

  • 赋值:在SET和WHERE子句中使用子查询,将子查询的结果赋给变量或用于更新条件。

3.3子查询语法

SELECT column1, column2, ...
FROM table_name
WHERE column_name operator (SELECT column_name FROM table_name WHERE condition);

3.4子查询类型 

  • 单行子查询:子查询返回单个值。

  • 多行子查询:子查询返回多个值,通常与IN、ANY、ALL等一起使用。

3.5示例 

条件过滤

找到价格高于产品A的所有产品:

SELECT ProductName, Price 
FROM Products 
WHERE Price > (SELECT Price FROM Products WHERE ProductName = '产品A');

临时表 

展示某个月份的销售数据:

SELECT s1.ProductID, s1.TotalSales 
FROM (SELECT ProductID, SUM(SalesAmount) AS TotalSales FROM Sales WHERE MONTH(SaleDate) = 10 GROUP BY ProductID
) s1 
WHERE s1.TotalSales > 1000;

赋值

根据子查询结果更新员工的津贴:

UPDATE Employees 
SET Bonus = (SELECT AVG(PerformanceScore) FROM Department WHERE DepartmentID = Employees.DepartmentID
) 
WHERE EmployeeID = 1001;

 

 

 


文章转载自:

http://LwlwSFVb.tbwsL.cn
http://pWZioVqj.tbwsL.cn
http://cIRYkbsm.tbwsL.cn
http://n4AayxAz.tbwsL.cn
http://NY7zBNEN.tbwsL.cn
http://3FsbfjYp.tbwsL.cn
http://vKFQfA6a.tbwsL.cn
http://I0p7RnWo.tbwsL.cn
http://MmCHQmO2.tbwsL.cn
http://4iZAenLI.tbwsL.cn
http://aSyFKZcf.tbwsL.cn
http://UxpWGV8j.tbwsL.cn
http://wPSdh1uf.tbwsL.cn
http://jl1eqIOF.tbwsL.cn
http://MBMxUYGd.tbwsL.cn
http://zHQuJFGn.tbwsL.cn
http://uxfxAR0K.tbwsL.cn
http://dba9WYbG.tbwsL.cn
http://vvcJu7Nh.tbwsL.cn
http://EFzvEZHV.tbwsL.cn
http://I4uHk8Sg.tbwsL.cn
http://xxDI7edW.tbwsL.cn
http://Jhmt0nYF.tbwsL.cn
http://5inspxun.tbwsL.cn
http://1KHmEudK.tbwsL.cn
http://4KbfIT2W.tbwsL.cn
http://0FUfsjjK.tbwsL.cn
http://soiAe7Ti.tbwsL.cn
http://Dez07JFV.tbwsL.cn
http://RJugX4W2.tbwsL.cn
http://www.dtcms.com/wzjs/618111.html

相关文章:

  • 太原做手机网站设计网页设计与制作学什么
  • 2017做哪些网站致富中国网络安全公司排名
  • 做网站样品图片怎么拍照网站建设期末题答案
  • 网站建设时间进度表模板wordpress 分类目录 页面
  • 公司外贸网站建设房地产公司排名前十
  • 网站推广计划至少应包括wordpress woo theme
  • 百度一下建设部网站全网模板建站系统
  • aspit网站源码带手机版如何优化网站快速排名
  • 北京网络网站推广关于西安网页设计
  • 学校门户网站建设方案网站制作中的更多怎么做
  • 女人和男人做床上爱网站什么网址都能打开的浏览器
  • 帮助网站网站做优化做头像的网站空白
  • 加强制度建设 信息公开 网站 专栏网站诊断案例
  • 游戏网站设计网站策划薪资
  • 金阊seo网站优化软件怎样查企业注册信息查询
  • 网站嵌入地图想做网站制作运营注册什么公司核实
  • 优跃达官网网站建设项目微商城网站建设代理商
  • 工作设计室网站深圳华强北水货手机报价
  • 怎么修改php网站保定市建设局质监站网站
  • 做企业网站需要维护费吗网站服务器的作用
  • 谁家做网站比较好南山网站 建设seo信科
  • 平面设计图网站工信部网站备案查通知
  • 中宁网站建设河北邢台手机网站建设
  • 竞网做的网站怎么样wordpress设置树形
  • c 网站开发 图书下载wordpress入站密码
  • 美食类网站开发需求分析wordpress 文章太多
  • 广东东莞网站建设网站没内容可以备案吗
  • 学校的网站如何建设方案wordpress主题带个人中心
  • 嘉里建设网站网站设计作用
  • 南山网站公司定网站开发 外包