Files
mysql-press/docs/mysql/create.md
2021-05-06 11:33:48 +08:00

177 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据库的链接与创建
先看下如何连接数据库安装完成之后用windows键 就是徽标键 + r键打开运行输入cmd然后回车
![图 1](../../images/7809b6c265ba80888a4c95a5408ce43acbe4e6d7cbb8726199a07c5a3b2eaa14.png)
然后输入`mysql -uroot -p` ,然后回车
![图 2](../../images/3fd6e19a87b86f06de742f498a5f04af1872ed6b11203ef63073eff799dd7b65.png)
然后输入你安装时候输入的密码,然后回车
![图 3](../../images/7129161c3e27345a6643cc2cc364ba9a09f8bb684dc12f6b091be788b2a44405.png)
这样就连接到数据库了
## 查看所有数据库
之前说了mysql中有数据库与数据表数据库中包含着数据表。
那么如何查看现在存在的数据库呢?
```sql
show databases;
```
使用上面的命令可以查看当前存在的数据库。
![图 4](../../images/a5269ab84de9e0260048d104570277d23da61b531f5a83dc9fc92a0230e472f9.png)
> 注意,每条语句后面必须跟;结尾,而且保证是英文的分号
每个刚安装好的mysql都会有自带的这四个数据库一般我们不会修改他们之后用到的时候在进行解释如果随便修改他们会造成一些意料之外的事情。
所以我们如何创建我们自己的数据库呢?
```sql
create database demo;
```
上面的命令是创建了一个名字为demo的数据库
那么名字是怎么定义的呢?
```sql
create database ;
```
比如我们要创建一个叫school的数据库就应该使用
```sql
create database school;
```
那么我们运行`create database demo;`之后,再次查看数据库会怎么样?
![图 5](../../images/f30f69af00f9be969676bc9a58622109c78f6f18963842e3d0ba8693efc5bf65.png)
发现数据库列表多了一个demo
我们执行下`create database school;`会怎么样呢?
![图 6](../../images/79bf2d49cee9a4d88b60905ee7d9bb8f0fde585261e8127124d12976954931f4.png)
school数据库也出现了。
所以这就是创建数据库的方法。
数据库创建好了,那么如何创建表呢?
之前说了,表是存在于数据库里面的,我们创建的时候应该指定要在哪个数据库中创建,就是新建文件一样,我们需要打开要新建文件的文件夹。
所以如何打开数据库呢?
```sql
use ;
```
使用use来选择要操作的数据库。
比如我们要在school数据库里面创建一个class的表那么我们就应该先使用use来选择school这个数据库
```sql
use school;
```
![图 7](../../images/6ee4b374da0e39869bb6e4372fb47ddcf37dcf493abcdc0e82296b09b3e22c11.png)
使用use之后会出现`Database changed` 就是数据库已经选择了,可以进行之后的操作了。
那么先查看一下有没有数据表,因为是新建立的数据库,所以应该是空白的。
那么如何查看呢?
```sql
show tables;
```
![图 8](../../images/861ff14d3f432f0d75e938eeb6acb04e54d182d26cdc23901acee70126426c71.png)
并没有出现什么,因为最初创建的数据库是空白的,我们应该新建一个表。
如何创建一个表呢,是跟创建数据库一样直接`create table 表名;`吗?
并不是,介绍的时候有说到,数据表包含
- 表名
- 表字段名
- 字段类型
- 约束等等
## 类型
那么我们先看一下类型。
> MySQL支持多种类型大致可以分为三类数值、日期/时间和字符串(字符)类型。
数值是 int float double等
字符串是 varchar char text等
日期时间是 date datetime等
下面详细介绍一下,
int 是整数,可以存放一些整数的值 比如 123 2345 这种整数等 范围是(-2 147 483 6482 147 483 647)
float 是小数,是存放小数的,可以存放小数 比如 3.14 2.345 等等 可以有6 - 7 位的准确值
double 是双精度小数型,也是存放小数 但是精准度比float好可以保证 15 - 16 为准确性
data 是存放日期的格式为YYYY-MM-DD例如 2020-02-02 2021-04-29 等等
datatime 存放日期时间的 格式为YYYY-MM-DD HH:MM:SS 例如 2020-02-02 02:02:02 就是年-月-日 时:分:秒
char 定长字符串定义的时候需要传入长度char(10) 定义一个长度为10的字符类型
varchar 变长字符串与char一样但是有一些区别在下面解释
### char 与 varchar
1. char类型时定长的类型即当定义的是char(10),输入的是"abc"这三个字符时它们占的空间一样是10个字节包括7个空字节。当输入的字符长度超过指定的数时char会截取超出的字符。而且当存储char值时MySQL是自动删除输入字符串末尾的空格。
2. char是适合存储很短的、一般固定长度的字符串。例如char非常适合存储密码的MD5值因为这是一个定长的值。对于非常短的列char比varchar在存储空间上也更有效率。
3. varchar(n)类型用于存储可变长的比如varchar(10), 然后输入abc三个字符那么实际存储大小为3个字节。
4. 所以从空间上考虑varcahr较合适从效率上考虑用char合适。二者之间需要权衡。
## 创建数据表
那么如何简单的创建一个表呢?
```sql
create table ( , ,.....);
```
例如,我们要创建一个下面样式的表
![图 9](../../images/6198f490d8cdf27a32d506e3c1550d21f2ddd3e956d9b8e3248cca3c03d0b4c0.png)
我们先考虑一下名字与类型,因为数据库中不能用中文作为字段名,所以我们需要给起一个英文名
- 姓名 name 类型是 varchar 长度给10 因为名字是字符串 并且没有人会有10个字的名字可能会有5个6个.
- 性别 sex 类型是varchar 长度给2 性别一般是男 女 未知,在一般项目中可能会用数字代替。
- 年龄 age 类型 int
那么我们接下来创建这个表表名就叫class
```sql
create table class(name varchar(10),sex varchar(2),age int);
```
执行一下
![图 10](../../images/7d4dd4c17f53ebe96e4e2457c862e41b8972b97c1278f4924303898289c0b09c.png)
完成了,然后再查看一下当前数据库的表
![图 11](../../images/abc9d1762271712283ecbc0bab169e8faf876d4e140caa4f11bfd92b8b336f9e.png)
已经可以看到我们创建的class了
下节就是数据的增删改查了。