Day28笔记
一、数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
二、数据库管理系统
指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统可视化访问数据库中表内的数据。
三、数据库表
数据库中以表为单位存储数据。数据库表与JavaScript的类相似,对应的关系可以看成为:
- 类 => 表
- 类中属性 => 表中字段
- 实例对象 => 每条记录
根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录。
四、SQL语句
SQL分类
- 数据定义语言DDL(Data Definition Language):用来定义数据库对象,关键字:
create
,alter
,drop
等。 - 数据操作语言DML(Data Manipulation Language):用来定义数据库中表的记录进行更新,关键字:
insert
,delete
,updata
等。 - 数据控制语言DCL(Data Control Language):用来定义数据库的访问权限和安全级别,及创建用户。
- 数据查询语言DQL(Data Query Language):用来查询数据库中表的记录,关键字:
select
,from
,where
等。
SQL语法
- SQL语句可以单行或多行书写,以分号结尾。
- 可使用空格和缩进来增强语句的可读性。
- MySQL数据库的SQL语句不区分大小写,建议使用大写。
- 同样可以使用/**/的方式完成注释。
- 主键:一张表只能有一个主键(字段),用来约束该字段里的数据,不能重复,这种称之为主键,主键清尽量使用整数而不是字符串类型。
SQL常用数据类型
类型名称 | 说明 |
---|---|
int | 仅容纳整数。 |
decimal(m,d) | 压缩严格的定点数, m表示数字总位数,d表示保留到小数点后d位,不足部分就添0,如果不设置m、d,默认保存精度是整型。 |
year | 年份 YYYY |
time | 时间 HH:MM:SS |
date | 日期 YYYY-MM-DD |
datetime | 日期时间 YYYY-MM-DD HH:MM:SS |
char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)size表示规定字符串的长度。 |
varchar(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊字符)size表示规定字符串的长度。 |
注:char长度固定,chat存取速度比varchat快很多,方便程序的存储与查找。但是因为其长度固定,所以会占据多余的空间。
数据库database操作
// 创建数据库,默认编码utf8
CREATE DATABASE 数据库名;
// 创建数据库并指定数据的编码,也可用来修改数据库的编码
CREATE DATABASE 数据库名 CHARACTER SET gbk;
// 查看服务器中所有的数据库
SHOW DATABASES;
// 查看某个数据库的信息
SHOW CREATE DATABASE 数据库名;
// 删除数据库
DROP DATABASE 数据库名;
// 切换数据库
USE 数据库名;
// 查看正在使用的数据库
SELECT DATABASE();
数据库操作表
// 创建分类表
CREATE TABLE 表名 (
字段名 类型(长度),
字段名 类型(长度)
)
// 查看数据库中所有的表
SHOW TABLES;
// 删除表
DROP TABLE 表名;
// 修改表名
RENAME TABLE 旧表名 TO 新表名;
// 添加新字段
ALTER TABLE 表名 ADD 字段名 类型(长度);
// 修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度);
// 删除字段
ALTER TABLE 表名 DROP 字段名;
// 插入记录
INSERT INTO 表名 (字段1,字段2) VALUES (数据1,数据2);
// 修改数据
UPDATE 表名 SET 字段名 = 新数据 WHERE 主键 = 主键值;
// 删除记录
DELETE FROM 表名 WHERE 主键 = 主键值;
数据库SELECT查询
// 查询
SELECT 字段名,字段名 FROM 表名;
// 去重查询
SELECT DISTINCT 字段名 FROM 表名;
// 排序 DESC(降序)ASC(升序)
SELECT 字段1,字段2 FROM 表名 ORDER BY 字段 DESC/ASC;
数据库WHERE条件查询
逻辑运算符
- AND => &&
- OR => ||
- NOT => !
比较运算符
>
=> 大于<
=> 小于>=
=> 大于等于<=
=> 小于等于- != => 非等于
- <> => 不等于
BETWEEN操作符
// 介于两个值之间的数据,可以是数值、文本或者日期。
WHERE 字段名 BETWEEN 数据1 AND 数据2;
LIKE操作符
// 指定搜索
WHERE 字段名 LIKE '%数据%';
// % => 定义通配符,数据中缺少的字母,类似正则表达式。
IN操作符
// 规定搜索
WHERE 字段名 IN (数据1,数据2);
五、NODE模块化编程
- NODE是模块化开发。
- 每一个JS文件都是一个独立的模块。
- 都有自己独立的作用域。
- 通过导入导出的方式把多个JS文件合并在一起。
导入
require('JS文件路径')
// 导入的数据类型为对象。
导出
module.exports = {
属性名:属性值,
方法名:function () { }
}
// 导出的数据类型为对象。
FS内置模块
// 直接导入就可以使用FS模块。
const fs = require('fs')
// 用FS模块异步读取文件,因为是异步读取,所有要在回调函数里获取结果。
fs.readFile('文件路径','utf8',function(err,data) {
// err 表示读取的时候出现的错误。
// data 表示读取到的内容,如果读取错误,那么data没有内容。
})
// 同步读取
const res = fs.readFileSync('文件路径','utf8')
// 同步读取的时候,如果出错会直接在控制台报错,并中断程序执行。
// 如果没有错误,res 就会得到文件中的内容。
// 异步写入文件
fs.writeFile('文件路径','写入的内容',function() {
console.log('写入完成')
})
// 同步写入文件
fs.writeFileSync('文件路径','写入的内容')