写在最前面:不同的MySql的版本,相应的sql命令语句不是完全一样的,我的数据库是版本是5.7.18.
0: 数据库相关基本概念介绍
数据库 vs 数据库管理系统
当我们说到数据库时,可能会讨论到MySql, Oracle, PostgreSQL. 实际上,更准确地说法是他们都是DBMS(Database Management System)。数据库的存储,检索,管理等所有的功能都是由DBMS来完成的。
服务端 vs 客户端
当我们使用数据库管理系统时,我们同时需要服务端和客户端。下面以一个查询为例。
客户端:我们想要查询数据的时候,需要在一个地方书写我们的sql语句,这个地方就是客户端。但是这个语句的执行,并不在客户端。客户端会把这个语句发送到服务端。
服务端:服务端接收到客户端发来的查询请求,执行查询,拿到结果,把结果返回给客户端。
服务端和客户端通过socket通信,具体是什么socket会根据不同的情况不一样,你也可以自己指定socket的类型。例如:--protocol=TCP
我们以MySql为例,当我们安装完MySql的时候,实际上安装了服务端。当然,会附赠一个服务端(MySql的命令行实用程序)。但是,有很多别的客户端供你选择,比如你可以选图形界面化的MySql客户端(MySql Workbench)。
1: 安装MySql
可以到MySql的官网下载安装包,也可以在命令行使用homebrew安装,这里不展开。
2: 启动MySql
mysql.server start
在从客户端链接到服务端之前,先要启动MySql
3: 链接到MySql
要使用MySql,首先要链接到MySql。
链接到一个数据库服务端需要提供以下4个信息:
1: 服务端所在的主机名(host),本地为localhost
2: 端口
3: 用户名
4: 密码(如果需要密码的话)
在命令行里需要执行以下命令:
mysql -h myhost -u myname -p
因为我是在自己的电脑上安装了MySql的服务端,所以下面以链接到本地MySql为例:
mysql h localhost -u root
如果链接成功,这时候会看到mysql命令行客户端:
mysql>
我是采用homebrew安装的,安装好之后默认root用户是没有密码的,所以这里没有使用-p。但是,我们可以自己给root这个用户名设置一个密码:
mysql> UPDATE mysql.user set authentication_string = PASSWORD('your_password') where User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
以上两个步骤,就成功地给root用户设置了一个密码。下次再重新使用root用户登陆的时候就必须带上密码了。
4: 显示数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
使用show databases;可以显示所有的数据库,这里显示了安装MySql之后默认的2个数据库。
注意:sql语句一定要以分号来表示一个命令的结束。
5: 创建数据库
mysql> create database crashcourse;
这样我们就成功地创建了一个名为crashcourse的数据库。现在这个数据库是空的。接下来我们就往数据库里面创建一张表。
6: 创建表
一张表一定是从属于某个数据库的,所以,在我门创建表之前,先选定我们即将要操作的数据库。可以通过命令:
use 数据库的名字;
其实在进行任何基于某个数据库的操作前,先选定一个数据库是非常正确和方便的事情。这里以我们刚刚创建好的crashcourse这个数据库为例:
mysql> use crashcourse;
创建一张表的命令为:
create table 表名称(列声明);
接下来我们以创建一张商品货物表为例:
Create table products (
product_id varchar(20) not null,
product_name varchar(20) not null,
product_price decimal(7, 2) not null,
vendor_id varchar(20) not null,
primary key(product_id)
);
7: 显示表
显示一个数据库的有哪些表,使用的sql命令是:
show tables from databse_name;
如果在这之前你已经选定了一个数据库(通过use database_name命令),则只需要:
show tables;
我们以我门刚刚创建的crashcourse数据库和products表为例:
mysql> show tables from crashcourse;
+-----------------------+
| Tables_in_crashcourse |
+-----------------------+
| products |
+-----------------------+
1 row in set (0.00 sec)
8: 显示列
mysql> show columns from products;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| product_id | varchar(20) | NO | PRI | NULL | |
| product_name | varchar(20) | NO | | NULL | |
| product_price | decimal(7,2) | NO | | NULL | |
| vendor_id | varchar(20) | NO | | NULL | |
+---------------+--------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
至此,我们就创建了
一个数据库:crashcourse,
在crashcourse里面创建了一张表:products,
给products表创建了4列:product_id,product_name, product_price, vendor_id.
但是,现在我么们的表里面还没有任何的数据,在下一篇文章里,我们来往表里面添加数据。