以下属于why老师nodejs视频教程内容

一、mysql语法

1.1、对数据库的操作

# 查询所有的数据库
SHOW DATABASES;# 新建一个新的数据库
-- CREATE DATABASE bili;
-- CREATE DATABASE IF NOT EXISTS bili;
CREATE DATABASE IF NOT EXISTS biliDEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;# 选择某一个数据库
USE bili;# 查看当前正在使用的数据库
SELECT DATABASE();# 删除数据库
DROP DATABASE IF EXISTS bili;# 修改数据库的编码
ALTER DATABASE biliCHARACTER SET = utf8COLLATE = utf9mb4_0900_ai_cs;

1.2、对数据表的操作

在这里插入代码片# 查看所有的表
SHOW TABLE;# 新建表
CREATE TABLE IF NOT EXISTS `students` (`name` VARCHAR(10) NOT NULL,`age` INT,`score` INT,`height` DECIMAL(10, 2),`birthday` DATETIME,`phoneNum` VARCHAR(20) UNIQUE
);
-- UNIQUE 不可重复
-- NOT NULL不可为空
-- AUTO_INCREMENT递增
-- PRIMARY KEY主键# 删除表
DROP TABLE IF EXISTS `students`;# 查看表的结构
DESC `students`;
# 查看创建表的sql语句
SHOW CREATE TABLE `students`;
-- CREATE TABLE `students` (
--   `name` varchar(10) DEFAULT NULL,
--   `age` int DEFAULT NULL,
--   `score` int DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- ---------------------------------------------------------------------------# 完整的创建表的语法
CREATE TABLE IF NOT EXISTS `users` (`id` INT PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(20) NOT NULL,`age` INT DEFAULT 0,`phoneNum` VARCHAR(20) UNIQUE DEFAULT '',`createTime` TIMESTAMP
)# 修改表
# 1.修改表的名字
ALTER TABLE `users` RENAME TO `user`;
# 2.添加一个新的列
ALTER TABLE `user` ADD `updateTime` TIMESTAMP;
# 3.修改字段的名称
ALTER TABLE `user` CHANGE `phoneNum` `telPhone` VARCHAR(20);
# 4.修改字段的类型
ALTER TABLE `user` MODIFY `name` VARCHAR(30);
# 5.删除某一个字段
ALTER TABLE `user` DROP `age`;# 补充# 根据一个表结构去创建另一张表
CREATE TABLE IF NOT EXISTS `user1` LIKE `user`;
# 根据另外一个表中的所有内容,创建一个新的表
CREATE TABLE IF NOT EXISTS `user3` (SELECT * FROM `user`);

1.3、对数据的增删改

# 插入数据
INSERT INTO `user` VALUES (110, 'why', '020-110120', '2020-10-20', '2020-11-11');
INSERT INTO `user` (name, telPhone, createTime, updateTime)VALUES ('kobe', '000-111111', '2020-10-10', '2030-11-10');INSERT INTO `user` (name, telPhone)VALUES ('lilei', '000-111112');# 需求:createTime和updateTime可以自动设置值
ALTER TABLE `user` MODIFY `createTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE `user` MODIFY `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;INSERT INTO `user` (name, telPhone)VALUES ('hmm', '000-111113');INSERT INTO `user` (name, telPhone)VALUES ('lucy', '000-111114');# 删除数据
# 1.删除所有数据
DELETE FROM `user`;
# 2.删除某一条数据
DELETE FROM `user` WHERE id = 110;# 更新数据
# 更新所有的数据
UPDATE `user` SET name = 'lily', telPhone = '010-110110';
# 更新符合条件的数据
UPDATE `user` SET name = 'lily', telPhone = '010-110110' WHERE id = 114;

1.4、数据库的查询语句

# 创建products的表
CREATE TABLE IF NOT EXISTS `products` (id INT PRIMARY KEY AUTO_INCREMENT,brand VARCHAR(20),title VARCHAR(100) NOT NULL,price DOUBLE NOT NULL,score DECIMAL(2,1),voteCnt INT,url VARCHAR(100),pid INT
);# 1.基本查询
# 查询所有的字段以及所有的数据
SELECT * FROM `products`;
# 查询指定的字段
SELECT title, price FROM `products`;
# 对字段结果起一个别名
SELECT title as phoneTitle, price as currentPrice FROM `products`;# 2.WHERE条件
# 2.1.条件判断语句
# 案例:查询价格小于1000的手机
SELECT title, price FROM `products` WHERE price < 1000;
# 案例二:价格等于999的手机
SELECT * FROM `products` WHERE price = 999;
# 案例三:价格不等于999的手机
SELECT * FROM `products` WHERE price != 999;
SELECT * FROM `products` WHERE price <> 999;
# 案例四:查询品牌是华为的手机
SELECT * FROM `products` WHERE brand = '华为';# 2.2、逻辑运算语句
# 案例一:查询1000到2000之间的手机
SELECT * FROM `products` WHERE price > 1000 AND price < 2000;
SELECT * FROM `products` WHERE price > 1000 && price < 2000;
# BETWEEN AND包含等于
SELECT * FROM `products` WHERE price BETWEEN 1000 AND 2000;# 案例二:价格在5000以上,或者是品牌是华为的手机
SELECT * FROM `products` WHERE price > 5000 || brand = '华为';# 将某些值设置为NULL
-- UPDATE `products` SET url = NULL WHERE id >= 85 AND id <= 88;
# 查询某一个值为null
-- SELECT * FROM `products` WHERE url IS NULL;
SELECT * FROM `products` WHERE url IS NOT NULL;# 2.3、模糊查询
SELECT * FROM `products` WHERE title LIKE '%M%';
SELECT * FROM `products` WHERE title LIKE '_P%';# 2.4、IN表示取多个值中的其中一个即可
SELECT * FROM `products` WHERE brand = '华为' || brand = '小米' || brand = '苹果';
SELECT * FROM `products` WHERE brand IN ('华为', '小米', '苹果');# 3、结果排序
SELECT * FROM `products` WHERE brand IN ('华为', '小米', '苹果') ORDER BY price ASC, score DESC;# 4、分页查询SELECT * FROM `products` LIMIT 20 OFFSET 0; # 1~20
SELECT * FROM `products` LIMIT 20 OFFSET 20;# 21~40
SELECT * FROM `products` LIMIT 40, 20;# 41~60

1.5、聚合函数Groupby

# 1、聚合函数的使用
# 求所有手机的价格的总和
SELECT SUM(price) totalPrice FROM `products`;
# 求华为手机的价格的总和
SELECT SUM(price) totalPrice FROM `products` WHERE brand = '华为';
# 求华为手机的平均价格
SELECT AVG(price) totalPrice FROM `products` WHERE brand = '华为';
# 最高手机的价格和最低手机的价格
SELECT MAX(price) max, MIN(price) min FROM `products`;# 求华为手机的个数
SELECT COUNT(*) FROM `products` WHERE brand = '华为';
SELECT COUNT(*) FROM `products` WHERE brand = '苹果';
SELECT COUNT(url) FROM `products` WHERE brand = '苹果';
SELECT COUNT(price) FROM `products`;
SELECT COUNT(DISTINCT price) FROM `products`;# 2、GROUP BY分组的使用
SELECT brand, AVG(price), COUNT(*), AVG(score) FROM `products` GROUP BY brand;# 3、HAVING的使用
SELECT brand, AVG(price) avgPrice, COUNT(*), AVG(score) FROM `products` GROUP BY brandHAVING avgPrice > 2000;# 4、需求:求评分score > 7.5 的手机的,平均价格是多少?
SELECT AVG(price) FROM `products` WHERE score > 7.5;
# 升级:按照品牌进行分类
SELECT brand, AVG(price) FROM `products` WHERE score > 7.5 GROUP BY brand;

1.6、多表的设计-外键

# 1、创建表
CREATE TABLE IF NOT EXISTS `brand` (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,website VARCHAR(100),phoneRank INT
);#创建表的时候,设置外键
-- CREATE TABLE IF NOT EXISTS `ccc` (
--  id INT PRIMARY KEY AUTO_INCREMENT,
--  name VARCHAR(20) NOT NULL,
--  website VARCHAR(100),
--  phoneRank INT,
--  brand_id INT,
--  FOREIGN KEY (brand_id) REFERENCES brand(id)
-- );INSERT INTO `brand` (name, website, phoneRank) VALUES ('华为', 'www.huawei.com', 2);
-- INSERT INTO `brand` (name, website, phoneRank) VALUES ('苹果', 'www.apple.com', 10);
-- INSERT INTO `brand` (name, website, phoneRank) VALUES ('小米', 'www.mi.com', 5);
-- INSERT INTO `brand` (name, website, phoneRank) VALUES ('OPPO', 'www.oppo.com', 12);
--
-- INSERT INTO `brand` (name, website, phoneRank) VALUES ('京东', 'www.jd.com', 8);
-- INSERT INTO `brand` (name, website, phoneRank) VALUES ('Google', 'www.google.com', 9);INSERT INTO `brand` (name, website, phoneRank)VALUES ('苹果', 'www.apple.com', 10),('小米', 'www.mi.com', 5),('OPPO', 'www.oppo.com', 12),('京东', 'www.jd.com', 8),('Google', 'www.google.com', 9);# 2、外键约束
# 添加一个brand_id字段
ALTER TABLE `products` ADD `brand_id` INT;
-- ALTER TABLE `products` DROP `brand_id`;# 修改brand_id为外键
ALTER TABLE `products` ADD FOREIGN KEY(brand_id) REFERENCES brand(id);UPDATE `products` SET `brand_id` = 1 WHERE `brand` = '华为';
UPDATE `products` SET `brand_id` = 2 WHERE `brand` = '苹果';
UPDATE `products` SET `brand_id` = 3 WHERE `brand` = '小米';
UPDATE `products` SET `brand_id` = 4 WHERE `brand` = 'oppo';# 3、修改和删除外键引用的id
UPDATE `brand` SET `id` = 100 WHERE `id` = 1;# 4、修改brand_id关联外键时的action
# 4.1、获取到目前的外键的名称
SHOW CREATE TABLE `products`;-- CREATE TABLE `products` (
--   `id` int NOT NULL AUTO_INCREMENT,
--   `brand` varchar(20) DEFAULT NULL,
--   `title` varchar(100) NOT NULL,
--   `price` double NOT NULL,
--   `score` decimal(2,1) DEFAULT NULL,
--   `voteCnt` int DEFAULT NULL,
--   `url` varchar(100) DEFAULT NULL,
--   `pid` int DEFAULT NULL,
--   `brand_id` int DEFAULT NULL,
--   PRIMARY KEY (`id`),
--   KEY `brand_id` (`brand_id`),
--   CONSTRAINT `products_ibfk_1` FOREIGN KEY (`brand_id`) REFERENCES `brand` (`id`)
-- ) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci# 4.2、根据名称将外键删除掉
ALTER TABLE `products` DROP FOREIGN KEY products_ibfk_1;# 4.3、重新添加外键约束
ALTER TABLE `products` ADD FOREIGN KEY (brand_id) REFERENCES brand(id)ON UPDATE CASCADE;
--                                                ON DELETE RESTRICT;UPDATE `brand` SET `id` = 100 WHERE `id` = 1;

1.7、多表的设计-查询

# 1、获取到的是笛卡尔乘积
SELECT * FROM `products`, `brand`;
# 获取到的笛卡尔乘积进行筛选
SELECT * FROM `products`, `brand` WHERE products.brand_id = brand.id;# 2、左连接
# 2.1、查询所有的手机(包括没有品牌)null
SELECT * FROM `products` LEFT JOIN `brand` ON products.brand_id = brand.id;# 2.2、查询没有对应品牌数据的手机
SELECT * FROM `products` LEFT JOIN `brand` ON products.brand_id = brand.id WHERE brand.id IS NULL;# 3、右连接
# 3.1、查询所有的品牌以及对应的手机数据(品牌也显示)
SELECT * FROM `products` RIGHT JOIN `brand` ON products.brand_id = brand.id;# 3.2、查询没有对应品牌数据的手机
SELECT * FROM `products` RIGHT JOIN `brand` ON products.brand_id = brand.id WHERE products.brand_id IS NULL;# 4、内连接
SELECT * FROM `products` JOIN `brand` ON products.brand_id = brand.id;# 5、全连接
(SELECT * FROM `products` LEFT JOIN `brand` ON products.brand_id = brand.id)
UNION
(SELECT * FROM `products` RIGHT JOIN `brand` ON products.brand_id = brand.id);(SELECT * FROM `products` LEFT JOIN `brand` ON products.brand_id = brand.id WHERE brand.id IS NULL)
UNION
(SELECT * FROM `products` RIGHT JOIN `brand` ON products.brand_id = brand.id WHERE products.brand_id IS NULL);

1.8、多对多关系-设计

# 1、基本数据的模拟
CREATE TABLE IF NOT EXISTS students(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,age INT
);CREATE TABLE IF NOT EXISTS courses(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,price DOUBLE
);INSERT INTO `students` (name, age)VALUES ('why', 18), ('tom', 22), ('lilei', 25), ('lucy', 16), ('lily', 20);INSERT INTO `courses` (name, price)VALUES ('英语', 100), ('语文', 666), ('数学', 888), ('历史', 80);INSERT INTO `courses` (name, price)  VALUES ('物理', 888);INSERT INTO `courses` (name, price)  VALUES ('地理', 333);# 2、建立关系表
CREATE TABLE IF NOT EXISTS `students_select_courses` (id INT PRIMARY KEY AUTO_INCREMENT,students_id INT NOT NULL,courses_id INT NOT NULL,FOREIGN KEY (students_id) REFERENCES students(id) ON UPDATE CASCADE,FOREIGN KEY (courses_id) REFERENCES courses(id) ON UPDATE CASCADE
--  PRIMARY KEY (students_id, courses_id) # 联合主键
);# 3、学生选课
# why选择了英语、数学、历史
INSERT INTO `students_select_courses` (students_id, courses_id)VALUES (1, 1), (1, 3), (1, 4);INSERT INTO `students_select_courses` (students_id, courses_id)VALUES (3, 2), (3, 4);INSERT INTO `students_select_courses` (students_id, courses_id)VALUES (5, 2), (5, 3), (5, 4);# 4、查询的需求
# 4.1、查询所有有选择的学生,选择了哪些课程
SELECT stu.id stuId, stu.name stuName, stu.age stuAge, cs.id csId, cs.name csName, cs.price csPriceFROM `students` stu JOIN `students_select_courses` ssc ON stu.id = ssc.students_idJOIN `courses` cs ON ssc.courses_id = cs.id;# 4.2、查询所有的学生的选课情况
SELECT stu.id stuId, stu.name stuName, stu.age stuAge, cs.id csId, cs.name csName, cs.price csPriceFROM `students` stuLEFT JOIN `students_select_courses` ssc ON stu.id = ssc.students_idLEFT JOIN `courses` cs ON ssc.courses_id = cs.id;# 4.3、哪些学生是没有选课
SELECT stu.id stuId, stu.name stuName, stu.age stuAge, cs.id csId, cs.name csName, cs.price csPriceFROM `students` stuLEFT JOIN `students_select_courses` ssc ON stu.id = ssc.students_idLEFT JOIN `courses` cs ON ssc.courses_id = cs.idWHERE cs.id IS NULL;# 4.4、查询哪些课程是没有被选择
SELECT stu.id stuId, stu.name stuName, stu.age stuAge, cs.id csId, cs.name csName, cs.price csPriceFROM `students` stuRIGHT JOIN `students_select_courses` ssc ON stu.id = ssc.students_idRIGHT JOIN `courses` cs ON ssc.courses_id = cs.idWHERE stu.id IS NULL;# 4.5、某一个学生选了哪些课程
SELECT stu.id stuId, stu.name stuName, stu.age stuAge, cs.id csId, cs.name csName, cs.price csPriceFROM `students` stu JOIN `students_select_courses` ssc ON stu.id = ssc.students_idJOIN `courses` cs ON ssc.courses_id = cs.idWHERE stu.id = 1;

1.9、对象和数组类型

# 将联合查询到的数据转成对象(一对多)
SELECT pro.id id, pro.title title, pro.price price,JSON_OBJECT('id', brand.id, 'name', brand.`name`, 'website', brand.website) brandFROM `products` proLEFT JOIN `brand` ON pro.brand_id = brand.id;# 将查询到的多条数据,组织成对象,放到一个数组中(多对多)
SELECT stu.id, stu.name, stu.age,JSON_ARRAYAGG(JSON_OBJECT('id', cs.id, 'name', cs.`name`, 'price', cs.price)) FROM `students` stu JOIN `students_select_courses` ssc ON stu.id = ssc.students_idJOIN `courses` cs ON ssc.courses_id = cs.idGROUP BY stu.id;

补充---------------------------

nodejs批量加入json数据

const mysql = require('mysql2');const connection = mysql.createConnection({host: '****',port: 3306,user: 'root',password: '****',database: '****'
});const statement = `INSERT INTO products SET ?;`
const phoneJson = require('./phone.json');for (let phone of phoneJson) {connection.query(statement, phone);
}

mysql语句记录学习(备忘)相关推荐

  1. 隐马尔可夫模型HMM学习备忘

    隐马尔可夫模型HMM学习备忘 目录 隐马尔可夫模型HMM学习备忘 1.马尔可夫模型的理解 2.隐马尔可夫模型 2.1.HHM的组成 2.2.HMM解决的三个基本问题 隐马尔可夫模型示意图如图[1]: ...

  2. jsp mysql oracle_Jsp 连接 mySQL、Oracle 数据库备忘

    Jsp 连接 mySQL.Oracle 数据库备忘 2009-12-15 16:47 Jsp 环境目前最流行的是 Tomcat5.0.Tomcat5.0 自己包含一个 Web 服务器,如果是测试,就没 ...

  3. mysql一些操作个人备忘(持续更新)

    安装mysql数据库目录 1./usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/home/mysql/var ##指定安装后的 ...

  4. 【ExtJS实践】之五 :常用语句及脚本备忘

    由于时间紧,缺少系统的学习,导致在开发过程中,常常无法找到能够实现自己要求的正确方法.把开发过程中遇到的问题及相应的解决方法记录下来,备忘. 1.清空form表单输入的内容 Ext.getCmp(&q ...

  5. sqlserver+mysql时间_SqlServer和mysql的日期函数备忘

    我经常忘记datepart的符号值,记录备忘一下. SqlServer的日期函数 1,首先是3个用到datepart的函数 DATEDIFF(datepart,startdate,enddate) D ...

  6. 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单

    向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...

  7. python mysql in语句_基于Python的mysql语句入门学习笔记

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  8. 《C和指针》学习备忘

    有了之前的基础,此文只是把一些以前没有注意到的和值得学习的知识做一个记录. 第一章 作者认为使用#if 0 .... #endif比用/*和*/好,因为后者不能嵌套.但是对于//并没有说明. 第二章 ...

  9. 《C和指针》学习备忘总结

    有了之前的基础,此文只是把一些以前没有注意到的和值得学习的知识做一个记录. 第一章 作者认为使用#if 0 .... #endif比用/*和*/好,因为后者不能嵌套.但是对于//并没有说明. 第二章 ...

最新文章

  1. mysql实训报告_mysql数据库技术》实验报告.doc
  2. flutter图片识别_Flutter 资源和图片
  3. 《BI那点儿事》数据流转换——排序
  4. MongoDB入门学习(二):MongoDB的基本概念和数据类型
  5. RUNOOB python练习题8 numpy矩阵的索引及遍历
  6. java版spring cloud+spring boot 社交电子商务平台:服务消费(基础)
  7. 给网站插入一个百度地图API
  8. ubuntu下创建c语言程序之hello world
  9. fabric批量操作远程操作主机的练习
  10. 【小技巧】2345——劫持IE浏览器主页
  11. android 模拟点击屏幕,按键精灵后台简明教程(后台找色,后台鼠标点击等)
  12. java计算机毕业设计四六级在线考试系统源码+系统+数据库+lw文档+mybatis+运行部署
  13. 前端高效开发必备的 js 库
  14. DWH的保留原始历史数据的一种方法
  15. 线上支付,出款和收款
  16. oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法
  17. “北斗一号”卫星导航定位系统与GPS的区别
  18. 5个炫酷登录页面,拿去就能用(附源码)
  19. 北大学姐博士阶段收官之作ACL2020-低资源场景下的对话系统任务模型定制
  20. 强强合作,替代钉盘/微盘,企业实现低成本扩容

热门文章

  1. Android微信分享
  2. 保驾护航金三银四,附超全教程文档
  3. macos上的ios虚拟机_苹果使HomePod更加可靠,并修复了iOS,macOS和tvOS上的其他问题
  4. 微财富兜底映射互联网金融弊端
  5. iphone无android功能,iPhone 20来了也没用!这些功能iOS永远不会有
  6. 【JavaWeb】16 数据库
  7. linux系统挂载emc存储,EMC-VNX5100存储设备挂载到linux系统
  8. iOS 14.5.1 系统后出现了发烫、运行卡顿、跑分降低的解决方法
  9. Qt入门超级简单小项目(1)登录对话框
  10. 「毛球科技」2021年NFT快速回顾与展望