MySql设置唯一标识主键等设置

2023-11-17

建立表

create table user_score( 
name char(10) not null default “”, 
score smallint not null default 0 
);

增加一列

alter table user_score add column id smallint after name; ( 不要引号) 
alter table user_score add column idea smallint;

主键&唯一键

  • 主键不能为空 唯一键可以为空
  • 主键only能有一个 唯一键可以有多个
  • 主键可以多个列和并起来作为一个 唯一键不行

//在数据库表中 只有设置一个int类型的字段为主键,才可以设这个字段为标识列,标识列的作用就是一个可以自动增长的数字,如消息id,唯一并且不重复,是消息唯一标识

设置主键

alter table user_score add primary key(id);

删除主键需要两步.

  1. 如果有auto_increment,先删除之; alter table user_score change id id int;
  2. 删除主键约束 primary key. alter table user_score drop primary key;

设置唯一约束

alter table user_score add column idea smallint auto_increment;// error一个表只能有一个自增列. 
alter table user_score add column idea smallint default 0 unique; // 不好,这样往里面加数据的时候,如果不指定输入新加入的这一列,他就会被置为0,再加一个不指定的就会报错了 
alter table user_score add unique(name); 
//取消某一列的唯一约束 
alter table user_score drop index idea;

设置某一列自增

  1. 设置它为主键 alter table user_score add primary key(id);
  2. 修改它为自增 alter table user_score change id id smallint auto_increment;
    tip: 因为自增默认值是1,所以如果此前已经有值为1的数据,那么会报错。当设置那个值为非1的值保证该列没有值为1后,设置自增才会成功,且他会把原来的都从1开始更新一遍。

//取消自增

alter table user_score modify column id int;

//修改自增初始值

alter table user_score auto_increment = 2;

MySQL 每张表只能有1个自动增长字段,这个自动增长字段即可作为主键,也可以用作非主键使用,但是请注意将自动增长字段当做非主键使用时必须必须为设置为一种“键(key)”(没有插入成功,但是自增长序列,还是会用一次增长)。主键(primary key)是键(key)的一种,key还包括外键(foreign key)、唯一键(unique key)等1. 将自动增长字段设置为主键。

  1. create table t1 (id int auto_increment Primary key,sid int);
  2. 将自动增长字段设置为非主键,注意必须显式添加Unique键。
    create table t2 (sid int primary key,id int auto_increment Unique);
  3. 将自动增长字段设置为非主键如果未添加唯一索引将会报错**,如下面语句
    create table t3 (sid int primary key,id int auto_increment)。

设置某一列的默认值

  1. 若本身已经有默认值,先删除默认值
    alter table user_score alter score drop default;
  2. 设置默值
    alter table user_score alter score set default 60;

关于change modify alter的使用

假如我们现在有一张表

在这里插入图片描述
要改成:
在这里插入图片描述
用一条ALTER语句实现:

ALTER TABLE hooptie
RENAME TO car_table,
ADD COLUMN car_id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY(car_id),
ADD COLUMN VIN VARCHAR(16)AFTER car_id,
CHANGE COLUMN mo model VARCHAR(20),
MODIFY COLUMN color AFTER model,
MODIFY COLUMN year SIXTH,
CHANGE COLUMN howmuch price DECIMAL(7,2);

CHANGE: 如果我们不只是修改单一列,而是用一条语句改变两个列,我们需要修改列的名称,同时更改他们的数据类型,这时就需要我们用到关键字CHANGE,可以在一条语句中放入多个CHANGE,在中间加上分隔的逗号即可。

比如原来的表两列,类型为VARCHAR(50),和VARCHAR(10),现在不止要更改列名,还要更改这两列的类型。
在这里插入图片描述

ALTER TABLE project_list
CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100),
CHANGE COLUMN contractoronjob con_name VARCHAR(30);

MODIFY: 使用它可以只修改列的类型而不会干涉它的名称,假设要把proj_desc列的字符长度修改为VARCHAR(120)以容纳更多的说明文字,只要这么做就可以。

ALTER TABLE project_list
MODIFY COLUMN proj_desc VACHAR(120);
#proj_desc是要修改的列名,VARCHAR(120)是新的数据类型
总结如下
  • 既更改列名也更改类型,用CHANGE
  • 只修改类型,用MODIFY
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySql设置唯一标识主键等设置 的相关文章

  • MySQL 如何使用返回多行的 SELECT 子查询插入表?

    MySQL 如何使用返回多行的 SELECT 子查询插入表 INSERT INTO Results People names VALUES SELECT d id FROM Names f JOIN People d ON d id f i
  • Mysql 连接到服务器:用户 root@localhost 的访问被拒绝

    edit9 是否有可能我只是缺少文件夹的一些权限 我真的非常非常感谢更多的建议 edit3 由于这篇文章没有得到足够的回复 而且这绝对是至关重要的 我尽快完成这件事 我重建了我的帖子以显示我认为到目前为止我已经扣除的内容 注意 通过许多不同
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • 未找到教义列:1054“字段列表”中未知列“s.features”

    我在站点表中添加了一个新列 features 并使用 Doctrine 重新生成了模型 此代码导致错误 siteTable Doctrine Core getTable Site site siteTable gt findOneByNam
  • Mysql案例不工作

    SELECT SQL CALC FOUND ROWS a zn name AS zone name c name AS carrier name CASE type WHEN type 1 THEN General day ELSE Spe
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 解析错误:语法错误,意外的“”(T_ENCAPSED_AND_WHITESPACE)[重复]

    这个问题在这里已经有答案了 完整错误 解析错误 语法错误 意外的 T ENCAPSED AND WHITESPACE 需要标识符 T STRING 或 变量 T VARIABLE 或数字 T NUM STRING 它说错误出现在第 12 行
  • 如何备份整个MySQL数据库的所有用户、权限和密码?

    我需要备份整个 MySQL 数据库 其中包含所有用户及其权限和密码的信息 我看到选项http www igvita com 2007 10 10 hands on mysql backup migration http www igvita
  • docker-compose mysql 容器拒绝访问 wordpress 容器

    我遇到 mysql 5 7 容器拒绝访问 wordpress 容器的问题 我正在使用 docker compose 并且在 Mac OSX 上运行 docker Docker 应该是可用的最新版本 这是我的 docker compose y
  • MyISAM 方言生成错误的 DDL

    我们使用 MyISAM 方言org hibernate dialect MySQLMyISAMDialect使用JPA2自动生成DDL文件3 6 9 FinalMySQL 5 5 数据库上的 hibernate 提供程序 The creat
  • 将数据从 MS SQL 导入 MySQL

    我想从 MS SQL Server 导入数据 通过某种正则表达式运行它以过滤掉内容 然后将其导入 MySQL 然后 对于每个查询 我希望显示来自第三个数据库的相关图像 明智地导入和链接 最简单的方法是什么 谢谢 澄清 它是一个 PHP 应用
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • mysqli_stmt_bind_result 的奇怪问题

    好吧 这让我很烦恼 我似乎在 PHP 文档中找不到任何内容 在 Google resultosphere 中也找不到任何内容 所以也许有人可以在这里提供帮助 我正在使用准备好的语句 绑定结果 然后使用这些绑定结果来填充下拉列表 例子
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • Java MYSQL/JDBC 查询从缓存的连接返回过时的数据

    我一直在 Stackoverflow 中寻找答案 但似乎找不到不涉及 Hibernate 或其他数据库包装器的答案 我直接通过 Tomcat 6 Java EE 应用程序中的 MYSQL 5 18 JDBC 驱动程序使用 JDBC 我正在缓
  • 是否可以在MYSQL中动态选择列名,其中列名是N个已知值中的1?

    我担心答案会是直接的 不 但我想知道是否可以在 MySQL 中执行如下操作 SELECT title label name FROM table 即选择单个列 可以称为title label or name from table 原因是 查

随机推荐

  • 搭建OpenGL开发环境

    资料 安装教程 软件下载 Visual Studio 2019 CMake GLFW GLAD glfw 3 3 8 下载glfw的目的 获取压缩包里的include 生成glfw3 lib 获取include 解压找到Include in
  • shader学习笔记一:shader运行原理及uniform关键字

    shader运行原理 首先 opengl api函数输入一些数据 包括顶点数据 纹理数据 矩阵变换数据 这些顶点数据到 顶点处理阶段 顶点处理阶段 图形流水线会调用 vertex shader 顶点shader 对顶点进行处理 有多少个顶点
  • QT 5.12.9 +VS 2019配置并实现与三菱Q系列PLC通讯(2)实现通讯

    QT 5 12 9 VS 2019配置并实现与三菱Q系列PLC通讯功能 1 软件的安装 之前已经完成了软件的安装 接下来要通过MX Component去实现PLC的直连功能 首先 打开VS2019 新建项目 搜索qt 在出来的内容中选择QT
  • Feign 中的继承、日志与数据压缩

    上篇文章和大家分享了声明式微服务调用组件 Feign 的基本用法 相信大家已经了解到使用 Feign 的好处了 使用 Feign 有效地解决了使用 RestTemplate 时的代码模板化的问题 使服务之间的调用更加简单方便 同时也不易出错
  • tk.mybatis默认insert方法,使用@GeneratedValue无效的坑,提示id不能为null

    坑了一小时 试了各种配置 最后发现 是数据库没有为ID设置自增 记录一下
  • android延迟自动跳转,Android实现倒计时跳转和延时操作

    App启动页倒计时3秒跳转到App的首页 这种操作在很多App中都很常见 如果需要做一个延时操作呢 写一个子线程停留3秒然后执行操作 这样的话需要特别的注意的是UI操作必须放在主线程里 那么还需要转化成主线程 NO 使用Handler轻松实
  • 计算机网络拓扑结构详解

    计算机网络拓扑结构是指网络中通信线路和设备的分布情况以及连接状态所形成的物理布局 网络拓扑结构主要包括 总线型拓扑结构 星型拓扑结构 环型拓扑结构 树型拓扑结构 网状拓扑结构 混合型拓扑结构 1 总线型拓扑结构 释义 采用一条公共总线将所有
  • CTF_Misc题目分析2_linux系统密码

    CTF Misc题目分析2 linux系统密码 引入 John the Ripper John the Ripper 是一个快速的密码破解工具 用于在已知密文的情况下尝试破解出明文的破解密码软件 支持大多数的加密算法 主要目的是破解不够牢固
  • 2023华为od机试统一考试B卷Java【稀疏矩阵】

    前言 本题使用Java解答 如果需要Python代码 请参考以下链接 点我 题目描述 稀疏矩阵的定义是 矩阵中有很多系数都是 0 现在我们有一个矩阵 我们进行逐行逐列扫描 在扫描的过程中 如果某一行或者某一列内 如果 0 的个数超过了当前的
  • python文件操作与异常处理

    一 文件操作 内建函数open 能够打开一个指定路径下的文件 返回一个文件对象 open的两个参数 第一个参数是文件名 第二个是打开方式 r w a b 依次表示读 写 追加写 二进制 1 内建函数 包含在 buildings 这个模块中的
  • 什么是数字化管理

    问题 什么是数字化管理 数字化管理是什么意思 数字化管理是指利用计算机 通信 网络 人工智能等技术 量化管理对象与管理行为 实现计划 组织 协调 服务 创新等职能的管理活动和管理方法的总称 数字化管理的本质就是将现代化管理思想 管理方法 管
  • JS String 字符串方法

    1 charAt 方法从一个字符串中返回指定的字符 var anyString Brave new world console log anyString charAt 0 B console log anyString charAt 1
  • 移动端自动化测试实战

    UI自动化测试的价值 1 提升回归测试的效率 2 可以进行兼容性测试 UI 自动化测试应用场景 冒烟测试自动化 提测之前自动断言提测质量 提供准入参考 功能测试自动化 辅助 QA 与测试工程师的快速验证 验收测试自动化 兼容性测试等 移动端
  • Markdown 语法完全指南

    这里写目录标题 简介 1 标题 2 段落和换行 3 文本样式 粗体和斜体 删除线和代码 嵌套标记 4 链接 内联链接 引用链接 5 列表 无序列表 有序列表 嵌套列表 任务列表 6 引用块 7 插入图片 8 水平线 9 代码块 10 表格
  • MySQL 的优化方案总结

    性能优化 Optimize 指的是在保证系统正确性的前提下 能够更快速响应请求的一种手段 而且有些性能问题 比如慢查询等 如果积累到一定的程度或者是遇到急速上升的并发请求之后 会导致严重的后果 轻则造成服务繁忙 重则导致应用不可用 它对我们
  • 如何使用命令实现在达梦数据库里修改表的某个字段

    达梦数据库里当字段长度太小的时候 在应用程序里会出现这样的报错 列 XXXX 长度超出定义 说明当前要存储的内容跟设定的字段长度是不匹配的 很明显这样的问题是要调整字段长度的的 定位到列所在的表 就可以通过达梦sql脚本去修改这个字段的长度
  • 【Xilinx】Spartan 7上手指南(ARTY S7开发板)

    Spartan 7上手指南 一 安装board文件 1 下载并解压板卡压缩文件 2 复制到Vivado安装目录 二 demo工程 1 下载demo 2 修改tcl 3 恢复工程 4 生成bit 三 调试运行 1 连接电脑 2 设置串口 3
  • 分布式应用:Zabbix 自动发现与自动注册

    目录 一 理论 1 Zabbix 自动发现 2 Zabbix 自动发现部署 3 Zabbix 自动注册 4 Zabbix 自动注册部署 二 实验 1 Zabbix 自动发现部署 2 Zabbix 自动注册部署 三 总结 一 理论 1 Zab
  • 浅谈前端单元测试

    首先声明一点 长期以来 前端开发的单元测试并不是在前端的开发过程中所必须的 也不是每个前端开发工程师所注意和重视的 甚至扩大到软件开发过程中单元测试这一环也不是在章程上有书面规定所要求的 但是随着每个工程的复杂化 代码的高复用性要求和前端代
  • MySql设置唯一标识主键等设置

    建立表 create table user score name char 10 not null default score smallint not null default 0 增加一列 alter table user score