数据库的简单用法
组织,存储和管理数据的仓库
1. select
select * from 表名称
//查询所有数据
select 列名称 from 表名称
//查询指定列
select 列名称1,列名称2 from 表名称
//查询多列
2. insert into
insert into tablename(列1,列2,...)values(值1,值2,...)
//向表中插入一条新数据
例如:
insert into websites(name,url)values('百度','http://')
3. update
update tablename set 列名称 = 新值 where 列名称 = 旧值
//更改已经存在的数据(单列)
例如:
update websites set name = '他的' where name = '我的'
修改多列:
update websites set name = '你的',url='com.cn' where id = '6'
4.delete
delete from websites where id = 6
//删除id为6的一条数据
5. where子句
//用于添加限定条件
= 等于
<> != 不等于
> 大于
< 小于
<= 小于等于
>= 大于等于
between 在某个范围内
like 搜索某种模式(用于模糊匹配)
例如:
select * from 表名称 where id = 1
and和or
and 同时满足
or 只需要满足一个
例如:
select * from 表名称 where id = 1 or id = 2
select * from 表名称 where id = 6 and name = '你的'
6. order by(默认升序)
select * from 表名称 order by id
//按照id升序
select * from 表名称 order by id desc
//按照id降序排序,desc表示降序
select * from 表名称 order by id desc,name asc
//先根据id进行大范围降序排序,再根据name小范围升序排序
//此处根据id是没有意义的,应用场景应该是可以存在相同元素的列
7. count(*)函数
select count(*) from websites where country = 'CN'
//统计表中country = 'CN'的数量
8.as(起别名)
select count(*) as total from websites where country = 'CN'
//取别名为total
select name as myname,url as myurl from websites
//查询结果的列名会变为别名
nodejs中数据库的操作
1.初步使用mysql模块
-
安装mysql模块
npm i mysql
-
起始代码
const mysql = require('mysql') //建立mysql数据库的连接关系 const db = mysql.createPool({ host: 'localhost', user: 'root',//账号 password: '123456',//密码 database: 'test'//数据库名称 }) //第一个参数为要执行的sql语句 //第二个参数为回调函数 db.query('SELECT 1', function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) console.log('The solution is: ', results) }) //输出结果没有报错,就表明连接成功 //The solution is: [ RowDataPacket { '1': 1 } ]
-
向表中插入数据
const mysql = require('mysql') //建立mysql数据库的连接关系 const db = mysql.createPool({ host: 'localhost', user: 'root',//账号 password: '123456',//密码 database: 'test'//数据库名称 }) //定义要插入的对象 const web = {name:'百度',url:'http://baidu.com'} //定义sql语句,先用?代替需要插入的值 const sql = 'insert into websites (name,url) values(?,?)' //使用数组形式,依次为 ?占位符指定具体值 db.query(sql,[web.name,web.url], function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) //插入了一条数据,影响行数等于1时就是成功插入了 if(results.affectedRows ===1){ console.log('插入数据成功') } })
向表中新增数据时,如果数据对象的每个属性和数据表字段一一对应,则可以通过如下方式快速插入数据:
const mysql = require('mysql') //建立mysql数据库的连接关系 const db = mysql.createPool({ host: 'localhost', user: 'root',//账号 password: '123456',//密码 database: 'test'//数据库名称 }) //定义要插入的对象 const web = {name:'百度',url:'http://baidu.com'} //定义sql语句,先用?代替需要插入的值 const sql = 'insert into websites set ?' //直接将数据对象当作占位符的值 db.query(sql,web, function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) //插入了一条数据,影响行数等于1时就是成功插入了 if(results.affectedRows ===1){ console.log('插入数据成功') } })
-
修改表中的数据
const mysql = require('mysql') //建立mysql数据库的连接关系 const db = mysql.createPool({ host: 'localhost', user: 'root',//账号 password: '123456',//密码 database: 'test'//数据库名称 }) //定义要插入的对象 const web = {id : 6,name:'阿里',url:'http://baidu'} //定义sql语句,先用?代替需要插入的值 const sql = 'update websites set name=?,url=? where id = ?' //改进为 //const sql = 'update websites set ? where id = ?' //db.query(sql,[web,web.id], function (err, results) //会替换所有属性 //直接将数据对象当作占位符的值 db.query(sql,[web.name,web.url,web.id], function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) //插入了一条数据,影响行数等于1时就是成功插入了 if(results.affectedRows ===1){ console.log('修改数据成功') } })
-
删除数据
const mysql = require('mysql') //建立mysql数据库的连接关系 const db = mysql.createPool({ host: 'localhost', user: 'root',//账号 password: '123456',//密码 database: 'test'//数据库名称 }) //定义sql语句 const sql = 'delete from websites where id = ?' //直接将数据对象当作占位符的值 db.query(sql,6, function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) //插入了一条数据,影响行数等于1时就是成功删除了 if(results.affectedRows ===1){ console.log('删除数据成功') } })
-
标记删除
使用DELETE语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式来模拟删除的动作。
所谓的标记删除,就是在表中设置类似于status
这样的状态字段,来标记当前这条数据是否被除。
当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。db.query('update websites set status = 1 where id = ?',6, function (err, results) { //如果err不为空,就是有错误 if (err) return console.log(err.message) //插入了一条数据,影响行数等于1时就是成功删除了 if(results.affectedRows ===1){ console.log('删除数据成功') } })