15、nodejs(国庆+中秋)(17-26)
------------------------------------------------------17------------------------------------------------------------
数据 - 数据库
关系型数据库:
MySQL、Oracle、SQLServer、Access、db2、fox pro
MySQL:
免费、中小网站
优点:性能非常不错
缺点:集群、容灾稍微弱一些
Oracle:
挺贵、大型应用、金融级
优点:性能非常不错、集群、容灾非常强
缺点:挺贵
文件型:
sqlite、mongodb
空间型:
Server端:
数据存在
Client端:
管理工具、Node
Server安装
数据基本概念:
两种单位:
1.库:文件夹-用来管理,本身没法存数据
2.表:文件-存数据的
表-Excel:
行-一条数据
列(字段、域)-一个数据项
用户名
密码
主键:唯一、性能高
唯一标识符
server:
client:
Navicat-管理工具
NodeJS-程序
库-管理,存不了数据
表-存数据
字段-列
行-一条数据
-------------------------------------------------------------18----------------------------------------------------------
数据库
NodeJS不支持MySQL
npm
服务端:
客户端:
node的mysql模块
1.连接
2.查询
SQL=>Structured Query Language(结构化查询语句)
SQL:
4大查询语句——增删改查
增-INSERT
INSERT INTO 表 (字段列表) VALUES(值列表)
INSERT INTO user_table
(ID
, username
, password
) VALUES(0, 'blue2', '987654');
删-DELETE
改-UPDATE
查-SELECT
SELECT 什么 FROM 表
SELECT * FROM user_table
;
SQL标准写法:
1.关键字大写
2.库、表、字段需要加上``
1.下载mysql模块(client)
2.连接
var db=mysql.createConnection(host, port, user, password, database) //?
3.查询
db.query(SQL, (err, data)=>{})
4.SQL语句
增删改查
-------------------------------------------------------------19---------------------------------------------------------
数据字典——数据定出来
1.banner(banner_table)
ID
title 标题 varchar(32)
sub_title 副标题 varchar(16)
src 图片地址 varchar(64)
2.文章(article_table)
ID
author 作者 varchar(16)
author_src 作者头像 varchar(64)
title 标题 varchar(32)
post_time 发布时间(s) int
content 内容 text
n_like 赞 int
3.用户(user_table)
ID
username 用户名 varchar(32)
password 密码 varchar(32)
src 头像 varchar(64)
-------------------------------------------------------------24--------------------------------------------------------
数据库:
SQL
四大操作语句-
1.删 DELETE
DELETE FROM 表 WHERE 条件
2.增 INSERT
INSERT INTO 表 (字段列表) VALUES(值列表)
3.改 UPDATE
UPDATE 表 SET 字段=值,字段=值,... WHERE 条件
4.查 SELECT
SELECT * FROM 表 WHERE 条件
------------------------------------------------------------------------------
子句:
WHERE 条件
WHERE name='blue'
WHERE age>18
WHERE age<=18
WHERE age>=18 AND score<60
WHERE cach>100 OR score>10000
ORDER 排序
ORDER BY age ASC/DESC
ASC-升序(从小到大)
DESC-降序(从大到小)
--------------------------
ORDER BY price ASC
*价格(price)升序排序,如果价格相同,再按销量(sales)降序排序
ORDER BY price ASC, sales DESC
--------------------------
GROUP 聚类-合并相同
*统计每个班人数
ID class name
"1" "1" "小明"
"2" "2" "小红"
"3" "1" "小刚"
"4" "2" "小华"
"5" "3" "小强"
"6" "3" "小四"
"7" "1" "小刘"
"8" "1" "小花"
SELECT * FROM student_table;
ID class name
"1" "1" "小明"
"2" "2" "小红"
"3" "1" "小刚"
"4" "2" "小华"
"5" "3" "小强"
"6" "3" "小四"
"7" "1" "小刘"
"8" "1" "小花"
SELECT * FROM student_table GROUP BY class;
ID class name
"1" "1" "小明"
"2" "2" "小红"
"5" "3" "小强"
SELECT class FROM student_table GROUP BY class;
class
"1"
"2"
"3"
SELECT class,COUNT(class) FROM student_table GROUP BY class;
class COUNT(class)
1 4
2 2
3 2
--------------------------
WHERE子句
ORDER子句——多条件排序
GROUP子句——合并
COUNT、MIN、MAX、AVG
--------------------------
GROUP
-------------------------------------------------------------25--------------------------------------------------------
数据库
GROUP-合并
*统计每个班的平均分
>SELECT * FROM student_table;
ID class name score
1 1 小明 34
2 2 小红 98
3 1 小刚 26
4 2 小华 99
5 3 小强 18
6 3 小四 95
7 1 小刘 57
8 1 小花 100
>SELECT * FROM student_table GROUP BY class;
ID class name score
1 1 小明 34
2 2 小红 98
5 3 小强 18
>SELECT class,AVG(score) FROM student_table GROUP BY class;
class score
1 54.25
2 98.5
3 56.5
*每个班级的最高、最低分
>SELECT class,MAX(score),MIN(score) FROM student_table GROUP BY class;
ID class name score
1 1 小明 34
2 2 小红 98
3 1 小刚 26
4 2 小华 99
5 3 小强 18
6 3 小四 95
7 1 小刘 57
8 1 小花 100
------------------------------------------------------------------------------
*每个人的消费总额
ID name price
1 blue 3
2 blue 5
3 张三 28000
4 李四 81000
5 blue 4
6 张三 46000
7 李四 38000
8 赵六 18
SELECT name,SUM(price) FROM sales_table GROUP BY name;
SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) DESC;
name SUM(price)
李四 119000
张三 74000
赵六 18
blue 12
SELECT name,SUM(price) FROM sales_table GROUP BY name ORDER BY SUM(price) ASC;
------------------------------------------------------------------------------
WHERE
ORDER
GROUP
*LIMIT-分页
-------------------------------------------------------------26--------------------------------------------------------
LIMIT-限制输出
分页:
1.所有数据给前端
2.后台只给一丁点数据
LIMIT 10; 前10条
LIMIT 5,8; 从5开始,要8个
分页:
每页20条
第1页 0,20 0~19
第2页 20,20 20~39
第3页 40,20
第n页 (n-1)*20,20
子句之间是有顺序
WHERE GROUP ORDER LIMIT
筛选 合并 排序 限制
SELECT class,COUNT(class) FROM student_table
WHERE score>60
GROUP BY class
ORDER BY COUNT(class) DESC
LIMIT 2;
1.数据字典
2.后台接口、静态资源
3.angular