MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

Mysql插入数据

插入数据:INSERT [INTO] tab_name[(col_name,…)] VALUES(val,…)

上一篇创建了一个数据库mm1,流程如下:

首先我们创建了一个数据表mm1,

mysql> create table if not exists mm1(
-> username VARCHAR(20),
-> age TINYINT UNSIGNED,
-> salary FLOAT(8,2) UNSIGNED);

查看我们的表结构:
mysql> show columns from mm1;
+———-+———————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+———————+——+—–+———+——-+
| username | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| salary | float(8,2) unsigned | YES | | NULL | |
+———-+———————+——+—–+———+——-+


一、往数据库插入数据有两种方式

  • 1、不指定插入的列,这里就要把所有列的数据填写进去,

    例如s:mysql> insert mm1 values(‘tom’,35,8979.2);
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束
    然后我们查看我们是否添加进数据表数据,mysql> select * from mm1;(很明显已经插入进去数据)如下图:
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束


  • 2、我们看到[(col_name,…)],是被中括号包着的,也就是说可以省略,但是如果省略,你插入的数据就是为所有列插入数据。我们这里使用它,制定列来添加数据,

    例如:mysql> insert mm1(username,salary) values(‘laowang’,58998);点击回车如下:
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

    ,然后我们查看是否输入进去,我们给两个列进行了赋值,其中age,因我们没有指定,所以是null。
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束


二、非空判断

我们平常写代码的时候,总是被提示,这个不能为空,那个不能为空,那么我们数据库怎么设置提示,在数据库中,那些数据在以后必须赋值,不能为空。

  • NULL ,字段可以为空!
  • NOT NULL ,字段不能为空。
  • 上面两个情况是不能同时使用的。

我们创建一个mm2数据表,插入两列,其中username,不能为空,age 可以为空。如下:

MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束
Query OK, 0 rows affected (0.11 sec)//—创建成功

然后我们查看我们创建的数据表,show columns from mm2;

mysql> show columns from mm2;
MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

1、我们插入数据:insert mm2 values(‘TOM’,NULL),因为age是可以为空,所以添加成功;

然后我们查看一下我们的数据表内容

mysql> select * from mm2;
+———-+——+
| username | age |
+———-+——+
| TOM | NULL |
+———-+——+
1 row in set (0.00 sec)

2、我们插入数据:insert mm2 values(‘TOM’,NULL),因为username是不能为null,所以添加失败;
:mysql> insert mm2 values (NULL,23);
ERROR 1048 (23000): Column ‘username’ cannot be null

三、自动排序(AUTO_INCREMENT)

  • 1、自动编号,且必须于主键想结合使用
  • 2、默认情况下,起始值为1,每次的增加量为1

例如:我们添加一个数据表,并添加自动排序,不过没有主键,这时候,数据表就会创建失败。

MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

四、主键约束(primary key )

  • 每张数据表只存在一个主键
  • 主键保证记录的唯一性
  • 主键自动为NOT NULL
  • 这里注意,AUTO_INCREMENT 必须和主键一起使用,但是主键不一定非要和AUTO_INCREMENT一起

例如:
1、还是继续创建mm2数据表,并添加主键

MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

2、插入几条数据,来验证是否自动进行排序,如下图:
MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

上面所示:进行了自动排序。

3、我们上面提到了AUTO_INCREMENT 必须和主键一起使用,但是主键不一定非要和AUTO_INCREMENT一起。这里的意思就是,我们

  • 添加一个数据表mm3,

mysql> create table mm3(
-> id SMALLINT UNSIGNED KEY,
-> username VARCHAR(20) NOT NULL
-> );

  • 添加两条数据,并制定id的编号。并且验证。如下图
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 如果,id的编号,输入为一样,就会报错,如下图,(我们已经添加过ID的编号22,如果再添加就会报错)
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束


五、唯一约束(unique key )

。唯一约束
。唯一约束可以保证记录的唯一性
。唯一约束的字段可以为空值(null)
。每张数据表可以攒在多个唯一约束 (注意,主键约束只允许出现一次)

例如:

  • 1、我们在数据库写一个数据表mm3,ID参数我们用主键约束,username我们用唯一约束,如图一:
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 2、我们查看下我们创建的数据表,如图02
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 3、向数据库写入数据,第一次成功,第二次就会提示如下错误,03(告诉我们,数据表中已经有了zhang,当然你还可以为其他的参数添加唯一约束,一张表可以存在多个)
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

六、默认约束(default)

当插入记录时,如果没有明确的为字段复制,则自动赋值默认值。

  • 1、创建一个数据表tb6,里面有三个参数,其中性别sex,写了三个选项,1:男,2:女,3:默认。给她设为默认3.如图
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 2、查看数据表,会发现,默认已经是3,我们向数据表中添加数据,就会发现,我们不给sex设置参数的时候,sex参数就会被设为默认数值3,如图:
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 3、如果向数据表中添加一个username的值,但是不指定其sex,这个时候他会在数据表中默认生产数据3
    MYSQL数据库(四) 数据插入、空值和非空判断、自动排序、主键约束、唯一约束

  • 4、所谓默认,其实就是给参数设置一个默认值,在不指定具体数值时为其复制。