0%

MySql基本操作

使用MySql Workbench管理数据库

table中的数据类型:

int:整数

varchar(len):字符串

tinyint(1):布尔值

字段的特殊标识:

PK(Primary Key):主键,唯一标识

NN(Not Null):值不允许为空

UQ(Unique):值唯一

AI(Auto Increment):值自动增长

Sql语句

增:

insert into 表名 (列名,列名…) values(‘值’,…)

1
insert into users (username,password) values('李四','54321');

删:

delete from 表名 where 列 运算符 值

1
2
-- 删除id为4的用户
delete from users where id='4';

改:

update 表名 set 列=新值 where 列 运算符 值

1
2
-- update用于修改数据
update users set password ='88888888' where id='4';

查:

select 列名 from 表名

1
2
3
SELECT * FROM users
-- 从users表把username,password两列查询
select username, password from users;

where子句:

用于限定选择的标准,常见运算符:

等于:=

不等于:<>或者!=

大于:>

小于:<

在某个范围:BETWEEN

搜索某种样式:LIKE

OR,AND:

1
2
select * from users where status=0 and id>1
select * from users where status=0 or id>1

实现排序:

order by:用于根据指定列对结果集进行排序,默认按照升序排序,想按照降序排序用desc关键字

1
2
3
4
5
6
7
-- order by asc实现升序排序
select * from users order by status;
select * from users order by status asc;
-- order by desc实现降序排序
select * from users order by status desc;
-- 多重排序
select * from users order by status desc,username asc;

count(*)统计

1
2
3
4
5
count(*)统计
-- 查询users表中状态为0的用户总数量
select count(*) from users where status='0';
-- as 将列名改为total
select count(*) as total from users where status=0;

使用mysql模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const mysql=require('mysql')
//建立MYSQL与数据库的联系
const db=mysql.createPool({
host:'127.0.0.1',//数据库的ip地址
user:'root',
password:'123456',
database:'my_db_01',//指定要操作哪个数据库
})
//测试mysql能否正常工作
db.query('select 1',(err,result)=>{
//mysql工作期间报错
if(err)return console.log(err.message)
//能成功执行SQL语句
console.log(result);
})

增:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//要插入到users表中的数据对象
const users={username:'王五',password:'ww123'};
//待执行的SQL语句,其中英文?代表占位符
const sqlStr='insert into users (username,password) values(?,?)'
//使用数组的形式为占位符指定具体的值,返回的result是一个对象,通过affectedRows判读是否插入成功
db.query(sqlStr,[users.username,users.password],(err,result)=>{
if(err)return console.log(err.message)
if(result.affectedRows===1){console.log('插入数据成功')}//成功
})
//插入数据的便捷方式
const user={username:'小煜',password:'ww123'};
const sqlStr="insert into users set ?";
db.query(sqlStr,user,(err,result)=>{
if(err)return console.log(err.message)
if(result.affectedRows===1){console.log(result)}
})

删:

1
2
3
4
5
6
7
8
//删除数据
const sqlStr="delete from users where id=?"
//如果SQL语句有多个占位符则必须使用数组为每个占位符指定具体的值
//如果SQL语句只有一个占位符,则可以省略数组
db.query(sqlStr,12,(err,res)=>{
if(err)return console.log(err.message)
if(res.affectedRows===1){console.log(res);}
})

标记删除:使用delete语句会把数据从表中真正的删除,为了保险起见。推荐使用标记删除的形式来模拟删除的动作,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除

当用户执行删除操作时,并没有执行DELETE语句把数据删除,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可

改:

1
2
3
4
5
6
const user={id:11,username:'王五',password:'ww000'};
const sqlStr="update users set ? where id=?";
db.query(sqlStr,[user,user.id],(err,result)=>{
if(err)return console.log(err.message)
if(result.affectedRows===1){console.log(result)}
})