数据库基本操作7

1.6 数据类型——boolean

MySQL不支持boolean类型,true和false在数据库中对应1和0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> create table t15(
-> field boolean
-> );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t15 values (true),(false); # true和false在数据库中对应1和0
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t15;
+-------+
| field |
+-------+
| 1 |
| 0 |
+-------+
2 rows in set (0.00 sec)

1.7 关于数据类型的思考题

  1. 手机号码一般使用什么数据类型存储? char
  2. 电话号码使用什么数据类型 varchar
  3. 性别一般使用什么数据类型存储? char enum
  4. 学生年龄信息一般使用什么数据类型存储? tinyint
  5. 照片信息一般使用什么数据类型存储? binary
  6. 薪水一般使用什么数据类型存储? decimal

多学一招:一个字段到底选数字还是字符,取决于有没有计算的可能,如果没有计算的可能即使是数字也要用字符类型,比如手机号、QQ号,…

1.8 列属性——是否为空(null | not null)

null:可以为空

not null:不可以为空

思考题

  1. 学员姓名允许为空吗? 非空
  2. 家庭地址允许为空吗? 非空
  3. 电子邮件信息允许为空吗? 可以为空
  4. 考试成绩允许为空吗? 可以为空

1.9 列属性——默认值(default)

1、如果一个字段没有插入值,可以默认插入一个指定的值。

2、default关键字用来插入默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> create table t16(
-> id int unsigned,
-> addr varchar(20) not null default '地址不详'
-> );
Query OK, 0 rows affected (0.06 sec)

mysql> insert into t16 values (1,'北京'),(2,default);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t16;
+------+----------+
| id | addr |
+------+----------+
| 1 | 北京 |
| 2 | 地址不详 |
+------+----------+
2 rows in set (0.00 sec)

1.10 列属性——自动增长(auto_increment)

1、字段的值从1开始,每次递增1,特点就在字段中的数据不可能重复,适合为记录生成唯一的id

2、自动增长都是无符号整数。

3、在MySQL中,auto_increment必须是主键。但是主键不一定是自动增长的。

4、如果要给自动增长列插入数据,使用null关键字。

5、自动增长列上的数据被删除,默认情况下此记录的编号不再使用。

1.11 列属性——主键(primary key)

主键:唯一标识表中记录的一个或一组列

主键的特点:不能重复,不能为空

一个表只能有一个主键,主键可以有多个字段组成。

主键的作用:

1、 保证数据完整性

2、 加快查询速度

1.11.1 添加主键

方法一:创建表的时候添加主键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> create table t17(
-> id varchar(5) primary key, # 创建主键
-> name varchar(10) not null
-> );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t17 values ('s2531','tom'),('s2532','berry');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t17;
+-------+-------+
| id | name |
+-------+-------+
| s2531 | tom |
| s2532 | berry |
+-------+-------+
2 rows in set (0.00 sec)

# 如果插入主键相同数据会报错
mysql> insert into t17 values ('s2531','tom');
ERROR 1062 (23000): Duplicate entry 's2531' for key 'PRIMARY'

# 主键不能插入null值
mysql> insert into t17 values (null,'tom');
ERROR 1048 (23000): Column 'id' cannot be null

方法二:创建表的时候添加主键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> create table t18(
-> id int,
-> name varchar(10),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.00 sec)

mysql> desc t18;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

方法三:更改表的时候添加主键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> create table t20(
-> id int,
-> name varchar(10)
-> );
Query OK, 0 rows affected (0.00 sec)

mysql> alter table t20 add primary key (id); # 更改表添加主键
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t20;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

-------------本文结束感谢您的阅读-------------

本文标题:数据库基本操作7

文章作者:Wuman

发布时间:2018年09月13日 - 09:09

最后更新:2018年09月13日 - 10:09

原始链接:http://yoursite.com/2018/09/13/数据库基本操作7/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。