前提:假设我们的电脑或服务器已经正确安装了mysql服务器
一:连接和断开mysql服务器
1.1连接数据库服务器
shell> mysql -u user -p (user用户名通常为root,-u -p 两个mysql的参数名。然后按enter健会提示我们输入密码,如下)
Enter password:********
如果数据库在其它电脑上,我们必要加入IP地址如下
shell> mysql -h host -u user -p (host 即远程服务器地址 -h参数 host参数值),如果密码和用户名全部正确则进入mysql服务器,界面如下
shell>mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g. //欢迎你
Your MySQL connection id is 25338 to server version: 5.7.26-standard // 告诉你连接的ID 和数据库版本好
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. //一些提示信息 你可以尝试在mysql(提示符)输入help看看😄
mysql>
1.2与服务器断开
mysql>QUIT
Bye //断开成功
备注:在Unix上,您也可以通过按Control + D断开连接。
二:输入查询(select作为调用函数的命令)
select 你可以理解为调用mysql的一个指令,该指令不仅可以查询表中的数据,同时可以调用mysql服务器定义的函数和运行一些简单的数学计算。本小结仅展示select调用函数的例子
2.1查询当前版本和日期
mysql> SELECT VERSION(), CURRENT_DATE(); //查询的结果会以表格的形式显现+-----------+--------------+
| VERSION() | CURRENT_DATE()| // 查询的列
+-----------+--------------+
| 5.7.23 | 2019-02-06 | //查询出来的数据
+-----------+--------------+
1 row in set (0.03sec) //返回 执行的时间(性能)和查询出的数据和
mysql> //准备下次输入
2.2 将 mysql用作简单的计算器
mysql> SELECT SIN(PI()/4), (4+1)*5;+--------------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+--------------------+---------+
| 0.7071067811865475 | 25 |
+--------------------+---------+
1 row in set (0.03 sec)
三:创建和使用数据库
3.1.1创建数据库(CREATE DATABASE 数据库名)
CREATE DATABASEmydatabase; //创建数据库mydatabase
Query OK,1 row affected (0.01 sec) //创建成功(如果库名已经存在 ERROR 1007*** 就是告诉你数据库名已经存在)
#出现以上结果则说明创建成功。虽然我们创建了一个数据库,但服务器并不能确定我们就开始使用这个数据库,如果我们想使用我们创建的这个数据库我们必须告诉它
3.1.2 使用数据库(use 数据库名)
mysql> usemydatabase;Database changed //告诉我们当前数据库已经改变了
备注:
查看服务器所有数据库: SHOW DATABASES
参看数据库创建信息:show create database 库名
show create databasemydatabase;+------------+-----------------------------------------------------------------------+
| Database | Create Database |
+------------+-----------------------------------------------------------------------+
| mydatabase | CREATE DATABASE `mydatabase` /*!40100 DEFAULT CHARACTER SET latin1*/ | //使用了默认的字符集和相关参数
+------------+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
参看数据库中信息(表):SHOW TABLES;
参看当前使用的数据库 : SELECT DATABASE();
3.2.1 创建表
例如我们现在需要创建一个关于宠物的表,该表包含宠物的名字,主人,种类....
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.05 sec)
3.2.1 查看创建时的表述信息 DESCRIBE 表名
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.01 sec)
备注:
3.3 将数据加载到表中
创建表后,您需要填充它。该LOAD DATA和语句是这个有用的。
3.3.1 使用:LOADDATALOCALINFILE '文件路径' INTOTABLE 表名 fields terminated by '列分割符' LINESTERMINATEDBY '行分割符';加载数据。
如果需要从一个文件中加载数据到我们的数据库中,我们就可以使用load data语法。例如我们有个pet.txt文件,该文件的数据如下表
Whistler|Gwen|bird|\N|1997-12-09|\N
Whistler2|Gwen2|bird2|\N|1997-12-01|\N
Whistler3|Gwen3|bird3|\N|1997-12-10|\N
加载数据:load data local infile '/mysqldata/pet.txt' into table petfields terminated by '|';
Query OK, 3 row affected (0.00 sec)
Records: 1Deleted: 0Skipped: 0Warnings: 0
备注:load data 的默认列分割符是制表符,默认的行分割符是换行符,但我们可以手动指定如上案例,指定列分割符是‘|’
Windows上使用编辑器创建该文件 \r\n作为行分割符
3.3.2 使用 INSERTINTO table_name() VALUES();添加一条数据到表中
INSERT INTOpet-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Query OK,1 row affected (0.01 sec)
备注:我们可以指定插入表中的列的部分数据,其它可以不插入(其它作为默认值)
例如SQL:我们仅仅指定了名字和生日,其它都会以NULL插入
INSERT INTO pet(name,birth)VALUES ('Purr','1999-03-30');
Query OK,1 row affected (0.00 sec)
3.4 从表中查询信息SELECT
[ALL | DISTINCT | DISTINCTROW] //可选参数 All就是查询所有。DISTINCT 不重复的项,DISTINCTROW = DISTINVCT(的同义词)select_expr[, select_expr ...] // *是查询所有列,也可以指定查询的列
[FROM table_references //需要查询的表
[WHERE where_condition] //查询条件
[GROUP BY {col_name | position} //对查询的结果进行分类
[ASC | DESC]][HAVING where_condition] //对分类的结果再进行条件筛选
[ORDER BY {col_name | position} //对结果进行排序
[ASC | DESC], ...][LIMIT {[offset,] row_count |row_count OFFSET offset}] //分页输出
分解:
select_expr:可以使用别名,也可以是个聚合函数
例 select sex as '性别',concat(first_name,second_name) from 表名;//不解释
备注:
3.4.1 简单查询需求
3.4.2 对查询结果排序
3.4.3 使用聚合函数(mysql服务器为我们预先编辑的函数)
3.4.4 null的使用
3.4.5 匹配模式(正则 和 like 关键字)
3.4.6 多表联合查询
四:常见查询示例