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

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.lryc.cn/news/431714.html

相关文章:

  • Redis 键值对操作全攻略
  • 【C语言】---- return的作用
  • 如何制作新生资料收集系统?
  • pyecharts可视化数据大屏
  • uniapp - H5 在 UC 浏览器中返回上一页失效的解决方案
  • 利用KMeans重新计算自己数据集的anchor
  • 分类任务实现模型集成代码模版
  • 从Milvus迁移DashVector
  • 彻底改变计算机视觉的 Vision Transformer (ViT) 综合指南(视觉转换器终极指南)
  • vue3 v-bind=“$attrs“ 的一些理解,透传 Attributes相关说明及事例说明
  • 鸿蒙开发基础知识-页面布局【第四篇】
  • 用CSS实现前端响应式布局
  • 【docker】docker启动sqlserver
  • Python爬虫01
  • 关于vue项目启动报错Error: error:0308010C:digital envelope routines::unsupported
  • 随笔1:数学建模与数值计算
  • SDN架构详解
  • platform框架
  • 零成本搞定静态博客——十分钟安装hugo与主题
  • windows C++ 并行编程-转换使用取消的 OpenMP 循环以使用并发运行时
  • 经验笔记:跨站脚本攻击(Cross-Site Scripting,简称XSS)
  • 演示:基于WPF的DrawingVisual和谷歌地图瓦片开发的地图(完全独立不依赖第三方库)
  • 【C++】static作用总结
  • 视频提取字幕的软件有哪些?高效转录用这些
  • (4)SVG-path中的椭圆弧A(绝对)或a(相对)
  • docker国内镜像源报错解决方案
  • 《C++进阶之路:探寻预处理宏的替代方案》
  • 【综合案例】使用鸿蒙编写掘金评论列表案例
  • 【springboot】使用缓存
  • <Linux> 基础IO