mysql与msql2数据驱动

这篇具有很好参考价值的文章主要介绍了mysql与msql2数据驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql基本使用

数据库操作(DDL)

-- 数据考操作
-- 1.查询所有数据库
SHOW DATABASES;

-- 2.选择数据库
USE learn_mysql;

-- 3.当前正在使用的数据库
SELECT DATABASE();

-- 4.创建数据库
CREATE DATABASE IF NOT EXISTS learn_mysql;

-- 5.删除数据库
DROP DATABASE IF EXISTS test_database;

-- 6.修改数据库
ALTER DATABASE test_database CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;

表结构操作(DDL)

-- 表操作
-- 1.查询所有表
SHOW TABLES;

-- 2.查看表结构
DESC `user`;

-- 3.创建表
CREATE TABLE IF NOT EXISTS `user` (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(10) UNIQUE NOT NULL,
	age INT DEFAULT 1
);

-- 4.删除表
DROP TABLE IF EXISTS `user`;

-- 5.修改表
-- 5.1修改表名
ALTER TABLE `t_user` RENAME TO `user`;
-- 5.2增加表字段
ALTER TABLE `user` ADD createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
-- ALTER TABLE `user` ADD updateTime TIMESTAMP;
-- 修改表格数据后,根据当前时间戳更新updateTime
ALTER TABLE `user` ADD updateTime TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
-- 5.3修改表字段名及类型
ALTER TABLE `user` CHANGE createTime createAt DATETIME;
-- 5.4只修改表字段类型
ALTER TABLE `user` MODIFY id BIGINT AUTO_INCREMENT;
-- 5.5删除字段
ALTER TABLE `user` DROP createAt;

表数据操作(DML)

-- 1.向表增加数据
INSERT INTO `user` ( `name`, `age`) VALUES ('cjc', 100);
INSERT INTO `user` ( `name`, `age`) VALUES ('ccc', 999);
INSERT INTO `user` ( `name`, `age`) VALUES ('aaa', 111);

-- 2.删除数据
-- 删除所有数据
DELETE FROM `user`
DELETE FROM `user` WHERE `name` = 'aaa' 

-- 3.修改数据
UPDATE `user` SET `name` = 'CJC',`age` = 10000 WHERE `name` = 'cjc'
-- 修改数据时,手动加上时间的更新
UPDATE `user` SET `name` = 'CCC',`age` = 99999,`updateTime` = CURRENT_TIMESTAMP WHERE `name` = 'ccc'

-- 修改了数据,根据当前时间戳更新updateTime
ALTER TABLE `user` ADD `updateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

表数据查询(DQL)

-- 1.条件查询
SELECT * FROM `user`
-- %任意字符0个或多个 _任意字符1个
SELECT `name` AS `user_name` FROM `user` WHERE `name` LIKE 'C%' 
-- 第二个字符为c
SELECT * FROM `user` WHERE `name` LIKE '_c%' 

-- 2.分页查询
-- 偏移1条数据后,查询前20条数据
SELECT * FROM `user` LIMIT 20 OFFSET 1

查询语句执行顺序

SELECT 
	tagname as "tag1",
	tagname2 as "tag2",
	[聚合函数]...
	
FROM table1
[LEFT] JOIN table2
on xxx
[LEFT] JOIN table3
on xxx
WHERE 不含聚合函数的条件
GROUP BY tag1,tag2...等所有非聚合函数字段
HAVING 含聚合函数的条件

ORDER BY tag1,tag2 DESC
LIMIT [偏移量],显示的记录数;  # LIMIT 显示的记录数 OFFSET 偏移量;

/*
    筛选 分组 查看 排序
	FROM  -> ON -> [left/right] join
	WHERE
	GROUP BY -> HAVING
	
	SELECT -> distinct
	
	ORDER BY  -> LIMIT 
*/

多表查询

mysql与msql2数据驱动,node.js,mysql,数据库,oracle,mongodb

多对多关系

-- 1.创建表
-- 学生表
CREATE TABLE IF NOT EXISTS `student` (
	id INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(10) UNIQUE NOT NULL
);

-- 课程表
CREATE TABLE IF NOT EXISTS `course` (
	id INT PRIMARY KEY AUTO_INCREMENT,
	course_name VARCHAR(20) UNIQUE NOT NULL
);

-- 关系表
-- 多对多,一个学生能选择多门课程,一门课程被多个学生选择
CREATE TABLE IF NOT EXISTS `student_course` (
	id INT PRIMARY KEY AUTO_INCREMENT,
	-- 也可以使用联合主键	
	-- 	student_course_pk PRIMARY KEY(userId,hobbyId),
	
	-- 外键约束,更新/删除时,相关联的表也同步更新/删除	
	student_id INT NOT NULL,
	course_id INT NOT NULL,
	FOREIGN KEY (student_id) REFERENCES student(id) ON UPDATE CASCADE ON DELETE CASCADE,
	FOREIGN KEY (course_id) REFERENCES course(id) ON UPDATE CASCADE ON DELETE CASCADE,
	 
	-- 记录创建时间及更新时间	
	createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
	updateTime TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
);


-- 2.插入数据
INSERT INTO `student` ( `name`) VALUES ('a');
INSERT INTO `student` ( `name`) VALUES ('b');
INSERT INTO `student` ( `name`) VALUES ('c');
INSERT INTO `student` ( `name`) VALUES ('d');

INSERT INTO `course` ( `course_name`) VALUES ('计算机网络');
INSERT INTO `course` ( `course_name`) VALUES ('数据结构');
INSERT INTO `course` ( `course_name`) VALUES ('操作系统');
INSERT INTO `course` ( `course_name`) VALUES ('计算机组成原理');
INSERT INTO `course` ( `course_name`) VALUES ('没人选的课程');

INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (1,1);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (2,1);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (2,2);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (3,1);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (3,2);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (3,3);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (4,1);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (4,2);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (4,3);
INSERT INTO `student_course` ( `student_id`,`course_id`) VALUES (4,4);


-- 3.多表查询
-- 所有学生的选课情况
SELECT student.`name`,course.course_name FROM `student`
LEFT JOIN `student_course` ON student.id = student_course.student_id
LEFT JOIN `course` ON course.id = student_course.course_id


SELECT student.`name`,COUNT(*) '课程数量' FROM `student`
LEFT JOIN `student_course` ON student.id = student_course.student_id
LEFT JOIN `course` ON course.id = student_course.course_id
GROUP BY student.`name`

将查询结果转化为JSON

mysql与msql2数据驱动,node.js,mysql,数据库,oracle,mongodb
将查询到的课程信息转化为json格式:

-- 使用聚合函数
JSON_OBJECT([key, val[, key, val] ...])

mysql与msql2数据驱动,node.js,mysql,数据库,oracle,mongodb

将查询结果转化为数组

-- 使用聚合函数
JSON_ARRAYAGG(col_or_expr)

mysql与msql2数据驱动,node.js,mysql,数据库,oracle,mongodb

mysql2数据库驱动

基本使用

const mysql = require('mysql2')

// 1.创建一个连接
const connect = mysql.createConnection({
  host: 'localhost',
  port: 13306,
  user: 'root',
  password: 'root',
  database: 'learn_mysql'
})

// 2.定义sql语句
const statement = 'SELECT * FROM `student`'

// 3.执行sql语句
connect.query(statement, (err, val, fields) => {
  if (err) {
    console.log(err);
    return
  }

  // 打印查询结果
  console.log(val);
})

预处理语句

1.提高性能
将语句模块发送给mysql编译、优化、转换,然后存储它但不执行。之后传入实参时,真正执行。多次执行,也只编译一次。

2.防止sql注入文章来源地址https://www.toymoban.com/news/detail-680902.html

const mysql = require('mysql2')

// 1.创建连接池
const connectionPool = mysql.createPool({
  host: 'localhost',
  port: 13306,
  user: 'root',
  password: 'root',
  database: 'koa-apis',
  connectionLimit: 5
})

// 2.测试是否连接成功
connectionPool.getConnection((err, connection) => {
  if (err) {
    console.log('数据库连接失败', err);
    return
  }

  connection.connect(err => {
    if (err) {
      console.log('和数据库交互成功', err);
    } else {
      console.log('和数据库交互成功');
    }
  })
})

// 3.定义预处理语句
// const statement = 'SELECT * FROM `student` WHERE id > 2 AND name LIKE "%c%"'
const statement = 'SELECT * FROM `student` WHERE id > ? AND name LIKE ?'

// 4.执行sql语句
// 使用promise语法
const connection = connectionPool.promise()
connection.execute(statement, [2, '%c%']).then(res => {
  const [val, fields] = res
  console.log(val);
}).catch(err => {
  console.log(err);
})

到了这里,关于mysql与msql2数据驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea连接oracle数据库,手动引入驱动jar包

    由于oracle的授权问题,从maven仓库中不能直接下载到jdbc-oracle驱动,因此若项目使用了oralce数据库,则需要手动引入jar包 一、本地安装maven并配置环境变量(这里不再细说,可自行百度) 二、下载连接oracle数据库所需的驱动包 我用的是jdk1.8,下载的是驱动包是ojdbc6 下载地址:

    2024年02月13日
    浏览(43)
  • node.js之连接数据库

    我们如何在nodejs中连接并操作数据库呢? 让我为大家解答一下吧! 1.安装操作MySQL数据库的第三方块 (mysql) mysql 模块是托管于 npm 上的第三方块。它提供了在 Nodejs 项目中连接和操作 MySQL 数据库的能力想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包 2

    2024年01月19日
    浏览(53)
  • (java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver)IDEA中连接Oracle数据库失败,缺少驱动

    该问题出现在用idea连接Oracle数据库的时候,代码都写好了但是发现连不上Oracle。 (或者是能连Oracle,但是只能连一半。。。) 首先要保证自己的Oracle数据库是启动了的噢。 运行代码时,也就是这行代码会一直报错: 连接oracle数据库时,一直报错找不到驱动,后来发现自己

    2024年02月04日
    浏览(58)
  • 数据库问题记录(粗略版)oracle、mysql等主流数据库通用

    1. ORA-00918:未明确定义列 该问题情况大致为:select 所取列名错误、重复等问题。 2. “select * from temp where 1=0; ”的含义 布尔值为FALSE,只返回表结构,不返回数据。 举一反三: select * from temp where 10 , 布尔值为TRUE,返回所有数据记录; select * from temp where 1=0, 暂不清楚是何

    2024年02月07日
    浏览(48)
  • DBeaver连接mysql、oracle数据库

    1) 下载DBeaver https://dbeaver.io/download/,并安装 2) 新建数据库连接    3)选择mysql驱动程序  4)填写连接设置内容 5)点击 “编辑驱动设置”,并填写相关信息  6)选择本地自己下载的驱动库jar包 (也可以点击下载驱动)  7)完成后,点击测试连接,可以查看是否连接成功

    2024年02月05日
    浏览(65)
  • 数据库去重(MYSQL和ORACLE)

    一、数据库中的去重操作(删除数据库中重复记录的SQL语句)主要有三种方法 (1)、rowid方法 (2)、group by 方法 (3)、distinct方法 1、用rowid方法 根据Oracle带的rowid属性,可以进行判断是否存在重复语句; (1)、查出表1和表2中name相同的数据 Select * from table1 a Where rowid !=

    2024年02月09日
    浏览(46)
  • 查询数据库空间(mysql和oracle)

    1.查看数据库表空间文件: 2.查看所有表空间的总容量: 3.查看数据库表空间使用率 4.1.查看表空间总大小、使用率、剩余空间 4.2.查看表空间使用率(包含temp临时表空间) 5.查看具体表的占用空间大小 1.更改表空间的dbf数据文件分配空间大小 2. 为表空间新增一个数据文件(表空间

    2024年02月05日
    浏览(45)
  • QT学习笔记-oracle oci数据库驱动交叉编译并移植到ARM开发板

    在上一文《QT学习笔记-QT安装oracle oci驱动》中介绍了在Windows环境下使用QT访问oracle数据库时遇到驱动无法加载问题的解决办法,大体思路是对QT源码中数据库驱动的源码oci进行编译,要想通过编译需要依赖对应数据库的头文件和库(可以通过下载oracle instant client),编译通过

    2024年02月13日
    浏览(56)
  • Node.js连接数据库 实现注册、登录、判断注册

    Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册。 此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可。 使用npm进行mysql插件的安装,cmd黑窗口运行下列指令 此指令运行完成,文件夹根目录出现 node_modules 文件 黑窗口运行 npm init 指令,出现

    2024年02月09日
    浏览(53)
  • MySQL数据库 – node使用

    1 MySQL查询对象 2 MySQL查询数组 3 mysql2库介绍使用 4 mysql2预处理语句 5 mysql2连接池使用 6 mysql2的Promi 这里仅说明如何使用服务器连接数据库并进行操作。 预处理语句就是可以输入变量的语句(表现形式是有符号:?)。需要使用.execute来执行;   需要运行普通的语句(不添加变

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包