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

MySQL表操作及约束

修改表

重命名:

mysql> alter table user1 rename to user;

 新增一列

mysql> alter table user add image_path varchar(128) comment '路径' after birthday;

mysql> alter table user add image_path varchar(128) comment '路径' after birthday;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+--------+----------+------------+------------+
| id   | name   | password | birthday   | image_path |
+------+--------+----------+------------+------------+
|    1 | 张三   | 123456   | 2020-01-01 | NULL       |
+------+--------+----------+------------+------------+

查看建表语句

mysql> show create table user \G

修改列中的属性

mysql> alter table user modify name varchar(60);

会把之前的注释覆盖,增长对姓名没有影响。

删除一列。

alter table users drop password;

修改表名

alter table users rename to employee;

修改行的名字

mysql> alter table employee change name xingming varchar(60); --新字段需要完整
定义

 约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合 法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。

 not null  非空

mysql> create table myclass(
   -> class_name varchar(20) not null,
   -> class_room varchar(10) not null);

 前两列初识化时必须有值否则会发生报错

默认约束  default

插入时不指定会使用默认设定的值。

没有指定列,也没有指定default就会报错。

mysql> desc test;
+--------+------------------+------+-----+---------+-------+
| Field  | Type             | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| name   | varchar(20)      | NO   |     | NULL    |       |
| age    | tinyint unsigned | YES  |     | 18      |       |
| gender | char(1)          | YES  |     | 男      |       |
+--------+------------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

default 和 notnull是相互补充的。

MySQL会优化default

设了notnull后MySQL就不会加default了。

列描述

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA 来进行了解

Create Table: CREATE TABLE `user` (
  `id` int DEFAULT NULL,
  `name` varchar(60) DEFAULT NULL,
  `password` char(32) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `image_path` varchar(128) DEFAULT NULL COMMENT '路径'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

zerofill

位数不够补0,够了不补。

mysql> select hex(3.14);
+-----------+
| hex(3.14) |
+-----------+
| 3         |
+-----------+
1 row in set (0.00 sec)

hex代表16进制。

主键

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个 主键;主键所在的列通常是整数类型

mysql> desc test_key;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int unsigned | NO   | PRI | NULL    |       |
| name  | varchar(20)  | NO   |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

PRI 表示主键存在。

复合主键

mysql> create table tt14(
-> id int unsigned,
-> course char(10) comment '课程代码',
-> score tinyint unsigned default 60 comment '成绩',
-> primary key(id, course) -- id和course为复合主键
-> );


http://www.kler.cn/a/294053.html

相关文章:

  • 深度学习之 LSTM
  • RoseTTAFold MSA_emb类解读
  • 应对JSON解析键值对乱序问题的实用解决方案
  • 无人机动力测试台如何快速外接第三方传感器
  • 数学建模模型算法-Python实现
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持
  • Java面试题-JavaEE框架中间件(二)
  • 基于Linux单片机的中心网关设计:实时监控传感器数据的触控屏可视化详细流程
  • Python的math库——常用数学函数全解析
  • 【软件测试】设计测试用例
  • 哈希算法是什么?
  • 四战搜索,抖音难造“百度”
  • 【Springboot系列】SpringBoot如何优雅地实现一个错误异常捕捉
  • 基于FPGA的开源项目:FOC/SHA/USB/JPEG等
  • 如何使用 Java Stream API 优化数据处理
  • 分类预测|基于粒子群优化轻量级梯度提升机算法数据预测Matlab程序PSO-LightGBM 多特征输入多类别输出
  • 基于WhatsApp打造高效的CRM系统
  • day-50 求出最长好子序列 I
  • PyTorch 全连接层(Fully Connected Layer)详解
  • 【开源免费】基于SpringBoot+Vue.JS高校校园招聘服务系统(JAVA毕业设计)
  • JAVA开源项目 图书个性化推荐系统 计算机毕业设计
  • 2024年全国大学生数学建模A题借鉴论文
  • java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)
  • Azure和Transformers的详细解释
  • uni-app填坑指南——解决处理处理静态资源的问题