### MySQL服务器提供数据管理服务
1. GUI
2. CUI
3. 程序连接( Node PHP JAVA )提供的API连接管理数据库
### MySQL严格意义上来说并不是一个数据库,它是一个数据库管理软件,里面提供了很多的东西
1. 安装目录mysql.exe用来连接数据库服务器 ./mysql -uroot -p
2. 显示数据库表:show databases;
| information_schema | 数据库内置表,不能改动
| mysql | 数据库内置表,不能改动
| performance_schema | 数据库内置表,不能改动
| phpmyadmin |
| test |
3. 创建数据库:create database name;
4. 操作数据库:use first;
5. 查看表:show tables;
6. 选择表中的某一项数据:select * from users; select * from users where gender="男"
### Navicat:GUI图形操作软件
1. 连接主机填写对应的服务器IP地址,本机填写本机
2. 客户端装客户端连接软件,服务器提供服务,可以不需要安装
### 数据库的组成
1. 数据库是由表组成的,表是由行和列组成的
2. MySQL维护着各种各样的数据库,比如商城数据库,博客数据库,MySQL是数据库的集合,数据库是表的集合,表是行和列的集合
### Node程序连接数据库
1. Node并未原生提供连接数据库的API,使用第三方模块进行连接
2. mysql2:Node连接数据库模块
const connection = mysql.createConnection(opt) 创建连接
connection.query('SELECT username,age,gender FROM tableName ORDER BY id DESC') 查询表数据,并按id序
connection.query('INSERT INTO todo (title,done) VALUES ("'+ title + '", 0)') 插入数据
connection.close() 关闭数据库连接
3. 查询数据库是耗时操作,需要使用异步操作
4. 数据库分页查询原理:LIMIT OFFSET
### 数据库相关命令
1. ORDER BY:排序
2. DESC:降序
3. ASC:升序:默认
4. LIMIT 3:限制三条数据
5. OFFSET 1:偏移1条数据,使用限制:必须配合LIMIT使用,单独使用无效
6. LIMIT OFFSET联合书写:limit 4, 2:OFFSET在前,LIMIT在后
6. WHERE done = 1:根据条件进行查询
7. 查询参数:??:表示表名或字段名 ?:表示值
8. UPDATE tableName SET property=newval:更新值
9. DELETE FROM tableName WHERE id= 1:删除值,特别注意,不带where会删整个库
10. SELECT DISTINCT done FROM todos:筛选状态,查询某个字段有几种状态
11. 多条件排序:ORDER BY id DESC, done ASC:先按ID降序,再按done升序
12. 模糊查询:Jack%开头 %Jack结尾 %Jack%包含Jack
SELECT * FROM TODO WHERE title LIKE '%koa%' || NOT LIKE 不相同
13. 批量处理: UPDATE TODO SET done=1 WHERE id in (3,6)