MySQL的基本用法
1.SQL的select语句
select语句用于从表中查询数据。执行的结果被存储在一个结果表中。语法格式如下:
--SQL的注释
--从FROM指定的表中,查询出所有的数据,*表示所有列
SELECT*FROM表名称
--从FROM指定的表中,查询出指定的列名称(字段)的数据
SELECT 列名称 FROM 表名称
注:SQL的语句中的关键字对大小写不敏感。SELECT相当于select
-- 通过*查询所有的数据
SELECT * FROM users;
-- 查询users中的部分数据
SELECT username,password from users ;
2.SQL的INSERT INTO语句
(1)语法
INSERT INTO语句用于想数据表中插入新的数据行,语法形式如下:
--列和表要一一对应,多个列和多个值之间使用英文的逗号
INSERT INTO table_name(列1,列2,...) VALUES(值1,值2,...)
--向users插入新数据,username=ww&&password=202102943
insert into users (username ,password) values('ww','202102943');
3.SQL的UPDATE的语句
update语句用于修改表中的数据。语法格式如下:
--1.用update指定要更新那个表中的数据
--2.用set指定列对应的新值
--3.用where指定更新的条件
update 表名称 set 列名称=新值 where 列名称=某值
4.SQL中的delete语句
1.语法
delete语句用于删除表中的行。语法格式如下:
--从指定的表中,根据where条件,删除对应的数据行
delete from 表名称 where 列名称=值
delete from users where id=1;
select * from users;
5.SQL的where子句
(1)语法
where子句用于限定选择的标准。在select、update、delete语句中,都可以使用where子句指定选择的标准。
select 列名称 from 表名称 where 列 运算符 值
update 表名称 set列=新值 where 列 运算符 值
delete from 表名称 where 列 运算符 值
(2)可在where子句中使用的运算符
注意:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
6.SQL的and和or运算符
(1)语法
and和or可在where子语句中把俩个或多个条件结合起来。
and表示必须同时满足多个条件,相当于js中的&&运算法。
or表示满足任意一个条件即可,相当于js中的||运算法
7.SQL的order by子句
(1)语法
order by语句用于根据指定的列对结果集进行排序。
order by语句默认按照升序对记录进行排序。
按照降序的形式进行排序,可以使用desc关键字。
select *from users order by status;
select * from users order by id desc;
(2)order by子句-多重排序
对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序,进行升序排序,实例如下:
select * from users order by status desc,username ASC;
8.SQL的COUNT(*)函数
(1)语法
COUNT(*)函数用于返回查询结果的总数据条数,语法格式如下:
SELECT COUNT(*) FROM 表名称
select count(*) from users where status=0;
2.使用AS关键字为列设置别名
给查询的列名称设置别名,可以使用AS关键字,实例如下:
select count(*) as total from users where id>1 and status=0;
二.在项目中操作MySQL
1.操作步骤
(1)安装操作MySQL数据库的第三方模块(mysql)
npm i mysql
(2)通过mysql模块连接到MySQL数据库
const mysql=require('mysql')
(3)通过MySQL模块执行SQL语句
const db=musql.createPool{
host:'127.0.0.1',
username:'root',
password:'admin123',
database:'new)data01'
}
2.查询数据
查询users表中的数据:
db.query('select * from users',(err,result)=>{
if(err)return console.log(err);
console.log(result);
})
3.0插入数据
向users表中新增数据,其中username为spider-man,passwor为pcc321.实例代码如下:
const user={username:"spider-man",password:"pcc123"}
const sqlStr='insert into users(username,password) values(?,?)'
db.query(sqlStr,[user.username,user.password],(err,result)=>{
if(err)return* console.log(err);
if(result.affectedRows===1){
console.log("数据插入成功");
}
})
3.1便捷插入数据
向表中新增数据时,如果,每个对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:
const user={username:'lisi',password:"pab123"}
const sqlStr='insert into users set ?'
db.query(sqlStr,user,(err,results)=>{
if(err)return console.log(err);
if(results.offectedRows===1){
console.log("数据插入成功");
}
})
3.2更新数据
更新表中的数据:
const user1={id:22,username:'abc',password:'000'}
const sqlStr1='update users set username=?,password=? where id=?'
db.query(sqlStr1,[user1.username,user1.password,user1.id],(err,results)=>{
if(err)return console.log(err.message);
if(results.affectedRows===1){
console.log("数据更新成功");
}
})
更新数据的简易方法
更新数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速更新 表数据:
const user1={id:22,username:'abcc',password:'000'}
const sqlStr1='update users set ? where id=?'
db.query(sqlStr1,[user1,user1.id],(err,results)=>{
if(err)return console.log(err.message);
if(results.affectedRows===1){
console.log("数据更新成功");
}
})
3.3.1删除数据
在删除数据时,根据id这样的唯一标识,俩删除对应的数据,实例如下:
const sqlStr='delete from users where id=?'
db.query(sqlStr,22,(err,result)=>{
if(err)return console.log(err.message);
if(result.affectedRows===1){
console.log('删除数据成功');
}
})
3.3.2标记删除
使用delete语句,会把真正的数据从表中删除。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。
所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行delete语句把这条数据删除,而是执行了update语句,将这条语句的status字段标记为删除即可。
db.query('update users set status=1 where id=?',25,(err,results)=>{
if(err)return console.log(err.message);
if(results.affectedRows===1){
console.log("删除数据成功");
}
})