Mysql 零距离-入门(六)数据唯一约束性

在数据记录中我们为保证数据的唯一性,保证用户数据在数据中不出现重复记录。我们需要用到Mysql的主键key,唯一约束。

主键约束 PRIMARY KEY

一张数据表中只能存在一个主键字段。并且类型必须为数字。可是设为float类型,但小数点值必须为0和传入此字段的重复值。它可以很好保证我们记录的唯一性,主键字段自动为NOT NULL

现在,我们来创建一张新的数据表tb3,并设定一个主键字段

CREATE TABLE tb3(id SMALLINT UNSIGNED PRIMARY KEY,name VARCHAR(20),sex ENUM('1','2','3') DEFAULT '3');

图片描述

创建数据表成功,现在我们来插入两段用户数据。

INSERT tb3 VALUES(5,'大毛','1');
INSERT tb3 VALUES(10,'小李','1');

输出记录

SELECT * FROM tb3;

图片描述

可以看到我们刚刚的记录插入成功了,现在我们来入id值5的记录看看会怎么样

INSERT tb3 VALUES(5,'小明','2');

图片描述

mysql报错:主键以存在重复的‘5’值,所以刚刚插入记录失败了。主键保证了我们数据的唯一性。

自动编号AUTO_INCREMENT

每一次都要手动为主键赋值非常不方便,而且当我们数据表中的数据非常多的时候,我们就很容易插入重复的主键值容易引发错误。所以我们这里就要用到自动编号AUTO_INCREMENT来为我们的主键字段进行自动编号赋值了。

  • 自动编号,必须与主键组合使用
  • 默认情况下,起始为1,每次的增量为1

下面我们来创建多一个数据表tb4

CREATE TABLE tb4(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),sex ENUM('1','2','3') DEFAULT '3');

图片描述

数据表创建成功,现在我们来连续插入三段数据。然后把记录打印出来看看主键值

INSERT tb4(name,sex) VALUES('小丽','2');
INSERT tb4(name,sex) VALUES('大理','1');
INSERT tb4(name,sex) VALUES('小明同学','1');
SELECT * FROM tb4;

图片描述

可以看到主键值已经自动编号1~3了。

唯一约束 UNIQUE KEY

唯一约束性在一个数据表中可以存在多个字段,但是每个字段值中的集合不能出现重复值,并且可为NULL。就好像我们网站中的用户名一样。

现在我们来创建一张新的数据表ta5

CREATE TABLE ta5(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,usename VARCHAR(20) NOT NULL UNIQUE KEY,ega TINYINT UNSIGNED
);

插入两断用户数据

INSERT ta5(usename,ega) VALUES('小明',22);
INSERT ta5(usename,ega) VALUES('小明',20);

图片描述

可以看到mysql报错usename字段已经存在小明字段。所以usename已经是具有唯一约束性的字段。

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

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

相关文章

axios添加自定义头部出现的问题

在浏览器的http的GET,POST的跨域请求中,添加自定义头部,发送不是字符串,fromData的数据时,都是非简单请求。浏览器都预先发出OPTIONS(预检安全请求)。所以我们在axios中添加自定义头部时候需要后端返回OPTI…

GoLand中的指针操作 * 和

&和*这可能是Go中最令人困惑的事情之一。基本上你需要了解3个案例:&操作符 var str string "123" //打印str变量的内存地址 ftm.Println(&str) 获取变量内存地址,需要把 & 放到变量前面 *操作符 myString : "Hi"…

关于 m1 xcode12 编译报错 this target. for architecture arm64等问题解决方案

最近换了 mac m1 开发,xcode12在运行旧项目报错 的问题 xxxx building for iOS Simulator, but linking in object file built for iOS, xxxxx for architecture arm64 上谷歌、百度翻个各种答案,修改 编译结构体、修改pods配置都不行。自己瞎倒腾给解决…

关于 mac m1 xcode12 编译报错 this target. for architecture arm64等问题解决方案

最近换了 mac m1 开发,xcode12在运行旧项目报错 的问题 xxxx building for iOS Simulator, but linking in object file built for iOS, xxxxx for architecture arm64 上谷歌、百度翻个各种答案,修改 编译结构体、修改pods配置都不行。自己瞎倒腾给解…

关于 create-react-app 自定义 eslint文件配置解决方案

create-react-app项目自定义eslitn配置方式 方案一 eject 项目webpack配置进行自定义 这个方案比较low,不建议使用。这里不讲解了。 方案二 在 package.json 中的 script 命令 添加环境变量 EXTEND_ESLINTtreu 开启自定义 react-script4.x版本以下可用这个方案 …

IOS UILabel组件

UILabel 是 IOS 显示文字的组件,继承与UIView 属性 名称类型说明默认值textproperty(nullable, nonatomic,copy) NSString文字nilfontproperty(null_resettable, nonatomic,strong) UIFont字体大小17textColorproperty(null_resettable, nonatomic,strong) UIColor…

IOS 代理模型

代理模式在IOS经常使用&#xff0c;在IOS中使用代理模式非常简单。 A类文件&#xff08;协议&#xff09; a.h 中声明协议 protocol Button <NSObject> // 声明代理协议 - (void) onClick; // 可以代理的方法 - (void) onDown: (UIButton*) event; // 可以代理的方法 e…

IOS UIView 对象详解

UIView 是所有可以显示在屏幕的对象的父类&#xff0c;是一个矩形的对象 名称类型说明默认值boundsCGRect以自己左上角为原点坐标设置位置和尺寸nilframeCGRect以父级视图点左上角为原点设置位置和尺寸niltagNSInteger当前对象点标识&#xff0c;可以当作idnilconterCGPoint视图…

关于在node.js 中使用formData 发送axios上传文件失败解决方案

最近用到了node.js进行文件上传到其他服务器&#xff0c;在使用formData 上传时候遇到对方接口处理失败问题 问题原因 因为node.js 中 axios 没法识别 Content-Type 设置&#xff0c;所以我们要调用 fromData.getHaders 进行配置 const file readFile(path) const form new…

IOS UIWindow 和 UIScreen

通常UIWindow 与 UIScreen 是配合使用的。当我们想自定义window对象或者获取硬件屏幕大小必定会用到 UIWindow 和 UIScreen UIWindow 一个APP只有一个UIWindow 对象&#xff0c;表示当前窗口对象。UIWindow 继承于 UIView。 通常使用Window 自定义根节点的 UIViewController。…

IOS UIViewController API,生命周期详解

在UIKit框架中只有一个根制图控制器。视图控制器用来管理界面和处理界面的类对象&#xff0c;程序启动前必须创建根视图控制器。所有视图控制器都需要自定义完成&#xff0c;必须继承于UIViewController 实现。xcode新创建的项目默认是通过info.plist 文件配置 main.storyboard…

IOS 定时器 NSTimer

定时器对象,在OC中&#xff0c;定时器对象是NSTimer类型 //ViewController.h #import <UIKit/UIKit> interface ViewController: UIViewController {NSTimer *_timer; // 声明一个定时器对象int _time_num; } //ViewController.m #import "ViewController.h" …

冻结和只读取当前对象的属性,不读取对象原型的属性

Object.entries(obj) Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组&#xff0c;其排列与使用 for…in 循环遍历该对象时返回的顺序一致&#xff08;区别在于 for-in 循环还会枚举原型链中的属性&#xff09;。 const object1 {a: somestring,b: 42 };fo…

IOS UISwitch 组件的使用

UISwtch 在许多场景中会使用到&#xff0c;通常用来坐设置开关等行为。下面我们来看一下IOS 中 UISwitch 等用法。注意&#xff1a;UISwitch 无法通过 frame 设置宽高 UISwitch* _switch [[UISwitch alloc] init];// 设置状态和开启动画[_switch setOn:NO animated:YES];// 设…

IOS 开发 UIProgress 和 UISlidre 进度条和滑动条组件

进度条和滑动条组件非常常见&#xff0c;在ios中进度条组件是无法响应事件的。滑动条可响应事件。但是这两个组件均不可设置高度&#xff0c;可设置x,y,width 进度条属性 名称类型说明默认值progressViewStyleUIProgressViewStyle进度条样式UIProgressViewStyleDefaultprogres…

OC 中数字转字符串和浮点数转整数等转换

浮点数转字符串 float value 0.2; NSString* text [[NSString alloc] initWithFormat:"%f", value];整数转字符串 int value 10; NSString* text [[NSString alloc] initWithFormat:"%d", value];NSInteger 转字符串 NSInteger value 10; NSString…

IOS ActivityIndicator 活动指示器使用

IOS中活动指示器的使用非常简单。 UIActivityIndicatorView* _activity [[UIActivityIndicatorView alloc] init];// 设置位置_activity.frame CGRectMake(180, 100, 80, 80);// 设置菊花样式[_activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleLarge];/…

IOS 模态弹窗与操作版使用 UIAlertController

IOS8 以后UIAlertView 改用 UIAlertController 实现模态窗和操作板。UIAlertController 的使用与UIAlerView 非常不同&#xff0c;它实际上是把弹窗内容与显示方式、按钮列表、分离。实现起来非常简单。如下 1.调用静态方法创建弹窗控制器 alertControllerWithTitle 声明弹窗控…

IOS 单行文本输入框 UITextField 使用

UITextField 继承 UIControl 类&#xff0c;只支持单行输入和显示&#xff0c;可输入密码类型。支持实现代理 UITextFieldDelegate 属性 名称类型说明默认值textNSString文本输入值textColorUIColor文本颜色UIFontUIFont文本大小textAlignmentNSTextAlignment文本方向NSLeftTe…

OC 中NSString与NSString 的比较

OC 中 字符串是一个对象&#xff0c;所以不能使用 进行比较是否相等。因为两个字符串的内存地址可能不一样&#xff0c;但是内容一样。所以我们要使用其他方法进行比较运算。 isEqualToString if (["2121" isEqualToString:"2121"]) {NSLog("一致&q…