表
# 表
数据库当中最基本的单元是表,也叫 table。表示一种有行有列的数据结构。任何一张表都有行和列。行 被称为数据/记录,列 被称为字段。每个字段都有字段名、数据类型、约束等属性。
表命名一般是以t_或者tbl_ 开头。
# 创建表
mysql> create table tbl_student(
-> no int,
-> name varchar(32),
-> sex char(1) default 'm', //创建表的时候指定一个默认值
-> age int(3),
-> emial varchar(255)
-> );
Query OK, 0 rows affected (0.01 sec)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
先创建父表再创建子表。
# 删除表
mysql> drop table if exists tbl_student ;
Query OK, 0 rows affected (0.00 sec)
1
2
2
先删除子表再删除父表。
# 修改表
什么是修改表,添加一个字段,删除一个字段,修改一个字段。
在实际开发中,需求一旦确定之后,表一旦设计好之后,很少进行表结构的修改。因为开发进行的时候,修改表结构,成本较高。
修改表结构使用 alter 关键字
# 数据类型
varchar:根据实际长度动态分配空间,效率没有char高。255
char:不管实际长度分配固定的空间,可能导致空间浪费,效率比varchar高。性别之类的数据可以使用。255
int:等同于java中的int。 11
float:等同于java中的单精度。
bigint:等同于java中的long。
double:等同于java中的双精度。
date:短日期类型。只有年月日信息。
datetime:长日期类型。包括年月日时分秒信息。
clob:character large object 字符串大对象。最多可以存储 4G 字符串,超过 255 个字符时使用。
blob:Binary large object 二进制大对象。图片、声音、视频等流媒体数据。需要使用 IO 流才行。
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 修改表数据
# 插入数据
mysql> insert into tbl_student(no,name,age,sex,emial) values(1,'zhangsan',23,'m','287077203@qq.com');
Query OK, 1 row affected (0.00 sec)
mysql> insert into tbl_student(no,name,age,sex,emial) values(2,'lisi',22,'f','12077203@qq.com');
Query OK, 1 row affected (0.00 sec)
mysql> select * from tbl_student;
+------+----------+------+------+------------------+
| no | name | sex | age | emial |
+------+----------+------+------+------------------+
| 1 | zhangsan | m | 23 | 287077203@qq.com |
| 2 | lisi | f | 22 | 12077203@qq.com |
+------+----------+------+------+------------------+
2 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
插入数据的时候,字段数量和数据类型要一一对应。
insert 只要执行成功就会多一条记录。
不指定字段和值得时候就是null。
前面的字段名省略了就是相当于全部写上了。
mysql> insert into tbl_student values(1,'ss','m',23,'sd'),(2,'sd','m',33,'sdsss'),(3,'s3d','f',23,'sssd');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from tbl_student;
+------+----------+------+------+------------------+
| no | name | sex | age | emial |
+------+----------+------+------+------------------+
| 1 | zhangsan | m | 23 | 287077203@qq.com |
| 2 | lisi | f | 22 | 12077203@qq.com |
| 1 | ss | m | 23 | sd |
| 2 | sd | m | 33 | sdsss |
| 3 | s3d | f | 23 | sssd |
+------+----------+------+------+------------------+
5 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
插入数据是先插入父表,再插入子表。
# 修改数据
mysql> update student set name ='李白', age =55 where id =1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from student;
+------+-----------+------+---------+--------+---------------------+------+---------+---------+---------------+
| id | name | age | chinese | gender | birthday | math | english | address | grade |
+------+-----------+------+---------+--------+---------------------+------+---------+---------+---------------+
| 1 | 李白 | 55 | 100 | 男 | 1923-01-01 00:00:00 | 98 | 87 | 天津 | 三年级1班 |
| 2 | 李白 | 43 | 99 | 女 | 1913-01-01 00:00:00 | 88 | 89 | 上海 | 三年级2班 |
| 3 | 杜甫 | 34 | 98 | 男 | 1929-01-01 00:00:00 | 96 | 79 | 天津 | 三年级3班 |
| 4 | 郭靖 | 36 | 97 | 男 | 1923-01-01 00:00:00 | 96 | 99 | 北京 | 三年级1班 |
| 5 | 王良 | 66 | 97 | 女 | 1943-01-01 00:00:00 | 90 | 88 | 天津 | 三年级3班 |
| 6 | 刘邦 | 46 | 95 | 男 | 1953-01-01 00:00:00 | 93 | 88 | NULL | 三年级2班 |
| 7 | WANGGONG | 35 | NULL | 男 | 1943-01-01 00:00:00 | 88 | 89 | NULL | 三年级3班 |
| 7 | WANG GONG | 35 | NULL | 男 | 1943-01-01 00:00:00 | 88 | 89 | NULL | 三年级3班 |
| 9 | lili | 33 | 99 | m | 1943-01-01 00:00:00 | 55 | 66 | tianjin | sannianji1ban |
+------+-----------+------+---------+--------+---------------------+------+---------+---------+---------------+
9 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
没有条件限制会导致表的所有数据都更新。
# 删除数据
- delete 是逻辑删除,可回滚。
mysql> delete from student where id=7;
Query OK, 2 rows affected (0.00 sec)
mysql> select * from student;
+------+------+------+---------+--------+---------------------+------+---------+---------+---------------+
| id | name | age | chinese | gender | birthday | math | english | address | grade |
+------+------+------+---------+--------+---------------------+------+---------+---------+---------------+
| 1 | 李白 | 55 | 100 | 男 | 1923-01-01 00:00:00 | 98 | 87 | 天津 | 三年级1班 |
| 2 | 李白 | 43 | 99 | 女 | 1913-01-01 00:00:00 | 88 | 89 | 上海 | 三年级2班 |
| 3 | 杜甫 | 34 | 98 | 男 | 1929-01-01 00:00:00 | 96 | 79 | 天津 | 三年级3班 |
| 4 | 郭靖 | 36 | 97 | 男 | 1923-01-01 00:00:00 | 96 | 99 | 北京 | 三年级1班 |
| 5 | 王良 | 66 | 97 | 女 | 1943-01-01 00:00:00 | 90 | 88 | 天津 | 三年级3班 |
| 6 | 刘邦 | 46 | 95 | 男 | 1953-01-01 00:00:00 | 93 | 88 | NULL | 三年级2班 |
| 9 | lili | 33 | 99 | m | 1943-01-01 00:00:00 | 55 | 66 | tianjin | sannianji1ban |
+------+------+------+---------+--------+---------------------+------+---------+---------+---------------+
7 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
delete from student; 删除整张表数据,效率低,但可回滚。
1
- truncate 是物理删除,不可恢复回滚。适合删除上亿条数据的大表格。不可以删除单条数据。
truncate table student; 快速删除整张表数据,不可撤销。
1
删除数据是先删除子表数据再删除父表数据。
# 快速复制一张表
mysql> create table tbl_student2 as select * from tbl_student;
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from tbl_student2;
+------+----------+------+------+------------------+
| no | name | sex | age | emial |
+------+----------+------+------+------------------+
| 1 | zhangsan | m | 23 | 287077203@qq.com |
| 2 | lisi | f | 22 | 12077203@qq.com |
| 1 | ss | m | 23 | sd |
| 2 | sd | m | 33 | sdsss |
| 3 | s3d | f | 23 | sssd |
+------+----------+------+------+------------------+
5 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 将查询结果插入一张表
mysql> insert into tbl_student2 select * from tbl_student;
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from tbl_student2;
+------+----------+------+------+------------------+
| no | name | sex | age | emial |
+------+----------+------+------+------------------+
| 1 | zhangsan | m | 23 | 287077203@qq.com |
| 2 | lisi | f | 22 | 12077203@qq.com |
| 1 | ss | m | 23 | sd |
| 2 | sd | m | 33 | sdsss |
| 3 | s3d | f | 23 | sssd |
| 1 | zhangsan | m | 23 | 287077203@qq.com |
| 2 | lisi | f | 22 | 12077203@qq.com |
| 1 | ss | m | 23 | sd |
| 2 | sd | m | 33 | sdsss |
| 3 | s3d | f | 23 | sssd |
+------+----------+------+------+------------------+
10 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
编辑 (opens new window)
上次更新: 2025/02/10, 20:20:37