SQL - 进阶语法(二)约束

news2024/9/22 13:02:06

1. SQL约束

约束用于约束表中的数据规则,如若存在违反行为,行为会被约束终止。

• NOT NULL

确保列不能有NULL值

如果添加一行新的数据,不能有null值,否则无法添加

新建表格

CREATE TABLE new_table(
ID int NOT NULL,
NAME varchar(255) NOT NULL
);

修改

ALERT TABLE new_table
MODEIFY ID int NULL/NOT NULL;

• UNIQUE

确保列中所有值都是唯一

在所设定UNIQUE约束的列中不能含有重复值,但可以是NULL值

新建表格

CREATE TABLE new_table(
ID int NOT NULL UNIQUE,
LastName VARCHAR(255) NOT NULL
);

修改

ALERT TABLE new_table
ADD UNIQUE (ID); //添加
DROP INDEX ID; //删除

• PRIMARY KEY

唯一标识记录,相当于UNIQUE与NULL的结合

每一个表只能有一个PRIMARY KEY,可以由单个列或者多个列组成

表格创建

CREATE TABLE new_tabel
(
ID INT NOT NULL PRIMARY KEY | ID INT, PRIMARY KEY(ID)
LastName varchar(255)
);

多列约束

CREATE TABLE new_table
(
CONSTRAINT PERSONID PRIMARY KEY (ID,LastName)
);

修改&删除

ALERT TABLE new_table
DROP PRIMARY KEY column1;
ALERT TABLE new_table
DROP CONSTRAINT PERSONID;

• FOREIGN KEY

建立两表之间的关系

一个表中的FOREIGN KEY连接着另一个表中的UNIQUE KEY

- 预防破坏表之间的连接行为

- 防止非法数据插入外键列

新建表格

CREATE TABLE new_table(
FOREIGN KEY id REFREENCES old_table(ID) //连接old_table表中ID主键
)
CREATE TABLE new_table(
Id INT FOREIGN KEY REFERENCES old_table(name)
);

修改

ALERT TABLE
ADD FOREIGN KEY (ID)
REFERENCES old_table(name);
ALERT TABLE new_table
DROP FOREIGN KEY ID;

• CHECK

确保列中的值满足特定的条件,限制值的范围

新建表格

CREATE TABLE new_table
(
ID INT NOT NULL,
CHECK (ID > 0)
);
CREATE TABLE new_table
(
ID INT CHECK (ID>0)
);

修改&删除

ALERT TABLE new_table
ADD CHECK (ID>0);
ALERT TABLE new_table
DROP CHECK ID;

• DEFAULT

设置默认值,新创建的数据没有规定值,则会填充默认值

新建表格

CREATE TABLE new_table
(
ID INT NOT NULL,
NAME VARCHAR(255) DEFAULT ‘LOUIS’
);

修改

ALERT TABLE new_table
ALTER NAME DROP DEFAULT;

• INDEX

用于快速访问数据库表中的数据

CREATE INDEX index_name
ON table_name (column_name);

2. SQL删除数据

•删除索引

DROP INDEX index_name ON table_name;

•删除表格

DROP TABLE table_name;

•删除数据库

DROP DATABASE database_name;

删除表中数据,但表仍然存在

TRUNCATE TABLE table_name;

3. 操作表中数据

ALERT对表中列进行操作

3.1 增加列

ALERT TABLE table_name
ADD column_name datatype;

3.2 删除列

ALTER TABLE table_name
DROP COLUMN column_name;

3.3 修改数据约束

ALTER TABLE table_name
ALERT/MODIFY COLUMN column_name datatype; 

4. 自动索引 AUTO INCREMENT

新纪录插入表中时,自动创建主键的值

在这里只讲述MySql中的用法

CREATE TABLE new_table
(
ID INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(255)
);

默认值为1

自行设置默认值

ALERT TABLE new_table
AUTO_INCREMENT = 100;
INSERT INTO new_table (Name)
VALUES (‘LOUIS’); //插入新值,索引+1

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

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

相关文章

梯形区域分解实现避障路径规划全覆盖路径规划

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言(1)功能(2)算法(3)参考链接(4)…

【服务器第二期】mobaxterm软件下载及连接

【服务器第二期】mobaxterm软件下载及连接 前言什么是SSH什么是FTP/SFTP mobaxterm软件介绍mobaxterm软件下载SSH登录使用方法1-新建ssh连接方法2-打开已有的ssh连接方法3-通过ssh命令建立连接 SFTP数据传输方法1-建立ssh连接后直接拖拽方法2-建立sftp连接再拖拽方法3-直接使用…

Nacos配置管理(2)-----配置热更新

有很多的业务相关参数,将来可能会根据实际情况临时调整。例如购物车业务,购物车数量有一个上限,默认是10,对应代码如下: 现在这里购物车是写死的固定值,我们应该将其配置在配置文件中,方便后期…

while(cin>>a)

while(cin>>a)要结束输入CTRLZ换行 输入先调用: istream& operator>> (istream& is, string& str); 但返回值类型时istream, 再调用: 重载的原为(bool)istream,返回值为bool,重载的为括号&#xff0c…

若依前后端分离版项目电子证书查询系统部署到Linux生产环境

项目背景:这个项目之前是PHP语言开发的,采用MVC混编的,前端用Layui框架后端用ThinkPHP8.0框架。客户要求给改成Java语言的,就选用了若依前后端分离低代码版。本地开发调试没有问题,就记录下整个项目上线过程。 服务器背…

How can I stream a response from LangChain‘s OpenAI using Flask API?

题意:怎样在 Flask API 中使用 LangChain 的 OpenAI 模型流式传输响应 问题背景: I am using Python Flask app for chat over data. In the console I am getting streamable response directly from the OpenAI since I can enable streming with a f…

Go语言基础学习02-命令源码文件;库源码文件;类型推断;变量重声明

命令源码文件 GOPATH指向的一个或者多个工作区,每个工作区都会有以代码包为基本组织形式的源码文件。 Go语言中源码文件可以分为三类:命令源码文件、库源码文件、测试源码文件。 命令源码文件: 命令源码文件是程序的运行入口,是每…

k8s技术

---------------第一部分---------------------- 一.应用部署方式 1.传统部署:直接部署在物理机上,简单但是耗资 2.虚拟化部署:一台物理机上面有多个虚拟机,提供了虚拟机间一定的安全,但是增加了操作系统,…

【C++】STL----deque

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:C从小白到高手 🌹往期回顾🌹:【C】STL----stack和queue常见用法 🔖 流水不争,争的是滔滔不息。 文章目录 一…

某花顺爬虫逆向分析

目标网站: aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v 一、抓包分析 携带了cookie,每次请求的cookie都不一样,且不携带cookie不能成功返回数据 hook Cookie代码 _cookie document.cookie Object.defineProperty(document, cookie, {get(){con…

前端框架的选择和对比

前端框架的选择取决于项目的具体需求、团队的技术栈以及长期的技术规划。以下是几个主流前端框架的对比和选择建议: 1. React 特点: 由Facebook开发,基于组件化的设计思想,使用JSX语法,数据流单向,生态系统丰富。适用…

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对的问题 解决办法 出现 Oracle Library is not loaded 错误提示,通常是因为 Navicat 无法找到或加载 Oracle 客户端库(OCI.dll)。要解决这个问题&#x…

解释器模式:将语法规则与执行逻辑解耦

解释器模式(Interpreter Pattern)是一种行为设计模式,它提供了评估语言的语法或表达式的方式。该模式通过定义一个语言的文法表示,并通过解释这些表示来执行相应的操作。 解释器模式主要用于设计一种特定类型的计算机语言或表达式…

openEuler系统安装内网穿透工具实现其他设备公网环境远程ssh连接

目录 前言 1. 本地SSH连接测试 2. openEuler安装Cpolar 3. 配置 SSH公网地址 4. 公网远程SSH连接 5. 固定连接SSH公网地址 6. SSH固定地址连接测试 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊openEuler系统安装内网穿透工具实现其他…

3D生成技术再创新高:VAST发布Tripo 2.0,提升AI 3D生成新高度

随着《黑神话悟空》的爆火,3D游戏背后的AI 3D生成技术也逐渐受到更多的关注。虽然3D大模型的热度相较于语言模型和视频生成技术稍逊一筹,但全球的3D大模型玩家们却从未放慢脚步。无论是a16z支持的Yellow,还是李飞飞创立的World Labs&#xff…

通过FUXA在ARMxy边缘计算网关上实现生产优化

在当今工业4.0时代,智能制造的需求日益增长,企业迫切需要通过数字化转型来提高生产效率、降低成本并增强市场竞争力。ARMxy系列的BL340工业级ARM控制器,凭借其强大的处理能力和灵活的配置选项,成为实现生产优化的重要基础。 一、…

【MySQL】—— mysqlcheck表维护程序

目录 (一)作用 (二)使用方法 (三)常用选项 (四)注意事项 (五)mysqlcheck的特殊说明 (一)作用 mysqlcheck 是 MySQL 数据库系统的一…

LeetcodeLCR 116. 省份数量

文章目录 题目原题链接思路 题目 原题链接 LCR 116. 省份数量 思路 利用并查集的思想,将连接的诚实放在一个集合当中,最后遍历并查集数组判断有几颗树 初始化一个并查集;将连通的城市合并;统计并查集中树的个数; C代…

2024.9.16 - 2024.9.22组会报告

通信延迟下车辆协同感知的3D目标检测方法 计算机工程与应用学报 论文要解决什么问题? 车辆协同感知 3D 目标检测在通信延迟条件下精度较低,所以论文想要降低通信延迟对协同感知精度的影响。 论文提出了什么方法? 一种通信延迟下车辆协同…

基于javassm课程实验教学系统设计

开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…