mysql增加列默认值_MySQL列的默认值主键索引与自增 删除增加与修改

本文介绍了MySQL中如何处理列的默认值,包括NULL和NOT NULL的区别,以及如何设置DEFAULT。同时,文章讨论了主键的概念、设置方式以及与AUTO_INCREMENT的关系。此外,还详细阐述了在已有的表结构上如何新增、删除和修改列的DDL操作。
摘要由CSDN通过智能技术生成

1. 某些列不插入内容,值是多少?

自动填充NULL

2. NOT NULL是干嘛的?

不能为NULL类型,因为NULL类型查询的时候需要加语句 IS NULL 或者IS NOT NULL

效率低,查询速度慢,开发中我们一般不可以设置为默认的能插入NULL类型。

所以会使用NOT NULL来限制使用NULL类型。

3. 既然没有默认值了,我们如何手动设置默认值?

使用哪个DEFAULT

1 --设置两个列id和name

2 --id内容不能为NULL 默认值0

3 --name内容不能为NULL 默认值空字符串

4 CREATE TABLEt14 (5 id INT NOT NULL DEFAULT 0,6 name CHAR(10) NOT NULL DEFAULT ''

7 );8 INSERT INTO t14 VALUES (1,'listi');9 INSERT INTO t14 (id) VALUES (2);10 SELECT * FROMt14;11 SELECT * FROM t14 WHERE name='';

1. 什么是主键?

PRIMARY KEY,能够区分每一行的列

以会员为例

我们为了区分他们,往往给每一个会员加一个独一五二的会员号,这个会员号就是主键,主要在唯一

的号码上加。

2. 设置主键后一定不能重复

不重复的是不是都可以是主键?比如说手机号,email,也不重复。

当然不是,它还具备这么几个特征,有顺序,并且递增或者递减的一般才会加主键。

一张表中,不声明主键也可以,取决于你表中数据有没有有顺序递增或者递减的列数据。

3. 两种声明主键的方式:

1 --在需要加主键的后面跟着主键语句

2 CREATE TABLEt15 (3 id INT PRIMARY KEY,4 name CHAR(5)5 );6 --在语句的最后再声明一行声明哪个列名要加主键

7 CREATE TABLEt16 (8 id INT,9 name CHAR(5),10 PRIMARY KEY(id)11 );12 --不可以添加重复的信息

13 INSERT INTO t15 VALUES (3,'list');14 INSERT INTO t15 VALUES (3,'list');

4.主键往往和 AUTO_INCREMENT 一起使用

这并不意味着,他们两个必须要绑定在一起使用,我们一般会把自增的列加上主键,提升效率。

但有时候,我们非要用email做主键,让email这一个列提高效率,也是可以的。

5.AUTO_INCREMENT不可单独使⽤

使用自增选项,必须要有索引设置,否则会报错。

索引还有,普通索引INDEX,唯一UNIQUE,全文索引FULLTEXT。

表创建完毕后,能否添加 1 个列?删除 1 个列?修改一个列?

新增一个列,或者删除修改一个列,这属于 DDL 操作,数据库定义语言。

区分数据的增删改,插⼊数据是指表中的数据,不会影响到表的结构。

新建user_info 表:

1 --id,名字,性别,体重

2 CREATE TABLEuser_info(3 id INT NOT NULL PRIMARY KEYAUTO_INCREMENT,4 username CHAR(20) NOT NULL DEFAULT '',5 gender TINYINT UNSIGNED NOT NULL DEFAULT 0,6 weight TINYINT UNSIGNED NOT NULL DEFAULT 0

7 )ENGINE=MyISAM DEFAULT CHARSET=utf8;

语法:

ALTER TABLE 表名 ADD 列名 列类型 列属性... (新列 默认在表的最后)

ALTER TABLE 表名 ADD 列名 列类型 列属性... AFTER 列名 (新列出现指定列后)

ALTER TABLE 表名 ADD 列名 列类型 列属性... FIRST (新列为第 1 列)

ALTER TABLE 表名 CHANGE 旧列名 新列名 新类型 列属性....

ALTER TABLE 表名 MODIFY 列名 新属性....

ALTER TABLE 表名 DROP [COLUNM] 列名

1 --1.添加一个列,默认新增列追加在表的最后

2 ALTER TABLE user_info ADD height TINYINT UNSIGNED NOT NULL DEFAULT 0;3 --查看表结构

4 DESCuser_info;5 --2.删除身高列

6 ALTER TABLE user_info DROPheight;7 DESCuser_info;8 --3.再增加身⾼列,放在username后面

9 ALTER TABLE user_info ADD height TINYINT NOT NULL DEFAULT 0AFTER username;10 DESCuser_info;11 --4.现在人的身高越来越高,255的TINYINT已经不够存了,我们需要改变列类型,改成SMALLINT

12 --使用CHANGE可以将列名一起修改了.

13 ALTER TABLE user_info CHANGE height shengao SMALLINT NOT NULL DEFAULT 0;14 DESCuser_info;15 --5.MODIFY 也可以修改列,跟CHANGE区别在于,MODIFY不可以修改列名

16 ALTER TABLE user_info MODIFY shengao TINYINT NOT NULL DEFAULT 0;17 DE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值