自学内容网 自学内容网

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为复合主键
-> );


原文地址:https://blog.csdn.net/2301_77479435/article/details/141890145

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!