#

数据库当中最基本的单元是表,也叫 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

先创建父表再创建子表。

# 删除表

mysql> drop table if exists tbl_student ;
Query OK, 0 rows affected (0.00 sec)
1
2

先删除子表再删除父表。

# 修改表

什么是修改表,添加一个字段,删除一个字段,修改一个字段。

在实际开发中,需求一旦确定之后,表一旦设计好之后,很少进行表结构的修改。因为开发进行的时候,修改表结构,成本较高。

修改表结构使用 alter 关键字

# 数据类型

varchar:根据实际长度动态分配空间,效率没有char高。255
char:不管实际长度分配固定的空间,可能导致空间浪费,效率比varchar高。性别之类的数据可以使用。255
int:等同于java中的int11
float:等同于java中的单精度。
bigint:等同于java中的long。
double:等同于java中的双精度。
date:短日期类型。只有年月日信息。
datetime:长日期类型。包括年月日时分秒信息。
clob:character large object 字符串大对象。最多可以存储 4G 字符串,超过 255 个字符时使用。
blobBinary large object 二进制大对象。图片、声音、视频等流媒体数据。需要使用 IO 流才行。
1
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

插入数据的时候,字段数量和数据类型要一一对应。

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

插入数据是先插入父表,再插入子表。

# 修改数据

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

没有条件限制会导致表的所有数据都更新。

# 删除数据

  • 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
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

# 将查询结果插入一张表

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
上次更新: 2025/02/10, 20:20:37
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×