【42-48】关于表
2022-02-12 15:25:00 # MySQL

概述

  1. 在数据库中表名一般以:’t_表名’或者’tbl_表名’开始
  2. 增删改查:CRUD操作

创建表

语法格式

1
2
3
4
5
create table 表明{
字段名1 数据类型,
字段名2 数据类型,
...
}

MySQL当中字段的数据类型

  1. int 整数型
  2. bigint 长整型(long)
  3. float 浮点型(Java中的float 和 double)
  4. char 定长字符串(String)
  5. varchar 可变长字符串(StringBuilder和StringBuffer)
  6. date 日期类型 (对应java.sql.Date类型)
  7. BLOB 二进制大对象(存图片、视频等流媒体信息)Binary Large OBject
  8. CLOB 字符大对象(存储较大文本,比如可以存储4G的字符串)Character Large OBject
  9. ……

char 和 varchar 如何选择

比如性别、生日等采用char
比如简介、姓名等采用varchar

创建学生表

信息简要

学生信息包括:

  1. 学号:bigint
  2. 姓名:varchar
  3. 性别:char
  4. 班级编号:varchar
  5. 生日:char/date

sql语句

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
27
28
29
30
31
32
mysql> create table t_student(
-> no bigint,
-> name varchar(255),
-> sex char(1),
-> classno varchar(255),
-> birth char(10)
-> );
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+------------------+
| Tables_in_sunlie |
+------------------+
| dept |
| emp |
| salgrade |
| t_student |
| t_user |
+------------------+
5 rows in set (0.00 sec)

mysql> desc t_student;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| no | bigint | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| classno | varchar(255) | YES | | NULL | |
| birth | char(10) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

关于默认

  1. 在建表的时候没有指定默认值,则默认为NULL
  2. 格式:(字段名 数据类型 default 数据,)

向表中插入数据

语法格式

字段名和值的数量相同,数据类型相同

1
insert into 表名(字段名1,字段名2,字段名3, ...) values(值1, 值2, 值3, ...);

向 t_student 表中插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban','1950-10-12');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_student;
+------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+------+----------+------+------------+------------+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
+------+----------+------+------------+------------+
1 row in set (0.00 sec)

// t_student后的字段名可以省去
mysql> insert into t_student values(1,'zhangsan','1','gaosan1ban','1950-10-12');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_student;
+------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+------+----------+------+------------+------------+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
+------+----------+------+------------+------------+
1 row in set (0.00 sec)

一行插入多条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> insert into t_student
-> values
-> (1,'zhangsan','1','gaosan1ban','1950-10-12'),
-> (2,'lisi','1','gaosan1ban','1950-10-13');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from t_student;
+------+----------+------+------------+------------+
| no | name | sex | classno | birth |
+------+----------+------+------------+------------+
| 1 | zhangsan | 1 | gaosan1ban | 1950-10-12 |
| 2 | lisi | 1 | gaosan1ban | 1950-10-13 |
+------+----------+------+------------+------------+
2 rows in set (0.00 sec)

复制表

语法格式

1
create table 表名 as (select语句);  

复制emp表

1
2
3
mysql> create table emp1 as (select * from emp);
Query OK, 14 rows affected, 2 warnings (0.02 sec)
Records: 14 Duplicates: 0 Warnings: 2

将查询结果复制入表

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
27
28
29
30
31
32
33
mysql> create table dept1 as (select * from dept);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> select * from dept1;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
4 rows in set (0.00 sec)

mysql> insert into dept1 (select * from dept);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> select * from dept1;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
8 rows in set (0.00 sec)

修改表中数据

语法格式

更新所有数据不加条件即可

1
update 表名 set 字段名1=1, 字段名2=2 where 条件;

修改部门10的LOC改为’SHANGHAI’,部门名称修改为’RENSHIBU’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> update dept1 set loc = 'SHANGHAI', dname = 'RENSHIBU' where deptno = 10;
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> select * from dept1;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | RENSHIBU | SHANGHAI |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
| 10 | RENSHIBU | SHANGHAI |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
8 rows in set (0.00 sec)

修改表结构

表设计好后很少更改,在实际开发中很少用到…

1
alter

删除表中的数据

语法格式

没有条件全部删除

1
delete from 表名 where 条件;

删除10部门的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> delete from dept1 where deptno = 10;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from dept1;
+--------+------------+---------+
| DEPTNO | DNAME | LOC |
+--------+------------+---------+
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+---------+
6 rows in set (0.00 sec)

删除大表(重点)

删前再三确认…
不可回滚 永久丢失
把表的字段啥的都给剪掉了…

1
2
3
4
5
mysql> truncate table emp1;
Query OK, 0 rows affected (0.03 sec)

mysql> select * from emp1;
Empty set (0.00 sec)

删除表

语法格式

1
2
drop table 表名; 
drop table if exists 表名; //oracle 不支持

删除 t_student 表

1
2
mysql> drop table if exists t_student;
Query OK, 0 rows affected (0.02 sec)
Prev
2022-02-12 15:25:00 # MySQL
Next