热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

node(三)数据库

1.数据库简介1.数据库的能干什么持久的存储数据备份和恢复数据快速的存取数据权限控制2.数据库的类型1.关系数据库​特点:以表和表的关联构成的数据结构

1.数据库简介


1.数据库的能干什么

持久的存储数据

备份和恢复数据

快速的存取数据

权限控制


2.数据库的类型


1.关系数据库

​ 特点:以表和表的关联构成的数据结构

​ 优点:能表达复杂的数据关系。强大的查询语言,能精确查找想要的数据

​ 缺点:读写性能比较差,尤其是海量数据的读写。数据结构比较死板

​ 用途:存储结构复杂的数据

​ 代表:Oracle、MySql、Sql Server


2.非关系型数据库

​ 特点:简单的结构存储数据,文档型,键值对

​ 优点:格式灵活,海量数据读写效率很高

​ 缺点:难以表示复杂的数据结构,对于复杂查询效率不好

​ 用途:存储结构简单的数据

​ 代表:MongoDB,Redis,Membase


3.面向对象数据库


3.术语

DB: database 数据库

DBA:database administrator 数据库管理员

DBMS:database management system 数据库管理系统

DBS:database system 数据库系统


2.MySql的安装


1.MySql特点

​ ①关系型数据库,开源(商用版、社区版),轻量,快速

​ ②瑞典MySQL AB 公司开发,现已被Oracle收购


2.安装MySql

​ 下载 : https://dev.mysql.com/downloads/mysql/

​ 安装

第一步

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aOOB1NFL-1636255700795)(imgs/image-20210321151118321.png)]

​ 只需要服务即可

第二步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NCdyPev-1636255700798)(imgs/image-20210321151353874.png)]

检测依赖状态,选中,点击Execute

​ 后面全都下一步,有一个地方需要输入密码,输入,自己记住即可

1.安装完成以后去服务检测即可

2.输入cmd,输入mysql,如果错误,配置环境变量


3.使用


1.进入mysql命令交互

mysql -uroot -p

-uroot 表示使用root超级管理员登录

-p 表示使用密码登录


1.1查看当前数据库字符编码

show variables like 'character\_set\_%';

1.1.1修改默认字符编码my.ini文件

​ 文件路径:C:\ProgramData\MySQL\MySQL Server 5.7 (ProgramData为隐藏文件夹)

​ 设置 成utf8或者utf8mba

​ utf8mba的格式占4个字节,可以存一些特殊的繁体字,自行配置即可


1.1.2将my.ini文件放到mysql的安装目录中

1.1.3重启mysql服务

​ ①图形化界面重启(推荐) 我的电脑右键-> 服务和应用程序 -> 服务

​ ②cmd命令行重启,必须用管理员打开cmd窗口

net stop 服务名称

net start 服务名称

1.2 查看当前拥有的数据库

show databases;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ned2HZlS-1636255700800)(imgs/image-20210321160112966.png)]

默认有四个系统数据库,不管即可


2.navicat或者dataGrip


3.数据库设计


1.SQL

​ Structured Query Language 结构化查询语言

大部分关系型数据,拥有着基本一致的SQL语法


1.DDL

​ Data Definition Language 数据定义语言

​ 操作数据库对象:库、表、视图、储存过程


2.DML

​ Data Manipulation Language 数据操控语言

​ 操作数据库中的记录


3.DCL

​ Data Control Language 数据控制语句

​ 操作用户权限


2.管理库

1.创建库

CREATE DATABASE 数据库名;

2.切换当前库

use 数据库名称;

3.删除库

drop database <数据库名>;

3.管理表

创建表

字段名

字段类型(前端常用类型)

​ ①bit&#xff1a;占1位&#xff0c;0或1&#xff0c;false或true

​ ②int&#xff1a;占32位&#xff0c;整数

​ ③decimal(M,N)&#xff1a;能精确计算的实数&#xff0c;M是总的数字位数&#xff0c;N是小数位数

​ ④char(n)&#xff1a;固定长度位n的字符

​ ⑤varchar(n)&#xff1a;长度可变&#xff0c;最大长度位n的字符

​ ⑥text&#xff1a;大量的字符

​ ⑦date&#xff1a;仅日期

​ ⑧datetime&#xff1a;日期和时间

​ ⑨time&#xff1a;仅时间

是不是null

自增 必须是主键

默认值

修改表

删除表

DROP TABLE 数据库名称 .表名称; //不在当前库
DROP TABLE 表名称; //在当前库

4.主键和外键


1.主键

​ 根据设计原则&#xff0c;每张表都要有主键

主键必须满足的要求&#xff1a;唯一、不能更改、无业务含义


2.外键

​ 用于产生表关系的列

​ 外键列会连接到另一张表&#xff08;或自己&#xff09;的主键


5.表关系


1.一对一

​ 一个A对应一个B&#xff0c;一个B对应一个A

​ 例如&#xff1a;数据量特别大的情况


2.一对多

​ 一个A对应多个B&#xff0c;一个B对应一个A&#xff0c;A和B是一对多&#xff0c;B和A是多对一

​ 例如&#xff1a;班级和学生&#xff0c;用户和文章&#xff0c;省市区三级选择


3.多对多

​ 一个A对应多个B&#xff0c;一个B对应多个A

​ 例如&#xff1a;学生和老师


6.三大设计范式


  1. 要求数据库表的每一列都是不可分割的原子数据项

  2. 非主键列必须依赖于主键列

  3. 非主键列必须直接依赖主键列


7.表记录的增删改

DML:Data Manipulation Language 数据操控语言

增 CREATE

增加一条数据&#xff1a;
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (1&#xff0c;值2&#xff0c;值3&#xff0c;值4...);增加多条数据&#xff08;用&#xff0c;分隔开即可&#xff09;&#xff1a;
INSERT INTO student ( 字段1, 字段2,字段3,字段4... )
VALUES (1&#xff0c;值2&#xff0c;值3&#xff0c;值4...),
(1&#xff0c;值2&#xff0c;值3&#xff0c;值4...);

改 UPDATE

UPDATE student SET &#96;字段&#96;&#61;&#39;值&#39; //修改字段的所有值
WHERE id&#61;num; //修改增加条件

删 DELETE

DELETE FROM 表名 //清空
WHERE name&#61;&#39;张三211&#39;; //增加条件删除

8.单表查询


select

*,as,case,distinct


from


where

&#61;,in,is,is not,>,<,>&#61;,<&#61;,between,like,and,or


order by

asc 升序,desc降序


limit(n,m)

n,m 跳过n条数据&#xff0c;取出m条数据


运行顺序

from -> where -> select -> order by -> limit


9.联表查询


笛卡尔积


左连接

​ 左外连接&#xff0c;left join


右连接

​ 右外连接&#xff0c;right join


内连接

​ inner join


10.mysql驱动程序


1.什么是驱动程序


定义

驱动程序是连接内存和其他存储介质的桥梁


mysql驱动

mysql驱动程序是连接内存数据和mysql数据的桥梁


mysql驱动程序


mysql

​ 官方驱动


mysql2

​ 第三方驱动&#xff0c;以前叫mysql-native。现基本与官方驱动合并


2.参考地址

https://github.com/sidorares/node-mysql2#readme


3.防止sql注入

sql注入


  1. 用户通过注入sql语句到最终查询中&#xff0c;导致了整个sql与预期行为不符

  2. 变量的内容不作为任何sql关键字


11.npm 包管理工具

node6.x以上自动集成npm
基本命令&#xff1a;
npm -v 查看包管理工具的版本
npm init npm初始化配置文件
npm install 资源名 --save 下载资源
npm i 资源名 --save 下载资源
npm uninstall 资源名 --save 卸载资源
npm uni 资源名 --save 卸载资源
–save 把资源下载至开发依赖中 dependencies
–save-dev 把资源下载至线上依赖中 devDependencies
-g 把资源下载到全局
npm update 资源名 更新资源
npm ls 查看安装的模块

cnpm 淘宝镜像
命令与npm一样

下载驱动 mysql2
连接数据库

const mysql &#61; require("mysql2/promise")async function test(){// 创建一个数据库连接const connection &#61; await mysql.createConnection({host: &#39;localhost&#39;,port : &#39;3306&#39;,user: &#39;root&#39;,password : &#39;root&#39;,database: &#39;school&#39;});const [results] &#61; await connection.query( &#39;SELECT * FROM &#96;company&#96;;&#39;)console.log(results)connection.end()//关闭数据库连接
}test()

下载sequelize后
连接数据库变得更方便功能也更多

// 连接数据库const { Sequelize } &#61; require(&#39;sequelize&#39;);const sequelize &#61; new Sequelize(&#39;myscholl&#39;, &#39;root&#39;, &#39;root&#39;, {host: &#39;localhost&#39;,dialect: &#39;mysql&#39;
});// 创建一个数据库连接的实力依赖的是连接池&#xff0c;所以不需要我们手动关闭数据库连接
// 有场景需要可以使用sequelize.close()进行关闭module.exports &#61; sequelize;

推荐阅读
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • Redis 主从复制机制详解及其工作原理
    主从复制机制在 Redis 中具有重要作用,能够实现读写分离、提升系统性能并提供快速的灾难恢复能力。具体实现方面,以一主两从的架构为例,需要创建三个独立的配置文件(.conf),分别用于主节点和两个从节点的设置。通过这种方式,可以从主节点同步数据到从节点,确保数据的一致性和高可用性。此外,还可以利用从节点进行读操作,减轻主节点的压力,进一步提高系统的整体性能。 ... [详细]
  • Java 点餐系统源代码附带管理后台(免费提供)
    本项目提供了一套基于 Java 的点餐系统,包括前端小程序和后端管理平台。采用 Spring Boot 和 SSM 框架,结合 MySQL 和 Redis 数据库技术,适用于学习和二次开发。有需要源代码的开发者可以通过私信联系,免费获取下载链接。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
author-avatar
个信2602881723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有