基础知识:用MySQL数据库创建表格

## 大致了解MySQL

众所周知,MySQL是一个数据库管理系统,但其实数据库也分多种类型,MySQL是其中一种,叫做关系型数据库。

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。

![](https://user-gold-cdn.xitu.io/2019/11/14/16e67b4717e3e5c4?w=800&h=600&f=png&s=112132)

关系链是:

    服务器(Server) -> 数据库(例如MySQL) -> 表格(Table) -> 行(Row) -> 列(Column)

表格里面还包含了多行与多列(图片没有展示)。

那么我们怎么在数据库里创建表格呢?

## 首先,我们得创建一个数据库

创建数据库很简单,首先创建一个后缀名是.sql的文件,然后书写下段代码:

``` mysql

    CREATE DATABASE test;

```

create是创建的意思,database是数据库的意思,因为是关键词,所有是大写(书写规范),test是你给数据库取的一个名字,

当然你也可以叫lili、mary之类的。

是的,就是这么简单,一句话你就创建了一个数据库。

现在可以打开MySQL服务器,然后在shell里查看你创建的数据了。

打开shell,输入

```

    mysql -uroot

    #回车

    SHOW DATABASES;

```

你的服务中所有的数据库会展示出来,并且你会看到,多了一个名叫 test 的数据库。

但是,如果你重新执行上段操作,会发现报错,原因是该服务器已经有了一个叫 test 的数据库了,所以不能再创建一个同名的数据库。

所以你需要在创建数据库的时候,加上这样一段代码:

``` mysql

    DROP DATABASE IF EXISTS test;

    CREATE DATABASE test;

```

新增的代码意思是:如果服务器中已经有了名叫 test 的数据库,那么删除它。

这样就万无一失啦,再查看多少次服务器都不会出错了。

## 创建好数据库,那么我们可以创建表格了。

首先在创建表格之前,我们要先调用该数据库,以免计算机不知道我们要在哪创建。

``` mysql

    USE test;

    CREATE TABLE myTable(

        列名称: 列类型,

        列名称: 列类型,

        ...

    );

```

使用 USE test 连调用该数据库,然后创建表格,不难发现,表格里填了一些内容,这些内容规定了表格的表头,即:你的表格都有哪些列。

列名称不是很难理解,一般都是你自己取的名字,比如你做一个学生班级的表格,表格里包含了学生的编号、姓名、性别、分数等等。

``` mysql

    USE test;

    CREATE TABLE student(

        id: TINYINT,

        name: VARCHAR(6),

        ...

    );

```

但是用什么值来表示它们,规定这些列的类型,就比较重要了,因为这些是规定好的,你得记住别写错了。

## 列类型

要创建表格,那么我们一定要知道它包含的列都有哪些类型的。

1. 数值类型

  - TINYINT  微整型,占1个字节  范围-128~127

  - SMALLINT  小整型,占2个字节  范围-32768~32767

  - INT  整型,占4个字节  范围 -2147483648~2147483647

  - BIGINT  大整型,占8个字节

  - FLOAT  单精度浮点型,占4个字节,范围3.4e38,范围比INT大的多,可能产生计算误差。

  - DOUBLE  双精度浮点型,占8个字节,范围比BIGINT大的多

  - DECIMAL(M,D)  定点小数,不会产生计算误差,M代表总的有效位数,D代表小数点后的有效位数

  - BOOL  布尔型,只有两个结果TRUE/1、FALSE/0,TRUE和FALSE不能添加引号;真正存储数据的时候,会使用TINYINT。

2. 日期时间类型

  - DATE  日期型  '2018-12-31'

  - TIME  时间型  '14:22:30'

  - DATETIME  日期时间型  '2018-12-31  14:22:30'

3. 字符串类型——必须添加引号

  - VARCHAR(M)  变长字符串,不会产生空间浪费,操作速度相对较慢,M最大值是65535

  - CHAR(M)  定长字符串,可能产生空间浪费,操作速度较快,M最大值是255;用于存储手机号码,身份证号等固定长度的字符。

  - TEXT(M)  大型变长字符串,最多存2G


## 创建好了列头,可以往里面填值了。

上面只是创建了一个表格,写了它的第一行,里面包含了所有列的分类,那么下面就要往表格里填内容了,即它之后的行。

``` mysql

    INSERT INTO test VALUES(1,'Jack',...);

```

值1对应列头的第一个,值2对应列头的第二个,以此类推。

你也可以对内容进行修改:

``` mysql

    UPDATE student SET name = 'Mike' WHERE id = 1;

```

或者删除:

``` mysql

    DELETE FROM student WHERE id = 1;

```

## 查看表格

一个简单的表格就已经创建好了,那么怎么查看呢?

两种方式:

1. 交互方式,类似上面查看服务器的方法。

在shell里执行:

```

    mysql -uroot

    #回车

    USE test;

    #回车

    SELECT * FROM student;

    #回车即可查看

```

2. 脚本方式:

sql文件里加上下面这句代码:

``` mysql

    SELECT * FROM student;

```

然后在shell里执行:

```

    mysql -uroot < 你的sql文件的位置

    #回车查看

```

但是一般脚本语言不用于查看,而是用交互模式查看。

## 关于语言

需要注意的是,上面的写法,如果列表里填的值有中文,会显示出乱码,所有我们需要设置一下。

在创建表格的时候,设定语言范围是UTF-8,由于mysql对于‘-’号会理解成减号,所有写的时候省去了‘-’号。

``` mysql

    SET NAMES UTF8;

    DROP DATABASE IF EXISTS test;

    CREATE DATABASE test CHARSET = UTF8;

```

这样在值为中文的时候就不会显示乱码了(用交互模式查看,如果是脚本模式还是看不懂的~)。

你学会了吗?

以上是自己的一点学习记录,如有不对还请指正,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括表、视图、触发器、存储过程等,其中表是最基本的数据对...
    黑白色的天空阅读 925评论 0 4
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,056评论 0 19
  • 一、数据库简介 1.数据库系统 1.1数据库 DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺...
    郑元吉阅读 613评论 0 6
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    EndEvent阅读 1,924评论 2 3
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    fly5阅读 397评论 0 0