1、什么是表?

  • 数据表是数据库最重要的组成部分之一,是其他对象的基础。
  • 数据表示存储数据的数据结构。
  • 数据表包含了特定·试题类型烦人的数据。
  • 数据表有行(row)和列(column)构成烦人二维网络。
  • 数据表一定现有表结构,再有数据。
  • 数据表至少有一列,可以没有行或者多行。
  • 数据表名称要求唯一,而且不要包含特殊字符。

2、创建数据表

详细语法:

1
2
3
4
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整性约束条件]
...
)ENGINE=引擎名称 CHARSET='编码方式';

完整性约束条件:

名称 含义
PRIMARY KEY 主键
AUTO_INCREMENT 自增长
FOREIGN KEY 外键
NOT NUL 非空
UNIQUE KEY 唯一
DEFAULT 默认值

  注:MySQL中的注释:
   1)# 我是注释
   2)-- 我也是注释

我们创建一个学员表(user)其中包括:

  • 编号 id
  • 用户名 username
  • 年龄 age
  • 性别 sex
  • 邮箱 email
  • 地址 addr
  • 生日 birth
  • 薪水 salary
  • 电话 tel
  • 是否结婚 married

SQL语句:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE IF NOT EXISTS `user`(
id SMALLINT,
username VARCHAR(20),
age TINYINT,
sex ENUM('男','女','保密'),
email VARCHAR(50),
ADDR VARCHAR(200),
birth YEAR,
salary FLOAT(8,2),
tel INT,
married TINYINT(1) COMMENT '0代表未结婚,非0代表已婚'
)ENGINE=INNODB CHARSET=UTF8;

在我们创建表的时候必须先知道数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> USE demo1;
Database changed
mysql> CREATE TABLE IF NOT EXISTS `user`(
-> id SMALLINT,
-> username VARCHAR(20),
-> age TINYINT,
-> sex ENUM('男','女','保密'),
-> email VARCHAR(50),
-> ADDR VARCHAR(200),
-> birth YEAR,
-> salary FLOAT(8,2),
-> tel INT,
-> married TINYINT(1) COMMENT '0代表未结婚,非0代表已婚'
-> )ENGINE=INNODB CHARSET=UTF8;
Query OK, 0 rows affected (0.03 sec)

mysql>
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
# 创建一个新闻分类表
CREATE TABLE IF NOT EXISTS `cms_cate`(
id TINYINT,
cateName VARCHAR(50),
cateDesc VARCHAR(200)
)ENGINE=MyISAM CHARSET=UTF8;
```
```SQL
# 创建一个新闻表
CREATE TABLE IF NOT EXISTS `cms_news`(
id INT, # 编号
title VARCHAR(50), #标题
content TEXT, # 新闻内容
pubTime INT, # 新闻发布时间
clickNum INT, # 点击量
isTop TINYINT(1) COMMENT '0代表不置顶,1代表置顶' #是否置顶
);
```
注:当需要输入中文时,要临时转换编码方式`SET NAMES GBK`,只对当前连接有效。
注:字段注释,通过`COMMENT`注释内容 给字段添加注释
### 3、查看数据库下的表

```SQL
mysql> SHOW TABLES;
+-----------------+
| Tables_in_demo1 |
+-----------------+
| user |
+-----------------+
1 row in set (0.00 sec)

mysql>

4、查看指定表的表结构

  • DESC tab_name
  • DESCRIBE tbl_name
  • SHOW COLUMNS FROM tbl_name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> DESC cms_news;
mysql> # DESCRIBE cms_news;
mysql> # SHOW COLUMNS FROM cms_news;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| title | varchar(50) | YES | | NULL | |
| content | text | YES | | NULL | |
| pubTime | int(11) | YES | | NULL | |
| clickNum | int(11) | YES | | NULL | |
| isTop | tinyint(1) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

5、修改表

修改表内容略多,在下一篇文章介绍。

6、删除表

当某个表不想用的时候我们可以删除,但是删除表后数据就都没有了,所以做删除操作的时候要谨慎!

1
DROP TABLE [IF EXISTS] tbl_name[,tbl_name...]

我们先创建一个test表,再删除:

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
mysql> CREATE TABLE test(
-> id INT
-> );
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+-----------------+
| Tables_in_demo1 |
+-----------------+
| cms_cate |
| cms_news |
| test |
| user |
+-----------------+
5 rows in set (0.00 sec)

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

mysql> show tables;
+-----------------+
| Tables_in_demo1 |
+-----------------+
| cms_cate |
| cms_news |
| user |
+-----------------+
4 rows in set (0.00 sec)

7、在登录时直接打开数据库

1
mysql -uroot -p -D user
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sing-2:~ Sing$ mysql -uroot -p -D demo1
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| demo1 |
+------------+
1 row in set (0.00 sec)