MySQL基础 - 列的属性

本文详细介绍了MySQL中列的各种属性,包括默认值、NOT NULL、主键、UNIQUE、外键、AUTO_INCREMENT和ZEROFILL属性,以及如何查看和设置这些属性。通过示例展示了如何创建和使用这些属性,帮助读者理解和掌握数据库表结构的设计。
摘要由CSDN通过智能技术生成

简单的查询和插入的语句

简单的查询语句

如果我们想查看某个表里已经存储了哪些数据,可以用下边这个语句:

SELECT * FROM 表名;

比如我们想看看前边创建的first_table表中有哪些数据,可以这么写:

mysql> SELECT * FROM first_table;
Empty set (0.01 sec)

mysql>

很遗憾,我们从来没有向表中插入过数据,所以查询结果显示的是Empty set,表示什么都没查出来~

简单插入语句

MySQL插入数据的时候是以行为单位的,语法格式如下:

INSERT INTO 表名(列1, 列2, ...) VALUES(列1的值,列2的值, ...);

也就是说我们可以在表名后边的括号中指定要插入数据的列,然后在VALUES后边的括号中按指定的列顺序填入对应的值,我们来为first_table表插入第一行数据:

mysql> INSERT INTO first_table(first_column, second_column) VALUES(1, 'aaa');
Query OK, 1 row affected (0.00 sec)

mysql>

这个语句的意思就是我们要向first_table表中插入一行数据,first_column列的值是1second_column列的值是'aaa'。看一下现在表中的数据:

mysql> SELECT * FROM first_table;
+--------------+---------------+
| first_column | second_column |
+--------------+---------------+
|            1 | aaa           |
+--------------+---------------+
1 row in set (0.00 sec)

mysql>

第一行数据就插入成功了!

我们也可以只指定部分的列,没有显式指定的列的值将被设置为NULLNULL的意思就是此列的值尚不确定。比如这样写:

mysql> INSERT INTO first_table(first_column) VALUES(2);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO first_table(second_column) VALUES('ccc');
Query OK, 1 row affected (0.00 sec)

mysql>

这两条语句的意思就是:

  • 第一条插入语句我们只指定了first_column列的值是2,而没有指定second_column的值,所以second_column的值就是NULL

  • 第二条插入语句我们只指定了second_column的值是'ccc',而没有指定first_column的值,所以first_column的值就是NULL

执行完这两条语句后,再看一下现在表中的数据:

mysql> SELECT * FROM first_table;
+--------------+---------------+
| first_column | second_column |
+--------------+---------------+
|            1 | aaa           |
|            2 | NULL          |
|         NULL | ccc           |
+--------------+---------------+
3 rows in set (0.00 sec)

mysql>

批量插入

每插入一行数据写一条语句也不是不行,但是对人来说太烦了,而且每插入一行数据就向服务器提交一个请求远没有一次把所有插入的数据提交给服务器效率高,所以MySQL为我们提供了批量插入记录的语句:

INSERT INTO 表名(列1,列2, ...) VAULES(列1的值,列2的值, ...), (列1的值,列2的值, ...), (列1的值,列2的值, ...), ...;

也就是在原来的单条插入语句后边多写几条记录的内容,用逗号分隔开就好了,举个例子:

mysql> INSERT INTO first_table(first_column, second_column) VALUES(4, 'ddd'), (5, 'eee'), (6, 'fff');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM first_table;
+--------------+---------------+
| first_column | second_column |
+--------------+---------------+
|            1 | aaa           |
|            2 | NULL          |
|         NULL | ccc           |
|            4 | ddd           |
|            5 | eee           |
|            6 | fff           |
+--------------+---------------+
6 rows in set (0.01 sec)

mysql>

可以看到3行记录就插入成功了!

列的属性

我们在上一章唠叨表结构的时候说表中的每个列都可以有一些属性,至于这些属性是什么以及怎么在创建表的时候把它们定义出来就是本章接下来的内容哈。不过我们之后还会用到first_table表做示例,所以先把该表删掉:

mysql> DROP TABLE first_table;
Query OK, 0 rows affected (0.01 sec)

默认值

我们刚说过在书写INSERT语句插入记录的时候可以只指定部分的列,那些没有被显式指定的列的值将被设置为NULL,换一种说法就是列的默认值为NULLNULL的含义是这个列的值还没有被设置。如果我们不想让默认值为NULL,而是设置成某个有意义的值,可以在定义列的时候给该列增加一个DEFAULT属性,就像这样:

列名 列的类型 DEFAULT 默认值

比如我们把first_tablesecond_column列的默认值指定为'abc',创建一下这个表:

mysql> CREATE TABLE first_table (
    ->     first_column INT,
    ->     second_column VARCHAR(100) DEFAULT 'abc'
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql>

然后插入一条数据后看看默认值是不是起了作用:

mysql> INSERT INTO first_table(first_column) VALUES(1);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM first_table;
+--------------+---------------+
| first_column | second_column |
+--------------+---------------+
|            1 | abc           |
+--------------+---------------+
1 row in set (0.00 sec)

mysql>

我们的插入语句并没有指定second_column的值,但是可以看到插入结果是按照我们规定的默认值'abc'来设置的。

如果我们不设置默认值,其实就相当于指定的默认值为NULL,比如

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋同学shl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值