1.数据库能干什么
持久的存储数据
备份和恢复数据
快速的存取数据
权限控制
2.数据库的类型
2.1.关系数据库
特点:以表和表的关联构成的数据结构
优点:能表达复杂的数据关系。强大的查询语言,能精确查找想要的数据
缺点:读写性能比较差,尤其是海量数据的读写。数据结构比较死板
用途:存储结构复杂的数据
代表:Oracle、MySql、Sql Server
2.2.非关系型数据库
特点:简单的结构存储数据,文档型,键值对
优点:格式灵活,海量数据读写效率很高
缺点:难以表示复杂的数据结构,对于复杂查询效率不好
用途:存储结构简单的数据
代表:MongoDB,Redis,Membase
2.3.面向对象数据库
3.术语
DB: database 数据库
DBA:database administrator 数据库管理员
DBMS:database management system 数据库管理系统
DBS:database system 数据库系统
MySql特点
1.关系型数据库,开源(商用版、社区版),轻量,快速
2.瑞典MySQL AB 公司开发,现已被Oracle收购
安装MySql
下载 : MySQL :: Download MySQL Community Server
3.数据库设计
3.1.SQL
Structured Query Language 结构化查询语言
大部分关系型数据,拥有着基本一致的SQL语法
3.1.1.DDL
Data Definition Language 数据定义语言
操作数据库对象:库、表、视图、储存过程
3.1.2.DML
Data Manipulation Language 数据操控语言
操作数据库中的记录
3.1.3.DCL
Data Control Language 数据控制语句
操作用户权限
3.2.管理库
3.2.1.创建库
CREATE DATABASE 数据库名;
3.2.2.切换当前库
use 数据库名称;
3.2.3.删除库
drop database <数据库名>;
3.3.管理表
创建表
字段名
字段类型(前端常用类型)
- bit:占1位,0或1,false或true
- int:占32位,整数
- decimal(M,N):能精确计算的实数,M是总的数字位数,N是小数位数
- char(n):固定长度位n的字符
- varchar(n):长度可变,最大长度位n的字符
- text:大量的字符
- date:仅日期
- datetime:日期和时间
- time:仅时间
4.主键和外键
4.1.主键
根据设计原则,每张表都要有主键
主键必须满足的要求:唯一、不能更改、无业务含义
4.2.外键
用于产生表关系的列
外键列会连接到另一张表(或自己)的主键
5.表关系
5.1.一对一
一个A对应一个B,一个B对应一个A
例如:数据量特别大的情况
5.2.一对多
一个A对应多个B,一个B对应一个A,A和B是一对多,B和A是多对一
例如:班级和学生,用户和文章,省市区三级选择
5.3.多对多
一个A对应多个B,一个B对应多个A
例如:学生和老师
6.三大设计范式
-
要求数据库表的每一列都是不可分割的原子数据项
-
非主键列必须依赖于主键列
-
非主键列必须直接依赖主键列
7.表记录的增删改
DML:Data Manipulation Language 数据操控语言
增 CREATE
增加一条数据:
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (值1,值2,值3,值4...);
增加多条数据(用,分隔开即可):
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (值1,值2,值3,值4...),
(值1,值2,值3,值4...);
改 UPDATE
UPDATE student SET `字段`='值' //修改字段的所有值
WHERE id=num; //修改增加条件
删 DELETE
DELETE FROM 表名 //清空
WHERE name='张三211'; //增加条件删除
8.单表查询
select
*,as,case,distinct
from
where
=,in,is,is not,>,<,>=,<=,between,like,and,or
order by
asc 升序,desc降序
limit n,m
n,m 跳过n条数据,取出m条数据
运行顺序
from -> where -> select -> order by -> limit
9.联表查询
笛卡尔积
9.1左连接
左外连接,left join
9.2右连接
右外连接,right join
9.3内连接
inner join
10.mysql驱动程序
10.1.什么是驱动程序
定义
驱动程序是连接内存和其他存储介质的桥梁
mysql驱动
mysql驱动程序是连接内存数据和mysql数据的桥梁
mysql驱动程序
mysql
官方驱动
mysql2
第三方驱动,以前叫mysql-native。现基本与官方驱动合并
10.22.参考地址
GitHub - sidorares/node-mysql2: fast mysqljs/mysql compatible mysql driver for node.js
10.3.防止sql注入
sql注入
-
用户通过注入sql语句到最终查询中,导致了整个sql与预期行为不符
-
变量的内容不作为任何sql关键字