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

SQL - 进阶语法(二)约束

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.kler.cn/a/320134.html

相关文章:

  • 15. 三数之和【力扣】--三指针
  • Vue3 Element-Plus el-tree 右键菜单组件
  • nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控
  • ImageSharp图形库学习
  • 【Rust练习】28.use and pub
  • Docker 镜像制作原理 做一个自己的docker镜像
  • linux----进程地址空间
  • 【读写分离?聊聊Mysql多数据源实现读写分离的几种方案】
  • keepalived+lvs集群,实现高可用
  • 初识Jenkins持续集成系统
  • 《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)
  • SSH 远程连接到 Linux 服务器上的 SQLite
  • 数据结构——广义表
  • uni-app+vue3微信小程序怎么获取 this.getTabBar()
  • 计算机网络(九) —— Tcp协议详解
  • Redisson分布式锁的概念和使用
  • Github 2024-09-25 C开源项目日报 Top9
  • Visual Studio Code的常用快捷键
  • 微服务3:微服务间接口远程调用(同步通信方式)
  • Git从了解到操作
  • layer弹层组件全面使用说明
  • 重修设计模式-概览
  • Springboot使用内置对象HttpServletRequest、HttpServletResponse
  • mysql查询某个库下所有表的数据量
  • 【深度学习】03-神经网络 5 (完结篇) 一文讲解 pytroch手机价格神经网络分类与准确率优化案例
  • 【nrm】npm 注册表管理器