sql语句、连接并使用数据库

一、select语句:

select语句用于从表中查询数据,语法:

-- *表示查所有
select * from 表名
-- 从表中查询指定列(字段)的数据
select 列名 from 表名

二、insert into语句:

insert into用于向数据表中插入新的数据行,语法:

insert into table_name(列名)values (值)
-- 多个列和值要一一对应,多个值之间用逗号隔开

三、update语句:

update语句用于修改表中的数据。语法:

-- update 指定要修改哪个表中的数据
-- set 指定列和列对应的新值
-- where 指定更新的条件
update 表名 set 列名 = 新值 where 列名 = 某值
-- 如果需要修改多列,用逗号分隔
update 表名 set 列1 = 新值1,列2 = 新值2 where 列名 = 某值

例如:在user表中把id为6的人的密码更新为666

update user set pwd = '666' where id = 6

四、delete语句:

delete语句用于删除表中的行。语法:

-- 不写where就是删除整个表的数据
delete from 表名 where 列名=值

五、where子句:

where子句用于限定选择条件

六、and与or运算符:

and和or可在where子语句中把两个或多个条件结合起来。

and表示必须同时满足多个条件,or表示满足一个条件即可。

七、order by子句:

order by语句用于根据指定的列对结果集进行排序。

order by语句默认按照升序对记录进行排序。如果想要按照降序排序,可以使用desc关键字。语法:

-- asc:升序(默认升序,可以省略)   desc:降序
select * from 表名 order by 列名(字段名) [desc/asc]

1、order by子句--升序排序

select * from 表名 order by 列名(字段名) asc

2、order by子句--降序排序

select * from 表名 order by 列名(字段名) desc

3、order by子句--多重排序

对多个字段分别排序,用逗号隔开,语法:

-- 字段名1:降序  字段名2:升序
select * from 表名 order by 字段名1 desc, 字段名2 asc

八、count(*)函数:

count(*)函数用于返回查询结果的总数据条数,语法:

-- 查询满足条件的数据总条数
select count(*) from 表名 where 查询条件

九、as设置别名:

使用as关键字,给查询出来的列名设置别名。语法:

-- 给count(*)设置别名为total
select count(*) as total from 表名 where 查询条件

十、在node项目中操作数据库

在项目中操作数据库的步骤:

1、安装操作mysql数据库的第三方模块(mysql)

npm install mysql

2、通过mysql模块连接到mysql数据库:

在使用mysql模块操作mysql数据库之前,必须先对mysql模块进行必要的配置,步骤如下:

// 1、导入mysql模块
const mysql = require('mysql')
// 2、建立mysql数据库的连接
const db = mysql.createPool({
    host: '127.0.0.1',     // 数据库ip地址
    user: 'root',          // 登录数据库的账号
    password: 'admin123',  // 登录数据库的密码
    database: 'my_db'      // 指定要操作哪个数据库
})

测试mysql模块能否正常工作:

调用db.query()函数,指定要执行的sql语句,通过回调函数拿到执行的结果:

db.query('select 1', (err, res) => {
    if (err) return console.log(err.message)
    // 只要能打印出 [ RowDataPacket { '1' : 1 } ]的结果,就证明数据库连接正常
    console.log(res)
})

3、通过mysql模块执行sql语句

3.1、查询数据

db.query('select * from 表名', (err, res) => {
    // 查询失败
    if (err) return console.log(err.message);
    // 查询成功
    console.log(res);  // 执行select查询语句,得到的是一个数组
})

3.2、插入数据

如果执行的是insert into =可以通过affectedRows属性,来判断是否插入数据成功

// 要插入的数据
const user = { name: 'xiaotian', age: '19' }
// 要执行的sql语句,?表示占位符
// const sql = 'insert into 表名 (字段名) values (?, ?)'
const sql = 'insert into 表名 (name, age) values (?, ?)'
// 使用数组的形式,依次为?占位符添加具体的值
db.query(sql, [user.name, user.age], (err, res) => {
    if (err) return console.log(err.message);
    if (res.affectedRows === 1) {
        console.log('数据插入成功');  // 执行insert into语句,res是一个对象
    }
})

插入数据的便捷方式:如果新值数据对象的属性和数据表的字段一一对应,则可以使用便捷方式快速插入:

const user = { name: 'xiaotian', age: '19' }
const sql = 'insert into 表名 set ?'
db.query(sql, user, (err, res) => {
    if (err) return console.log(err.message);
    if (res.affectedRows === 1) {
        console.log('数据插入成功');
    }
})

3.3、更新数据

// 例如更新id为6的数据
const user = {id: 6,name: 'wifi', age: 18}
const sql = 'update 表名 set name=?, age=? where id=?'  // name,age,id是表中字段名
db.query(sql, [user.name, user.age, user.id], (err, res) => {
    if (err) {
        console.log(err.message);
    }
    if (res.affectedRows === 1) {
        console.log('数据更新成功');
    }
})

更新数据的便捷方法:

在sql语句中,如果有多个占位符,必须使用数组为每个占位符指定具体的值。如果语句中只有一个占位符,则可以省略数组

const user = {id: 6,name: 'wifi', age: 18}
const sql = 'update 表名 set ? where id=?'
// 在sql语句中,如果有多个占位符,必须使用数组为每个占位符指定具体的值
db.query(sql, [user, user.id], (err, res) => {
    if (err) {
        console.log(err.message);
    }
    if (res.affectedRows === 1) {
        console.log('数据更新成功');
    }
})

3.4、删除数据:

推荐使用id这样的唯一标识来删除数据

const sql = 'delete from 表名 where id=?'
db.query(sql, 6, (err, res) => {
    if (err) {
        console.log(err.message);
    }
    if (res.affectedRows === 1) {
        console.log('数据删除成功');
    }
})

3.5、删除标记:

如果直接删除数据是不能恢复的,为了保险起见,可以使用标记删除的形式,来模拟删除的动作。所谓的标记删除,就是在表中设置status这样的状态字段,来标记当前这条数据是否被删除。当用户执行了删除的操作时,并没有用delete将数据删除掉,而是执行update语句,将这条数据对应的status字段标记为删除即可。(例如:status未删除为0,删除为1)

 // 将id为6的用户的status状态改为1
db.query('update 表名 set status=1 where id=?', 6, (err, res) => {
    if (err) {
        console.log(err.message);
    }
    if (res.affectedRows === 1) {
        console.log('数据删除成功');
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值