mysql表的约束问题

目录

1. 表的约束问题:

主键约束:

案例:

非空约束

唯一约束:

默认值约束:

案例:

2.表的结构


前提:接上一张博客内容经行操作

1. 表的约束问题:

        用来保证数据插入的安全性、完整性、正确性
                主健,外键,唯一,默认值,非空,检查

1.1 主键约束:

一旦某个字段被主键约束修饰,该字段就是主键字段      #  primary key

        1、该字段的值不允许重复

        2、该字段不能为空

该字段就是用来保证唯一的

        auto_increment    # 自增    默认每次一

1.1.1 案例:

mysql> drop table if exists t_user;      # 删除表

mysql> delete from t_user;          # 清空表数据
Query OK, 5 rows affected (0.00 sec)
mysql> create table t_user (id int primary key, name varchar(225), age int);  #增加为主键

mysql> show tables;
+-----------------+
| Tables_in_db_hj |
+-----------------+
| t_user          |
+-----------------+
1 row in set (0.00 sec)

mysql> create table t_user (id int primary key  auto_increment, name varchar(225), age int);                                           # auto_increment  自增长的整数类型
Query OK, 0 rows affected (0.02 sec)   

mysql> create table t_user (id int primary key(id) auto_increment , name varchar(225), age int, );                  

mysql> create table t_user (id int auto_increment, name varchar(225), age int, primary key(id));               # 还可以写为:

mysql> desc t_user;             # 查看表 t_user 的结构信息

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
| age   | int          | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> insert into t_user values(null , "SJ", 16);
Query OK, 1 row affected (0.01 sec)      # 对表t_user添加元素(默认, "SJ", 16)

mysql> select * from t_user;                # 查看表t_user

+----+------+------+
| id | name | age  |
+----+------+------+
|  2 | SJT  |   16 |
|  3 | SJ   |   16 |
+----+------+------+
2 rows in set (0.00 sec)

mysql> insert into t_user values(null , "SJT", 16);        # 给表中添加元素

Query OK, 1 row affected (0.00 sec)

mysql> select * from t_user;         # 查看此时表中内容

+----+------+------+
| id | name | age  |
+----+------+------+
|  2 | SJT  |   16 |
|  3 | SJ   |   16 |
|  4 | SJT  |   16 |
+----+------+------+
3 rows in set (0.00 sec)

         当主键完成自增后,即使报错,下一次执行命令成功时,主机依然会在报错后发生自增,具体解释,如图:

1.2 非空约束

        是否允许某些字段为空!!!                # not null

1.3 唯一约束:

        表示字段不能出现重复值! ! !                # unique    (8,0以下的版本也不会报错,但也不会使用)

1.4 默认值约束:

        默认给定一个值                                   # check (gender in("男",“女))

1.4.1 案例:

mysql> insert into t_user values(null, null, 16);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t_user;

+----+------+------+
| id | name | age  |
+----+------+------+
|  2 | SJT  |   16 |
|  3 | SJ   |   16 |
|  4 | SJT  |   16 |
|  5 | NULL |   16 |
+----+------+------+
4 rows in set (0.00 sec)

mysql> insert into t_user values(null, "ldh", 16);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_user;

+----+------+------+
| id | name | age  |
+----+------+------+
|  2 | SJT  |   16 |
|  3 | SJ   |   16 |
|  4 | SJT  |   16 |
|  5 | NULL |   16 |
|  6 | ldh  |   16 |
+----+------+------+
5 rows in set (0.01 sec)

mysql> drop table if exists t_user;
Query OK, 0 rows affected (0.01 sec)
 

创建表:

CREATE TABLE IF NOT EXISTS t_user(

        id int primary key auto_increment,

        name varchar(50) not null unique,

        nickname varchar(255) unique,

        age int default 18,

        gender varchar(10) check (gender in("男",“女))

);

插入数据-insert:
insert into table name[(id,name, .....)] values ( )

insert into table 表名字[(表的字段,。。。)]  values (对应制表时的,规则顺序)

mysql> insert into t_user values(null, "liudehua" , "天王", 58, "男");     # 正确

insert into t_user  values(default,"liming""小白脸",56,"男") ;            # 正确

insert into t_user value(null, "quofucheng","舞王",  default, "女");   # 错误

insert into t_user (name, nickname, gender) values("zxy", "歌神","错的"); 

具体执行时代码:

mysql> insert into t_user values(null, "liudehua" , "天王", 58, "男");
mysql> insert into t_user values(default, "liming", "小白脸", 56, "男");
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_user values(null, "guofucheng", "舞王", default, "女");
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_user;

+----+------------+-----------+------+--------+
| id | name       | nickname  | age  | gender |
+----+------------+-----------+------+--------+
|  1 | liudehua   | 天王      |   58 | 男     |
|  2 | liming     | 小白脸    |   56 | 男     |
|  3 | guofucheng | 舞王      |   18 | 女     |
+----+------------+-----------+------+--------+
3 rows in set (0.01 sec)

2.表的结构

表的结构:

第一次使用表结构,是在创建表的时候,制定了对应表的结构

        alter table xxxx

新增字段:

        ALTER TABLE 表名 ADD 列名列类型[约束条件];
        alter table t user add test text default "呵呵呵“

修改字段的类型:

        ALTER TABLE 名 modify 列名列类型[约束条件];

        alter table t user add test varchar();

修改字段名称:

        ALTER TABLE 表名 change 日列名 新的列表名   列类型[约束条件];

删除字段:

        alter  table 表名称 drop 字段名称;

修改表名称:

        ALTER TABLE 表名 RENAME 新表名

        rename table 表名称 to 新表名;

        alter table emp rename employee

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

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

相关文章

设计模式之多线程分工模式--- Thread-Per-Message模式

系列文章目录 设计模式之避免共享的设计模式Immutability(不变性)模式 设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

UL2034详细介绍UL 安全单站和多站一氧化碳报警器标准

在介绍相关标准之前先介绍一下UL认证和UL测试报告的区别,检测认证行业6年老司机 UL认证是自愿性的认证,需要检测产品和审核工厂,每个季度审核一次,费用高、时间久,而且审厂非常的严格。 UL测试报告是根据产品选用相应…

C#学习笔记3-函数与单元测试

现在开始参考书籍变为:《C# 12 and .NET 8 – Modern Cross-Platform Development.Mark Price》 函数 Writing, Debugging, and Testing Functions 写函数Debug运行时 logging单元测试 写函数 一个有着 XML 注释的函数 这里直接举一个例子: Numbe…

使用@Slf4j后引入log,idea标红

引入Slf4j注解 idea标红Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到时,不妨关闭菜单再打开试下

Ceph集群修改主机名

修改主机名 #修改主机名 rootlk02--test:~# hostnamectl set-hostname lk02--test01 #修改hosts rootlk02--test:~# vi /etc/hosts #修改ceph.conf rootlk02--test:~# vi /etc/ceph/ceph.conf rootlk02--test:~# cat /etc/ceph/ceph.conf |grep mon mon host [v2:192.168.3.1…

android自启动

Android 开机自动启动一个Service 附源码_watchdogservice-CSDN博客 执行 adb push 本地地址 目标地址 时遇到错误: adb: error: failed to copy app-release.apk to /system/app/app-release.apk: remote couldnt create file: Read-only file system 解决方案…

【Java数据结构】04-图(Prim,Kruskal,Dijkstra,topo)

5 图 推荐辅助理解 【视频讲解】bilibili Dijkstra Prim 【手动可视化】Algorithm Visualizer (https://algorithm-visualizer.org/) 【手动可视化】Data Structure Visualizations (https://www.cs.usfca.edu/~galles/visualization/Algorithms.ht…

主流操作系统介绍

主流操作系统介绍 Windows:由微软(Microsoft)开发和维护,是个人电脑市场占有率最高的操作系统。目前最新的版本包括Windows 10以及更新的Windows 11。 macOS:苹果公司(Apple Inc.)为Macintosh系…

MathType中文网站2024最新版本下载及嵌入word教程

MathType是一款专业的数学公式编辑器,兼容Office word,excel等700多种程序,用于编辑数学试卷、书籍、报刊、论文、幻灯演示等文档轻松输入各种复杂的数学公式和符号。 MathType是一款功能强大的数学公式编辑器,广泛用于编写和编辑数学公式。Word是微软公司推出的文…

《设计模式的艺术》笔记 - 抽象工厂模式

介绍 提供了一个创建一系列相关或相互依赖的对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 在抽象工厂模式中,每个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品构…

【智慧教室】东胜物联为智慧教室解决方案商提供丰富智能网关硬件产品

随着互联网、物联网技术的发展,各行各业迎来数字化转型的机遇。本文以智慧教室为例,阐述物联网技术对传统教室的影响,智慧教室解决方案的优势等。 智慧教室是指借助物联网技术、信息及互联网技术,将现代科技手段融入教育教学过程中…

设计模式—行为型模式之中介者模式

设计模式—行为型模式之中介者模式 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,减少对象间混乱的依赖关系,从而使其耦合松散,而且可以独立地改变它们之…

【Java SE语法篇】10.String类

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 前言1. String类1.1 字符串的构造1.2 String对象的比…

NLP论文阅读记录 - 2021 | WOS HG-News:基于生成式预训练模型的新闻标题生成

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 HG-News: News Headline Generation Based on a Generative Pre-…

【数位dp】【C++算法】600. 不含连续1的非负整数

作者推荐 【矩阵快速幂】封装类及测试用例及样例 涉及知识点 数位dp LeetCode600. 不含连续1的非负整数 给定一个正整数 n ,请你统计在 [0, n] 范围的非负整数中,有多少个整数的二进制表示中不存在 连续的 1 。 示例 1: 输入: n 5 输出: 5 解释: 下…

刷题 ------ 二分枚举(查找)

文章目录 1.x 的平方根2.第一个错误的版本3.有效的完全平方数4.猜数字大小5.排列硬币6. 寻找比目标字母大的最小字母7. 二分查找8.检查整数以及其两倍数是否存在9. 两个数组间的距离值10.特殊的数组的特征值11.找出数组排序后的目标下标12.和有限的最长子序列13.正整数和负数的…

Day04

今日任务 24.两两交换链表中的节点19.删除链表的倒数第N个节点 160. 链表相交142.环形链表II 24 两两交换链表中的节点 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/ 方法一:遍历实现 思路: 代码&#xff…

Linux/OpenAdmin

Enumeration nmap 用nmap扫描发现目标对外开放了22和80,端口详细信息如下 从nmap的结果看到,是apache的default page,使用工具跑一下目录,看了官 网文档的结果然后写个小字典节约时间,扫描结果如下 On the page at /…

new Handler(getMainLooper())与new Handler()的区别

Handler 在Android中是一种消息处理机制。 new Handler(); 创建handler对象,常用在已经初始化了 Looper 的线程中调用这个构造函数(即非主线程),如果感觉不好理解,可以把Handler handler new Handler() 理解为常用在…

Redis学习指南(11)-Redis的有序集合数据类型介绍

文章目录 特点和用途常用命令插入操作查询操作删除操作 示例总结 Redis的有序集合数据类型是一种高效的数据结构,能够存储多个成员和对应的分值,并能够根据分值进行快速的查找、插入和删除操作。本文将详细介绍Redis的有序集合数据类型,包括其…