网站建设这方面的,钱站网站如何,怎样做国际网站,河西区做网站的公司1. MySQL数据库
phpstudy 数据库服务器及图形化软件 软件链接 链接#xff1a;https://pan.baidu.com/s/1F8wdoMstHAJkINfDKDejsw 提取码#xff1a;xl3k 数据库对于我们前端同学来说#xff0c;就是一个了解。 对于不会变化的数据#xff08;省、市、县#xff09;…1. MySQL数据库
phpstudy 数据库服务器及图形化软件 软件链接 链接https://pan.baidu.com/s/1F8wdoMstHAJkINfDKDejsw 提取码xl3k 数据库对于我们前端同学来说就是一个了解。 对于不会变化的数据省、市、县我们可以保存到json文件中。 对于经常变化的数据我们建议保存到数据库中。 1.1 什么是数据库
数据库 (database) 是用来组织、存储和管理数据的仓库。 当今世界是一个充满着数据的互联网世界充斥着大量的数据。数据的来源有很多比如出行记录、消费记录、
浏览的网页、发送的消息等等。除了文本类型的数据图像、音乐、声音都是数据。
为了方便管理互联网世界中的数据就有了数据库管理系统的概念(简称:数据库)。用户可以对数据库中的数 据进行新增、查询、更新、删除等操作。
增删改查 新增删除修改查询
1.2 常见的数据库及分类
市面上的数据库有很多种最常见的数据库有如下几个:
MySQL 数据库(目前使用最广泛、流行度最高的的开源免费数据库;)Oracle 数据库(收费)SQL Server 数据库(收费)Mongodb 数据库(Community Enterprise)
其中MySQL、Oracle、SQL Server 属于传统型数据库(又叫做:关系型数据库 或 SQL 数据库)这三者的 设计理念相同用法比较类似。
而 Mongodb 属于新型数据库(又叫做:非关系型数据库 或 NoSQL 数据库)它在一定程度上弥补了传统型 数据库的缺陷。
1.3 MySQL简介
MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发目前属于 Oracle 旗下产品
我们常说数据库其实只是一个泛指。那么数据库的结构是怎样的呢
数据库服务器 数据库一般来说一个项目都会使用一个独立的数据库 数据表真正存储数据的地方 行与列每一行代表一条数据。列又叫做字段 真正存储数据的是数据表。数据表和我们见过的Excel表格结构基本相同。 数据表的结构和excel一模一样。
id不允许重复nameagesextel1王宇23男132000088882王宇23男133000088883裴志博25男18866669999……………
2 安装MySQL MySQL 服务器软件 ---- 存储数据可以创建数据库、数据表 MySQL图形化管理工具 — 可以使用它管理创建、增删改查等等数据库 2.1 安装MySQL服务软件
安装wampserver
安装过程略
2.2 安装操作MySQL的图形化工具Navicat
图形化的管理工具有很多种
mysql-workbeach英文版没有中文版Navicat
前面已经安装了MySQL软件。那么我们如何管理或者说使用它呢对于我们来说还需要安装一个管理MySQL的工具它就是 Navicat。
MySQL服务和图形化工具的关系 安装过程略但要记住你的安装目录。
破解将补丁中的 “navicat.exe” 复制到你的安装目录中覆盖原理的文件即可
3 Navicat使用
3.1 连接到MySQL服务器 3.2 创建数据库 3.3 创建数据表
比如创建一个学生信息表
id不允许重复nameagesextel1王宇23男132000088882王宇24男133000088883裴志博25男18866669999……………对于一张表最重要的是表头的设计 对于数据库中的数据表最重要的设计也是表头只不过在数据库中把表头叫做字段。 名表头类型长度不是null键其他idint√勾选自动递增namevarchar10√ageintsexchar1id – 自动递增 – √ 最后保存填表名 student 。 其他补充点 数据库中的数字类型 tinyint -128~127smallint -65535 ~ 65535int -21亿 ~ 21亿bigint 更大 数据库中的字符串类型 varchar - 变长字符串类型char - 定长字符串类型
3.4 导入导出数据表 导出 在数据表名字上比如 student 上右键 -- 转储SQL文件 -- 结构和数据选择保存位置保存即可。 导入 在数据库名上面 -- 右键 -- 运行SQL文件 -- 选择SQL文件运行即可完成导入。导入注意事项表名不能重复。
SQL语句重点
SQL(英文全称:Structured Query Language)是结构化查询语言专门用来访问和处理数据库的编程语言。
三个关键点
SQL 是一门数据库编程语言使用 SQL 语言编写出来的代码叫做 SQL 语句SQL 语言只能在关系型数据库(例如 MySQL、Oracle、SQL Server)中使用。非关系型数据库(例如 Mongodb) 不支持 SQL 语言
SQL能做什么
从数据库中查询数据向数据库中插入新的数据更新数据库中的数据从数据库删除数据可以创建新数据库可在数据库中创建新表可在数据库中创建存储过程、视图etc…
4. 数据查询
语法格式:
SQL语句不区分大小写。
-- 基本的查询语法
SELECT 字段1,字段2,... FROM 表名
select 字段,字段,.... from 表名-- 查询所有的字段
SELECT * FROM 表名-- 带条件的查询
SELECT * FROM 表名 [WHERE 条件] [ORDER BY 排序字段[, 排序字段]] LIMIT [开始位置,]长度.....4.1 基本查询
格式: select 字段名1, 字段名2,… from 表名
案例1: 查询所有英雄的姓名和昵称
select name,nickname from heroes案例2: 查询全部英雄的全部信息
select * from heroes4.2 带where子句的查询
select field1, field2… from 表名 查询表中的所有数据
where 可以使用条件来筛选查询出的结果 -- 查询id小于10的英雄
-- select * from heroes where 条件
-- select * from heroes where id10-- 查询id小于20的女英雄
-- select * from heroes where id20 and sex女-- 查询年龄大于等于20小于等于30的英雄
-- select * from heroes where age20 and age30
-- select * from heroes where age between 20 and 30
4.3 模糊查询
通配符: %: 代表任意长度(包括0)的任意字符 _: 代表1位长度的任意字符
like: 在执行模糊查询时必须使用like来作为匹配条件
-- 查询名字中带有 “斯” 的英雄
-- select * from heroes where name like %斯%-- 查询名字的最后一个字是 “斯” 的英雄
-- select * from heroes where name like %斯-- 查询名字中带有 “斯” 并且要求 “斯”前面只能有一个字的英雄
select * from heroes where name like _斯%4.34 统计查询
max 查询最大值 select max(age) from heroesMin 查询最小值 select min(age) from heroesavg 查询平均值 select avg(age) from heroessum 查询总和查询所有英雄的年龄之和 select sum(age) from heroescount 查询总记录数查询共计有多少个英雄 select count(*) cc from heroes
-- 查询所有英雄中年龄最大的的年龄
-- select max(age) from heroes-- 查询所有英雄中年龄最小的的年龄
-- select min(age) from heroes-- 查询所有英雄年龄的平均值
-- select avg(age) from heroes-- 查询所有英雄的年龄之和
-- select sum(age) from heroes-- 查询共计有多少个英雄
-- select count(*) from heroes-- 查询共计有多少英雄用cc表示
-- select count(*) cc from heroes4.4 查询结果排序
order by 可以对查询结果按某个字段进行升序或者降序排列
升序 asc 默认值降序 desc
可进行排序的字段通常是 整型 英文字符串型 日期型 (中文字符串也行,但一般不用)
-- select * from heroes order by 排序字段 asc/desc
-- asc 默认值可以省略表示升序
-- desc表示降序-- 查询所有的英雄按年龄升序排序
-- select * from heroes order by age asc
-- select * from heroes order by age-- 查询所有的英雄按年龄降序排序
-- select * from heroes order by age desc-- 查询所有的英雄先按年龄降序排序如果年龄相同的再按id降序排序
-- select * from heroes order by age desc, id desc-- 查询年龄大于50岁的英雄并按年龄降序排序
select * from heroes where age50 order by age desc注意如果SQL语句中有where和order bywhere一定要放到order by之前。
4.5 限制查询结果
limit 用来限制查询结果的起始点和长度
格式: limit start, length start: 起始点。 查询结果的索引从0开始。 0代表第一条数据。如果省略start则默认表示从0length: 长度
-- 查询所有英雄中前5个英雄
-- select * from heroes limit 起始位置, 长度
-- select * from heroes limit 0, 5
-- select * from heroes limit 5-- 查询所有英雄中第6到10个英雄
-- select * from heroes limit 5, 5-- 查询年龄最大的3个英雄
-- select * from heroes order by age desc limit 3-- 查询年龄最大的3个女英雄
select * from heroes where sex女 order by age desc limit 3注意where、order by、limit如果一起使用是有顺序的where在最前面、其次是order by、limit要放到最后。另外三者之间没有and之类的。
4.6 小结
控制查询的列数 select 字段, 字段, … from heroes ---- 选择查询指定的列select * from heroes ---- 查询所有的列 控制查询的行数 where 条件 where id3where id3 and age30where id3 or sex‘男’where name like ‘%斯%’ order by 字段 排序规则 order by age ascorder by age desc limit 起始位置, 长度 limit 0, 3 相当于 limit 3limit 3, 3 select 字段 from 表名 [where 条件] [order by 排序字段 排序规则] [limit 起始位置,长度] select count(*) as total from 表名 – 查询总记录数 5. 添加数据
基本的格式 insert into 表名 …
方式一指定字段和值只要字段和值对应即可。和顺序无关
insert into heroes (字段, 字段, ...) values (值, 值, ...)
insert into heroes (nickname, age, name) values (虚空恐惧, 98, 科加斯)方式二和顺序有关因为没指定字段所以值必须是所有的值而且顺序和表中字段的顺序要一致
insert into heroes values (null, 拉克丝, 光辉女郎, 女, 28)方式三使用set里设置新数据的值没有顺序关系
insert into heroes set 字段值, 字段值, ....
insert into heroes set name李青, nickname盲僧6. 修改数据
格式:
update 表名 set 字段1值1, 字段2值2,... where 修改条件
修改表中的哪一条几条数据的 字段1值1… 不指定修改条件会修改所有的数据 -- 加条件修改
update heroes set age28, skill在地上打滚 where id19
-- 如果不指定条件则会修改所有的行
update heroes set sex妖7. 删除数据
格式: delete from 表名 where 删除条件
注意不指定条件将删除所有数据
-- delete from heroes where id19
-- 不加条件将删除所有的数据危险操作
-- delete from heroesdrop table stu; – 删除stu表 drop database heroes – 删除库加入反引号可以防止出现问题否则MySQL可能会将70当做关键字或其他意思解释 小结
添加 insert into 表名 set 字段值, 字段值, 字段值, … 更新 update 表名 set 字段值, 字段值, 字段值 where 条件 删除 delete from 表名 where 条件
8. node中的mysql模块
8.1 mysql模块的作用
mysql模块是一个第三方模块专门用来操作MySQL数据库。 可以执行增删改查操作。
# 如果前面没有安装过其他模块需要先初始化
npm i mysqlcurd: 就代表数据库的增删改查
c: create 就是添加 增
u: update 就是修改 改
r: read 就是查询 查
d: delete 就是删除 删
8.2 mysql模块的使用步骤
在Node中使用MySQL模块一共需要5个步骤 加载 MySQL 模块 创建 MySQL 连接对象 连接 MySQL 服务器 执行SQL语句 关闭链接
// 1. 加载mysql模块
const mysql require(mysql);
// 2. 创建连接对象设置连接参数
const conn mysql.createConnection({// 属性值host: localhost,port: 3306,user: root,password: ,database: yingxiong
});// 3. 连接到MySQL服务器
conn.connect();// 4. 完成查询增删改查
/*
conn.query(SQL语句, [SQL中占位符的值], (err, result, fields) {err: 错误信息result: 查询结果fields: 当前查询过程中涉及到的字段信息一般用不着
});
*/// 5. 关闭连接释放资源
conn.end();8.3 基本的增删改查
基本的查询
执行查询类型的SQL语句查询结果result是一个数组数组的每个单元是对象每个对象就是一条记录对象的属性是数据表的字段名 // 1. 加载mysql
const mysql require(mysql);// 2. 创建连接对象填写连接参数
const conn mysql.createConnection({host: localhost,port: 3306,user: root,password: ,database: yingxiong,multipleStatements: true // 表示可以一次性执行多条SQL
})// 3. 连接到MySQL服务器
conn.connect();// 4. 完成查询
// conn.query(SQL语句, 给占位符的值, 回调函数);/// 4.1 基本的查询
conn.query(select * from heroes limit 2, (err, result) {if (err) throw err;console.log(result);
});// 5. 关闭连接
conn.end();执行增删改语句
要完成增删改操作只需要将SQL语句换成增删改语句即可。
对于增删改语句返回的result是一个表示SQL执行结果的对象。其主要属性如下
insertId 添加时有该属性表示新增数据的idaffectedRows 受影响行数表示受影响的行数。增删改的时候都有该属性changRows 改变的行数修改操作的时候会有该属性 // 1. 加载mysql
const mysql require(mysql);// 2. 创建连接对象填写连接参数
const conn mysql.createConnection({host: localhost,port: 3306,user: root,password: ,database: yingxiong,multipleStatements: true // 表示可以一次性执行多条SQL
})// 3. 连接到MySQL服务器
conn.connect();// 4. 完成查询
// conn.query(SQL语句, 给占位符的值, 回调函数);/// 4.2 增删改
conn.query(delete from heroes where id 1, (err, result) {if (err) throw err;console.log(result);
});// 5. 关闭连接
conn.end();8.4 占位符模式的增删改查
什么是占位符
SQL中的“?” 就是占位符。比如
select * from heroes where id ?insert into heroes set ?update heroes set ? where id ?delete from heroes where id ?
如何为占位符传值
当SQL语句中使用了占位符则query方法需要使用参数2为这些占位符传递实际的值。并且不同的 “” 需要的值格式也不同。具体要符合下面三种要求 SQL中有 1 个占位符则query方法的第二个参数设置为一个值 SQL中有 多 个占位符则query方法的第二个参数设置为数组数组中的值按顺序分别传递给每个占位符 SQL中如果 字段值,字段值...使用 “?” 站位了则需为这个 “?” 传递一个对象形式如下 let val {// 字段: 值name: 压缩,nickname: 疾风剑豪,// 其他...
}有占位符的增删改查
// 例子一查询id小于3的英雄
let sql select * from heroes where id ?;
conn.query(sql, 3, (err, result) {if (err) throw err;console.log(result);
});// 例子二查询id小于3的女英雄
let sql select * from heroes where id ? and sex ?;
conn.query(sql, [3, 女], (err, result) {if (err) throw err;console.log(result);
});// 例子三SQL中的 字段值, 字段值...的位置使用了一个占位符则需为该占位符传递一个对象
// 如果SQL语句中有 字段值, 字段值, .... 可以使用一个 ? 表示并且要为这个问号传递一个对象
let sql insert into heroes set ?;
let values {// 字段: 值name: 艾克,nickname: 时间刺客,age: 34
};
conn.query(sql, values, (err, result) {if (err) throw err;// console.log(result);if (result.affectedRows 0) {console.log(添加成功最新添加的id为 result.insertId);} else {console.log(添加失败);}
});// 例子四
// SQL中有两个占位符所以要传递一个数组
// 第1个问号表示 “字段值, 字段值...”所以为这个问号传递一个对象
let sql update heroes set ? where id ?;
let values {skill: 时光倒流,sex: 男
}
conn.query(sql, [values, 36], (err, result) {if (err) {console.log(修改失败);} else {console.log(修改成功);}
});