-- 查询
select * from users_tabel;
-- 新增
insert into users_tabel (name,age) values ('kp', 31);
-- 修改
update users_tabel set name='gg',age=6 where id=1;
-- 删除
delete from users_tabel where id=1;
where运算符
image.pngand or
select name,age from users_tabel where (id>=1 and age=30) or status<>1;
order by
-- 升序 ASC(默认升序,可以不写)
select * from users_tabel order by id
select * from users_tabel order by id asc
-- 降序 DESC
select * from users_tabel order by id desc
-- 先按照 status 降序排序,再按照 createTime 升序排序
select * from users_tabel order by status desc, createTime asc
COUNT(*) 统计总条数
select COUNT(*) ,name,age from users_tabel;
AS 设置列别名
-- 返回COUNT(*),列名叫total
select COUNT(*) as total, name, age from users_tabel;
连表查询
-- 查询classren表,去关联 sutdent表;classren表sId字段 和 sutdent表id字段相等,的所有数据
SELECT * FROM classren join sutdent on classren.sId = sutdent.id
-- 连表查询, 加上限制条件where
SELECT * FROM classren join sutdent on classren.sId = sutdent.id where (id=1)
-- 连表查询, 加上限制条件where,再加别名
SELECT classren.name AS c_name, classren.idclassRen AS c_id, sutdent.name AS s_name FROM classren join sutdent on classren.sId = sutdent.id where (id=1)
nodejs 中使用mysql
npm init -y
npm i mysql -S
- 新建sql.js
// 引入第三方库mysql
const mysql = require('mysql');
// 创建连接
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: '123456',
database: 'new_schema'
})
// 执行sql语句
db.query('select * from sutdent', (err, results) => {
if (err) return console.log(err)
console.log(results)
})
- 执行(报错)
node sql.js
错误信息和解决
mysql 报错Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
起因:mysql8.0加密方式的原因报错。
解决办法:
执行指令
mysql -u root -p
123456
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;
注意:123456是我自己连接数据库的密码哈
- 查询
// 第一种写法
db.query(`select * from sutdent where name='kp'`, (err, results) => {
if (err) return console.log(err)
console.log(results)
})
// 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
db.query(`select * from sutdent where name=?`, ['kp'], (err, results) => {
if (err) return console.log(err)
console.log(results)
})
// 对象写法
db.query({
sql: `select * from sutdent where name=?`,
timeout: 40000, // 40s
values: ['kp']
}, (err, results, fields) => {
if (err) return console.log(err)
console.log(fields)
})
- 新增
// 第一种写法
db.query(`insert into sutdent (name, age) values ('gg', 5)`, (err, results) => {
if (err) return console.log(err)
if (results.affectedRows === 1) console.log('创建成功!')
})
// 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
db.query(`insert into sutdent (name, age) values (?, ?)`, ['gg', 5], (err, results) => {
if (err) return console.log(err)
if (results.affectedRows === 1) console.log('创建成功!')
})
// 第三种写法(适用于字段很多,不好一个个写的情况)
const user = {name: 'wjg', age: 5}
db.query(`insert into sutdent set ?`, user, (err, results) => {
if (err) return console.log(err)
if (results.affectedRows === 1) console.log('创建成功!')
})
- 更新
// 第一种写法
db.query(`update sutdent set name='guoguo',age=6 where name='gg'`, (err, results) => {
if (err) return console.log(err)
if (results.affectedRows > 1) console.log('更新成功!')
})
// 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
db.query(`update sutdent set name=?,age=? where name=?`, ['guoguo', 6, 'gg'], (err, results) => {
if (err) return console.log(err)
if (results.affectedRows > 1) console.log('更新成功!')
})
// 第三种写法(适用于字段很多,不好一个个写的情况)
const user = {name: 'guoguo', age: 6}
db.query(`update sutdent set ? where name=?`, [user, 'gg'], (err, results) => {
if (err) return console.log(err)
if (results.affectedRows > 1) console.log('更新成功!')
})
- 删除
// 第一种写法
db.query(`delete from sutdent where name='guoguo'`, (err, results) => {
if (err) return console.log(err)
if (results.affectedRows > 1) console.log('删除成功!')
})
// 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
db.query(`delete from sutdent where name=?`, 'guoguo', (err, results) => {
if (err) return console.log(err)
if (results.affectedRows > 1) console.log('删除成功!')
})
-
连表查询
classren表
db.query('SELECT * FROM classren join sutdent on classren.sId = sutdent.id', (err, results) => {
if (err) return console.log(err)
res.send(results)
})
// results数据结构
[
{
"idclassRen": 1,
"name": "王康平",
"sId": 1,
"id": 1,
"age": null
},
{
"idclassRen": 2,
"name": "xxl",
"sId": 2,
"id": 2,
"age": null
}
]
db.query('SELECT classren.name AS c_name, classren.idclassRen AS c_id, sutdent.name AS s_name FROM classren join sutdent on classren.sId = sutdent.id', (err, results) => {
if (err) return console.log(err)
res.send(results)
})
// results数据结构
[
{
"c_name": "一年级",
"c_id": 1,
"s_name": "王康平"
},
{
"c_name": "二年级",
"c_id": 2,
"s_name": "xxl"
}
]
网友评论