MySQL 8 的学习——3创建和使用数据库

在创建和使用数据库之前,先介绍几个命令:

## 该SHOW语句查找服务器上当前存在的数据库:
## 该mysql数据库描述了用户访问权限。该test数据库通常可作为用户工作区尝试的事情了。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.11 sec)

## use 命令表示使用指定的 mysql 数据库
mysql> use mysql
Database changed
mysql>

一,创建和选择数据库

## 1. 创建数据库
mysql> create database menagerie;
Query OK, 1 row affected (0.04 sec)

## 注意:如果您收到错误,例如ERROR 1044(42000):在尝试创建数据库时,用户'micah'@'localhost'拒绝访问数据库'menagerie',这意味着您的用户帐户没有必要的权限。

## 2. 选择数据库,创建数据库时并不会选择它使用; 你必须明确地说明使用当前数据库,请使用以下语句:
mysql> use menagerie
Database changed

## 3. 进入数据库同时,选择使用指定数据库
C:\Users\zjy\Desktop $>mysql -uroot -p menagerie
Enter password: ******

## 4. 执行完3之后,你可以通过 select database(),确认是否已经使用制定数据库
mysql> select database();
+------------+
| database() |
+------------+
| menagerie  |
+------------+
1 row in set (0.00 sec)


二,创建表

创建数据库之后,我们可以看看它里面有什么

## 该menagerie数据库是空的集合
mysql> show tables;
Empty set (0.02 sec)

更难的部分是决定数据库的结构应该是什么:您需要哪些表以及每个表中应该包含哪些列。

您想要一张包含每只宠物记录的表格。这可以称为pet表格,它应该包含每个动物名称的最低限度。因为名称本身不是很有趣,所以该表应包含其他信息。例如,如果您家中有多个人饲养宠物,您可能需要列出每只动物的主人。您可能还想记录一些基本的描述性信息,如物种和性别。

年龄怎么样?这可能是有意义的,但存储在数据库中并不是一件好事。随着时间的推移,年龄会发生变化,这意味着您必须经常更新记录。相反,最好存储固定值,如出生日期。然后,无论何时需要年龄,您都可以将其计算为当前日期和出生日期之间的差异.MySQL提供了进行日期算术的功能,因此这并不困难。存储出生日期而不是年龄也有其他优点:

  • 您可以使用数据库执行任务,例如为即将到来的宠物生日生成提醒(如果您认为这种类型的查询有些愚蠢,请注意,您可能会在业务数据库的上下文中询问相同的问题,以确定您需要在当前一周或一个月内向其发送生日祝福的客户,计算机辅助个人触摸。)

  • 您可以计算与当前日期以外的日期相关的年龄。例如,如果您将死亡日期存储在数据库中,则可以轻松计算宠物死亡时的年龄。

您可能会想到在pet表格中有用的其他类型的信息,但到目前为止确定的信息是足够的:名称,所有者,物种,性别,出生和死亡。

可以使用创建表指定表的布局,对于名称来说,名称,所有者,种三列的值的长度是不尽相同的,我们使用可变长度的字符VARCHAR,的性别性别可以使用单个字符'm'状语从句:  'f',或者可能'male'和  'female'。最简单的是使用单个字符'm''f';对于birthdeath 列使用date数据类型是一个相当明显的选择。

mysql> create table pet (name varchar(20),owner varchar(20),
    -> species varchar(20), sex char(1), birth date, death date);
Query OK, 0 rows affected (0.26 sec)

让我们来看看创建表之后的数据库

mysql> show tables;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| pet                 |
+---------------------+
1 row in set (0.00 sec)

你可能不太满意,我希望看到更详细的表结构,验证表是否按预期方式创建,使用以下描述语句:

mysql> describe pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

如果你忘记了表中列的名称或它们具有的类型,使用可以该  描述  命令。


三,将数据加载到表中

创建表后,可以你用该  LOAD DATA状语从句:  INSERT语句将数据填充到表中。

假设您的宠物记录可以如下所示进行描述。(注意MySQL期望'YYYY-MM-DD'格式的日期;这可能与你习惯的不同。),

名称 所有者 种类 性别 分娩 死亡
蓬松 哈罗德 F 1993年2月4日  
格温 1994年3月17日  
巴菲 哈罗德 F 1989年5月13日  
班尼 1990年8月27日  
鲍泽 黛安 1979年8月31日 1995年7月29日
格温 F 1998年9月11日  
惠斯勒 格温   1997年12月9日  
班尼 1996年4月29日  

1. LOAD DATA方式载入文件数据

使用这种方式,你首先需要创建一个文件,如per.txt,将导入表格的数据写在一个该文件中,每行包含一个记录,其值由制表符分隔,并按照CREATE TABLE语句中列出的顺序给出。对于缺失值(例如未知性别或仍然生活的动物的死亡日期),你可以使用NULL 值。要在文本文件中表示  NULL 值,请使用  \N(反斜杠,大写-N)。下面给出一个例子:

Fluffy    Harold    cat    f    1993-02-04    \N

字幕:要将文件加载pet.txt到  pet表中,请使用以下语句:

mysql> load data local infile "D:/pet.txt" into table pet;

结果,很遗憾,出现了这个版本的数据库不支持该命令,这是因为安装的MySQL数据库时,系统自动设置本地INFILE的值为假,这么做的目的是为了防止别人恶意进行数据注入,攻击数据库,所以一般线上数据库都会关闭该load data local语句功能:

mysql> load data local infile "D:/pet.txt" into table pet;
ERROR 1148 (42000): The used command is not allowed with this MySQL version
mysql>

当然,在开发时,我们有自己的解决方案,我是这样做的,我直接找到数据库安装时的配置文件,使用选择@@ dataDir打印出文件位置,在目录C:\ ProgramData \ MySQL \ MySQL Server 8.0 \下找到my.ini文件,配置方式如下,

mysql> select @@dataDir;
+---------------------------------------------+
| @@dataDir                                   |
+---------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 8.0\Data\ |
+---------------------------------------------+
1 row in set (0.00 sec)

mysql>

## 需要在那一端使用 load data local  命令就配置在哪一端
## 服务端配置
[mysqld]          
enable-local-infle
## 客户端配置  
[mysql]         
enable-local-infile

因为我是学习用的,就服务端和客户端都在本地,所以直接配置一个就行了,我这里配置在服务端

然后就是需要在进入数据库带上当地的infile参数

再次导入数据,导入成功,记住,每个记录行之间不要有空行,不然就会出现下面的华林提示,表中还会有空的记录行

## 如果你在Windows上使用编辑器创建该文件 \r\n作为行终止符,则应使用此语句:
mysql> load data local infile "D:/pet.txt" into table pet
    -> lines terminated by '\r\n';
Query OK, 15 rows affected, 42 warnings (0.09 sec)
Records: 15  Deleted: 0  Skipped: 0  Warnings: 42

2. INSERT方式,插入数据记录

mysql> insert into pet
    -> values ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Query OK, 1 row affected (0.00 sec)

四,从表中检索信息

由于篇幅过多,我把这个部分放在“MySQL 8的学习--4从表中检索信息

猜你喜欢

转载自blog.csdn.net/zjy_android_blog/article/details/81460033