【MySQL】初见数据库
目录
什么是MySQL
?在我们服务器安装完 MySQL 服务之后,经常会看到两种概念,分别是 mysql 和 mysqld ,二者有什么区别呢?
?其实,MySQL 本质上就是一套基于CS模式的网络服务对数据内容存储的一套解决方案,而 mysql 则是数据库服务的客户端,mysqld 为数据库服务的服务器端(带d表示该进程为守护进程)。
?我们口语中常说的数据库特指的是,将来在磁盘上存储的一套数据库方案,而数据库服务则指的是mysqld。
为什么要使用数据库
?从用户的角度来看,一般的文件确实提供了数据的存储功能,但也有一些其他的漏洞。
例如:
- 文件的安全性问题
- 不利于数据的查询和管理
- 在程序中控制不便
?使用数据库后便可以简便化数据的存储,由此学习数据库的使用便十分重要。
数据库基础
数据库的本质
?打开 /var/lib/mysql 我们便会发现,有一系列的文件,其中还包含了几个目录文件,仔细一看好像就与我们在 mysql 中的数据库一样,查询我们的数据库后发现确实如此。
?若我们创建一个数据库,在该路径下便能够查询得到。
?当我们在文件之中删除这个目录(只是演示,并不推荐),再进行查询便找不到对应的数据库了。
存储引擎
?存储引擎就是数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新等技术的实现方法。
?我们可以使用 show engines; 查询服务中支持的存储引擎。
?我们还可以在语句后加上 G 让输出的结果以行为单位进行打印。
?MySQL 的核心就是插件式的存储引擎,支持多种存储引擎。
常用操作
?这里就简单讲一下几个简单的操作,方便直接上手,更多的细节放在之后的博客中进行讲解。
登录mysql
?登录 mysql 时需要使用这串命令,其中:
- -h 表示的是指明连接的数据库所在的ip,若没写则默认连接本地的数据库。
- -P表示对应的端口,默认为3306。
- -u 表示以什么身份连接。
- -p则表示之后输入的表示密码,若设置为无密码,在提示你输入密码后直接回车即可。
mysql -h ... -P ... -u ... -p
?熟悉上面的规则后,若我们想直接连接本地的数据库只需要以下命令即可。
mysql -u root -p
创建数据库
create database 数据库名
?这个操作在上面我们也使用过了,可以直接以默认的设定创建一个数据库。
使用数据库
?进行对该数据库的操作前,需要先将当前所在的数据库切换成该数据库,即使用该数据库。
use 数据库名;
查看数据库
?就像 Linux 中有 pwd 那样查看自己的路径,我们使用 select database() 查询当前所在的数据库。
创建数据库表
?数据库中又是一个一个的表组成,下面便介绍如何进行表的创建。
create table 表名(
...
...
);
?创建表时便会涉及 MySQL 的数据类型,这里简单介绍一下之后会有专门的博客来介绍 MySQL 的数据类型。
?例如,我们创建一个表用来描述一个人,这个人有他的学号,姓名。于是我们使用 int 作为学号的类型,使用 varchar 作为姓名的类型。
由此便可以这样写:
mysql> create table person(
-> id int,
-> name varchar(10)
-> );
?这样我们就在数据库中成功地创建了一个表,而且我们可以使用 desc 查看表的相关成员属性。
desc 表名
mysql> desc person;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
查看表
?我们可以使用这个操作查看当前数据库中的所有表。
show tables;
向表中插入数据
?虽然创建了好多个表,但是我们还未插入任何数据,因此当前表里都是空的,接下来我们就来介绍如何向表中插入数据。
insert into 表名 (内部成员名) values (要插入的值...);
?在写之前可以先用 desc 先查看一下表的成员组成,以便于接下来的插入操作。其中跟在表名后的这个括号决定的是在后方插入值的顺序,若不写则使用创建时的顺序进行插入。
mysql> desc person;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into person values(1,'张三');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person(name, id) values('李四',2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into person (id, name) values (3,'王五');
Query OK, 1 row affected (0.01 sec)
?于是,我们以三种不同的方法进行数值的插入,第一种是不写括号,二三种则是将括号里的顺序颠倒。
?接下来我们来看看插入之后的表会是什么样的。
查询表中数据
select * from 表名
?在上面我们往表插入了三个数据,通过查询操作我们可以看到插入的三个结果都是符合我们预期的,也验证了我们上方说法的正确性。
mysql> select * from person;
+------+--------+
| id | name |
+------+--------+
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
+------+--------+
3 rows in set (0.00 sec)
?好了,今天我们就简单介绍了 MySQL 和几个操作,以便能直接上手,更多具体的介绍会分别写作数据库的操作和数据库的数据类型两部分,敬请期待。