mysql约束教程,MySQL 约束

本章我们将介绍约束,约束放在列或表上。 它们限制了可以插入表中的数据。

我们有以下限制:

非空

唯一

主键

外键

枚举

SET

其他数据库也具有 CHECK 约束,该约束为有效数据设置了条件。 MySQL 解析了这个约束,但是没有强制执行。

非空约束

具有NOT NULL约束的列不能具有 NULL 值。

我们创建两个具有NOT NULL约束的列。

第一个SELECT语句执行成功,第二个失败。 SQL 错误说,LastName列不能为空。

唯一约束

UNIQUE约束确保所有数据在列中都是唯一的。

在这里,我们创建一个表Brands。 BrandName列设置为UNIQUE。 不能有两个名称相同的品牌。

对于键“ BrandName”,我们收到一个 SQL 错误 Duplicate 项“ Pepsi”。 只能有一个百事可乐品牌。

注意,PRIMARY KEY约束自动在其上定义了UNIQUE约束。

主键

PRIMARY KEY约束唯一地标识数据库表中的每个记录。 这是唯一键的特例。 主键不能为NULL,唯一键可以为。 可以有更多UNIQUE列,但是表中只有一个主键。 在设计数据库表时,主键很重要。 主键是唯一的 ID。 我们使用它们来引用表行。 在表之间创建关系时,主键成为其他表中的外键。

Brands表的 Id 列成为主键。

DESCRIBE语句显示有关表中各列的信息。 我们可以看到 Id 列定义了PRIMARY KEY,BrandName设置了UNIQUE约束。 在处理特定表时,主键用于唯一标识表中的行。 唯一键强制列中的所有数据都不重复。

外键

一个表中的FOREIGN KEY指向另一表中的PRIMARY KEY。 它是两个表之间的引用约束。 外键标识一个(引用)表中的一列或一组列,该列或表引用另一(引用)表中的一列或一组列。

我们将在两个表上显示此约束:Authors和Books。

在这里,我们创建 Authors 表。 在 MySQL 中,引用表和被引用表必须是 InnoDB 或 BDB 存储引擎。 在 MyISAM 存储引擎中,将解析外键,但不会强制使用外键。

我们创建Books表。 在这里,我们有一个AuthorId列名,它用作外键。 它引用Authors表的主键。

在我们的示例中,外键强制执行意味着什么? 我们无法使用Authors本书中没有的AuthorId在Books表中插入一行。

ENUM约束

ENUM是一个字符串对象,其值是从允许值列表中选择的。 在创建表时,它们在列规范中显式枚举。

我们有一个Shops表。 该表具有定义的Id,Name和Quality列。 Quality列是ENUM。 它允许具有三个指定值之一:High,Average或Low。

在前两个语句中,我们插入了两行。 在第三种情况下,该值在ENUM中不可用。 在这种情况下,将插入一个空字符串。

SET约束

SET可以具有零个或多个值。 每个值都必须从允许值列表中选择。

我们有一个Students表。 在此表中,我们有一个“证书”列。 每个学生可以拥有 0、1 个或多个这些证书。 这与ENUM约束不同,在ENUM约束中,允许值列表中只能有一个不同的值。

保罗有两个证书,珍妮有三个,马克有四个,但是只有两个被认可,因此只有前两个被写到了桌子上。 证书用逗号分隔。 不允许有空格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP调用.Net dll

SET xobj Server.CreateObject("Test.Analyzer") b xobj.Do(a).net 开发Test.dll,要有强名称签名,COM可见要打开。执行以下命令gacutil /U Testregasm Test.dll /uregasm Test.dll /tlb Test.tlb gacutil /I Test.dll

php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例

今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用;一般用于下载任务&#xff0…

.Net 强名称签名程序集

项目——属性——签名——选中为程序集签名——选择强名称密钥文件——新建 重新编译即可多用于作为COM组件与其他程序交互强名称签名的程序集如果被篡改,那么CLR在加载该程序集进行完整性验证的时候就会失败。但是强名称可以通过其他工具去除。

观后感

看过视频之后,我个人有以下几点观后感: 1、刻意练习,刻意就是持续地做你不会做的事; 2、针对性的重复练习,学习是没有捷径的; 3、不断地挑战意外,不让自己处于“失控”状态; 4、让自…

java web项目中连接mysql数据库,javaweb之eclipse工程连接mysql数据库

javaweb之eclipse工程连接mysql数据库准备工作:1.在mysql官网下载mysqlconnection的jar包输入网址:mysql.com—点击DOWNLOADS——下拉选择MySQL Community (GPL) Downloads ——选择Connector/J——下载后解压——找到mysql-connector-java-8.0.22.jar2.…

Win7的市场份额终于超过XP了,以后可以逐渐考虑放弃ie6/7了!

Win7的市场份额终于超过XP了,以后可以逐渐考虑放弃ie6/7了! 开心啊,诸位web开发们…… 图片来源:http://thenextweb.com/microsoft/2012/09/01/windows-7-finally-overtakes-windows-xp-mac-os-x-overtakes-windows-vista/

写出漂亮的代码

转自:http://blog.csdn.net/fuyuwei2015/article/details/46552697 1)移除你没有用到的东西(就像上面建议的一样)。 2)简化必要的概念,避免不必要的概念。 3)移除不必要的抽象,用实际…

php 垂直搜死哦,垂直搜索(Vertical Search)的详细介绍

垂直搜索是相对于通用的搜索来说的,垂直搜索是通用搜索引擎的一种细化,垂直搜索专注于某一个特定行业的搜索,搜索的内容更加专一化,比如购物的内容,机械产品的内容,服务信息的内容等,是某一个行…

URL编码表一览

?退格TAB换行回车空格!"#$%&()*,-./%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f%20%21%22%23%24%25%26%27%28%29%2a%2b%2c%2d%2e%2f0123456789:;<>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_%30%31%32%33%34%…

SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息

上一篇讲到的本地推送是普通的消息推送&#xff0c;本篇要讲一下带按钮动作的推送消息&#xff0c;先上个图瞅瞅&#xff1a; 继上一篇的内容进行小小的改动&#xff1a; 在didFinishLaunchingWithOptions方法内进行以下修改 123456789101112131415161718192021222324252627282…

java的input不能更改,无法将方法响应标头Content-Type更改为application / xml

尝试解决Twilio 12300错误&#xff1a;使用AWS的API网关(GET)和CloudFormation通过 aws cli 和Swagger部署Lambda(无服务器)应用程序时导致的内容类型无效 .我将集成响应主体映射模板> Content-Type设置为 application/xml 和模板#set($inputRoot $input.path(S))$inputRoo…

.Net 调用wordCOM组件转PDF

运行环境&#xff1a;office2010或office2007SaveAsPDFandXPS.exe补丁 x86x64系统环境均可。class Program{static void Main(string[] args){DOCConvertToPDF(AppDomain.CurrentDomain.BaseDirectory "/b.html", AppDomain.CurrentDomain.BaseDirectory "/aa…

树状数组基础

关于树状数组的讲解推荐《算法竞赛入门经典训练指南》 一维版本&#xff1a; 洛谷3374 分析&#xff1a;树状数组裸的模板题 1 #include<iostream>2 #include<cstdio>3 #include<cstring>4 using namespace std;5 const int maxn50000010;6 int c[maxn];7 in…

php pdo更新,php - 使用PDO和MySQL更新查询

我试图只用PDO编写更新查询&#xff0c;但我无法执行代码&#xff1f;try {$conn new PDO("mysql:host$hostdb; dbname$namedb", $userdb, $passdb);$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8$conn->setAttribute(PDO::ATTR_…

jquery.easyui常用示例

消息框$.messager.alert("提示","法规重复标志更新成功&#xff01;");$.messager.confirm(Confirm,Are you sure you want to delete record?,function(r){ if (r){ alert(ok); } }); 翻页//初始化$(#pagination).pagination({total: actResult.Ro…

vue1升级到vue2的问题

router 不能用map方法了&#xff0c;需要改router的结构改为routers [ { // 当没有匹配路由时默认返回的首页 path:/index, component: index, authenticate:true }, { // 当没有匹配路由时默认返回的首页 path: /spa/, component: i…

python寻找字符串中的英文字符,python如何解析字符串中出现的英文人名?

这里有四个例子&#xff0c;结果来自google scholarstr1 "Jakes, William C., and Donald C. Cox. Microwave mobile communications. Wiley-IEEE Press, 1994."str2 "Schlegel, David J., Douglas P. Finkbeiner, and Marc Davis. \"Maps of dust infra…

win2003/XP删除桌面回收站

gpedit.msc 用户配置——管理模板——桌面——从桌面删除回收站——启用刷新桌面即可。

Spring Boot 学习笔记--整合Thymeleaf

1.新建Spring Boot项目 添加spring-boot-starter-thymeleaf依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-thymeleaf</artifactId> 4 </dependency> 2.添加静态文件 根据…

mongo php update 写法,mongodb update 字符 操作

下面常用的update操作&#xff0c;用mongodb2.6.3版本测试的&#xff0c;官方发布的稳定版本2.4&#xff0c;建议用稳定版。 一&#xff0c;upsert表示如果有数据就不插入&#xff0c;没数据就插入 1&#xff0c;命令行下 db.peoples.update( //查找name等于tank的用户... { na…