# 数据库的链接与创建 先看下如何连接数据库,安装完成之后,用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 648,2 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了 下节就是数据的增删改查了。