Mysql扩展语句和约束方式

news/2024/7/7 16:47:34

一、扩展语句

使用工具Navicat创建表格

create TABLE if not exists carrot(
id int(4) ZEROFILL primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar (50)
);
-------------------------------------------------------------------------------------------
create TABLE if not exists carrot:如果carrot表不存在则创建carrot表
ZEROFIL:自动填充位置,若输入1,则自动补齐为0001
primary key:当前表的主键,主键只能有一个,不能为空
auto_increment:表示该字段可以自增长,默认从1开始,即每条记录会自增1
unique key:唯一性约束。跟主键不同,可以为空,但不能重复

复制表结构

create table 新表名 like 原表名;
#只能复制表结构,不能复制表中数据
例:
create table carrotto like carrot;

复制表数据

insert into 新表名 select * from 原表名;
#两个表的数据结构要一致
例:
insert into carrotto select * from carrot;

完整复制表

create table 新表名 (select * from 原表名);
例:
create table rabbit (select * from carrot);

删除表内数据

1、delete

delete from 表名;
#delete删除是一行一行删除,如果表中有自增长列,
清空所有记录之后,再次添加内容会从原来的记录之后继续自增写入
例子:
delete from carrotto;

2、truncate

truncate table 表名;
truncate是清空表的数据,而且会把表结构重新构建,速度上比delete快,推荐

3、drop

drop table 表名;
删除表,不太推荐

创建临时表

临时表一般用于调试,而且临时表创建之后在表目录当中是不显示的,连接退出之后,临时表会被销毁,而且临时表无法创建外键

create temporary table test (
id int(4) primary key,
name char(10),
sex char(2)
)

insert into test values(1,'张三','男');
select * from test;

二、约束方式

1、主键约束 primary key

用于唯一标识表中的每一行,主键列的值必须是唯一而且不能为空,一个表只能有一个主键。

2、外键约束 foreign key

用于建立表与表之间的关系,一般是和另一张表的主键关联。保证数据引用的完整性。一个表可以有多个外键。

3、非空约束 not null

必须要有一个值。

4、唯一性约束,unique

确保列中的所有值都是唯一的,类似于主键,但是可以为空,而且一个表可以有多个唯一约束。

5、默认值约束,default

在插入表数据时,如果没有定义值,会提供一个默认值。

6、自增约束,auto_increment

每行自动生成一个唯一标识,通常和主键一起使用。

示例

创建主表:
create table student (
card_id int(18) primary key,
stu_name varchar(12) not null,
stu_email varchar(255) unique
);
desc student;

创建从表:
create table class (
stud_id int(11) auto_increment primary key,
address varchar(50) default '地址不详',
card_id int(18) not null,
FOREIGN key (card_id) REFERENCES student (card_id)
);

插入数据:先插入主表,再插入从表
删除数据:先删除主表,再删除从表
若要删除外键:
alter table class drop FOREIGN key class_ibfk_1;
alter table class drop index card_id;

 

若要删除主键:
alter table class drop primary key;

出现如下报错:
报错[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

这是一个自增约束的主键,要先改变他的数据类型,即解除自增约束,之后主键才可以删除

alter table class modify stud_id int(12);
alter table class drop primary key;


http://lihuaxi.xjx100.cn/news/1735730.html

相关文章

【数据挖掘 | 数据预处理】缺失值处理 重复值处理 文本处理 确定不来看看?

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

GO语言,半自动打怪

仅供学习参考,切勿用于商业用途 package mainimport ("fmt""github.com/go-vgo/robotgo""math/rand""time" )const (taskNum 7 )type Task struct {Name stringSleepTime1 intSleepTime2 intFunc func() }fu…

K8S删除资源后一直处于Terminating状态无法删除解决方法

原因 使用kubectl delete 删除某命名空间是一直处于Terminating状态无法删除,首先排查了该命名空间下是否还存在deployment pod等资源发现没有后,等了很久还是无法删除后发现是因为该名称空间的“finalizers”字段有值导致 Finalizer(终结器…

MySQL - 为什么需要 redo log?

为什么需要 redo log?: 数据恢复与一致性: Redo日志是数据库的事务日志,用于记录事务操作的细节,包括插入、更新和删除等。它确保了数据的持久性,即使在数据库发生崩溃或异常重启后,可以使用Re…

SpringMVC Day 06 : 转发视图

前言 在SpringMVC框架中,视图解析器可以将逻辑视图名称转换为实际的视图对象。除了直接渲染视图,你还可以通过SpringMVC提供的转发和重定向机制来跳转到另一个视图。在本篇博客中,我们将学习SpringMVC中的转发视图技术,以及如何使…

昂利康-002940 三季报分析(20231030)

昂利康-002940 基本面分析 基本情况 公司名称:浙江昂利康制药股份有限公司 A股简称:昂利康 成立日期:2001-12-30 上市日期:2018-10-23 所属行业:医药制造业 周期性:0 主营业务:化学原料药及制剂…

【机器学习】一、机器学习概述与模型的评估、选择

机器学习简介 由来 阿瑟.萨缪尔Arthur Samuel,1952年研制了一个具有自学习能力的西洋跳棋程序,1956年应约翰.麦卡锡John McCarthy(人工智能之父)之邀,在标志着人工智能学科诞生的达特茅斯会议上介绍这项工作。他发明了“机器学习…

大模型LLMs 部分常见面试题答案-进阶面

题库来源:GitHub - km1994/LLMs_interview_notes: 该仓库主要记录 大模型(LLMs) 算法工程师相关的面试题 目录 什么是 LLMs 复读机问题? 为什么会出现 LLMs 复读机问题? 如何缓解 LLMs 复读机问题? LL…