SQL的基本使用和MySQL在项目中的操作

SQL的基本使用SQL是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。

SQL是一门数据库编程语言使用SQL语言编写出来的代码,叫做SQL语句SQL语句只能在关系型数据库中使用(例如Mysql、Oracle、SQL Server),非关系型数据库(如Mongodb)不支持SQL语言。SELECT语句语法格式SELECT语句用于从表中查询数据,执行的结果被存储在一个结果表中(成为结果集),语法格式如下:

代码语言:javascript代码运行次数:0运行复制-- 注释

-- 从from指定的表中,查询出所有的数据,* 表示所有列

select * from 表名称

-- 从from指定的表中,查询出指定的列名称(字段)的数据

select 列名称 from 表名称注意:SQL语句中的关键词对大小写不敏感,select等于SELECT,FROM等效于from。

SELECT * 示例我们希望从users表中选取所有的列,可以使用 符号 * 取代列的名称:

SELECT 列名称 示例如需取名为 username 和 password的列的内容(从名为users的数据库表),请使用下面的select语句:

INSERT INTO语句语法格式INSERT INTO语句用于向数据表中插入新的数据行,语法格式如下:

代码语言:javascript代码运行次数:0运行复制-- 语法解读:向指定的表中,插入如下几列数据,列的值通过values一一指定

-- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔

insert into table_name(列1,列2,...) values (值1,值2,...)INSERT INTO 示例向users表中,插入一条 username为tony stark,password为 098123 的用户数据:

代码语言:javascript代码运行次数:0运行复制insert into users(username,password) value('tony stark','098123')UPDATE语句语法格式update语句用于修改表中的数据,语法格式如下:

代码语言:javascript代码运行次数:0运行复制update 表名称 set 列名称 = 新值 where 列名称 = 某值用 update指定要更新那个表中的数据用 set指定列对应的新值用 where指定更新的条件UPDATE示例更新某一行中的一个列

把users表中id为7的用户密码,更新为888888:

代码语言:javascript代码运行次数:0运行复制update users set password='888888' where id=4更新某一行中的若干列

把users表中id为2的用户密码和状态,分别更新为admin123和1:

代码语言:javascript代码运行次数:0运行复制update users set password='admin123',status=1 where id=2DELETE语句语法格式delete语句用于删除表中的行,语法格式如下:

代码语言:javascript代码运行次数:0运行复制-- 从指定的表中,根据where条件,删除对应的数据行

delete from 表名称 where 列名称 = 值DELETE示例从users表中,删除id为4的用户:

代码语言:javascript代码运行次数:0运行复制delete from users where id=4WHERE语句where子句用于限定选择的标准,在select,update,delete语句中,,皆可使用where子句来限定选择的标准。

代码语言:javascript代码运行次数:0运行复制-- 查询语句中的where条件

select 列名称 from 表名称 where 列 运算符 值

-- 更新语句中的where条件

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

-- 删除语句中的where条件

delete from 表名称 where 列 运算符 值下面的运算符可在where子句中使用,用来限定选择的标准:

运算符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜素某种模式

注意:在某些版本的SQL中,操作符 <>可以写为 !=

示例:

代码语言:javascript代码运行次数:0运行复制-- 查询status为1的所有用户

select * from users where status=1

-- 查询id大于2的所有用户

select * from users where id>2

-- 查询username不等于admin的所有用户

select * from users from username<>'admin'AND和OR运算符AND和OR可在where语句中把俩个或多个条件结合起来。

AND表示必须同时满足多个条件。相当于JavaScript中的 &&运算符。

OR表示只要满足任意一个条件即可,相当于JavaScript中的 ||运算符

示例使用AND来显示所有status为0,并且id小于3的用户:

代码语言:javascript代码运行次数:0运行复制select * from users where status=0 and id<3使用OR来显示所有status为1,或者username为zs的用户:

代码语言:javascript代码运行次数:0运行复制select * from users where status=1 or username='zs'SQ的ORDER BY子句ORDER BY语句用于根据指定的列队结果集进行排序

ORDER BY语句默认按照升序记录进行排序

如果希望按照降序队记录进行排序,可以使用DESC关键字

升序排序:对表中的数据,按照status字段进行升序排序:

代码语言:javascript代码运行次数:0运行复制select * from users order by status降序排序:对users表中的数据,按照id字段进行降序排序:

代码语言:javascript代码运行次数:0运行复制select * from users order by id desc多重排序:对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序,进行升序排序:

代码语言:javascript代码运行次数:0运行复制select * from users oreder status DESC,username ASCCOUNT(*)函数COUNT(*)函数用于返回查询结果的总数据条款:

代码语言:javascript代码运行次数:0运行复制select count(*) from 表名称查询users表中status为0的总数据条款:

代码语言:javascript代码运行次数:0运行复制select count(*) from users where status=0使用AS为列设置别名如果希望查询出来的列名称设置别名,可以使用AS关键字:

代码语言:javascript代码运行次数:0运行复制select count(*) as total from users where status=0项目中操作MySql安装操作MySQL数据库的第三方模块(mysql)

代码语言:javascript代码运行次数:0运行复制npm install mysql通过mysql模块连接到MySQL数据库

代码语言:javascript代码运行次数:0运行复制//导入mysql模块

const mysql = require('mysql')

//建立与MySQL数据库的连接

const db = mysql.createPool({

host:'127.0.0.1', //数据库的IP地址

user:'root', //登录数据库的账户

password:'admin', //登录数据库的密码

database:'my_db_01' //指定要操作的数据库

})通过MySQL模块执行SQL语句

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

代码语言:javascript代码运行次数:0运行复制//检测mysql模块能否正常工作

db.query('select 1',(err,results)=>{

if(err) return console.log(err.message)

//只要能打印出[RowDataPacket{'1':1}]的结果,就证明数据库连接正常

console.log(results)

})查询数据查询users表中的数据

代码语言:javascript代码运行次数:0运行复制const sqlStr='select * from users'

db.query(sqlStr,(err,results)=>{

//判断查询失败

if(err) return console.log(err.message)

//查询成功

console.log(results)

})插入数据向users表中新增数据,其中username为Spider-Man,password为000123

代码语言:javascript代码运行次数:0运行复制//1.要插入到表中的数据对象

const user = {username:'Spider-Man',password:'000123'}

//2.待执行的SQL语句,其中的?表示占位符

const sqlStr = 'insert into (username,password) values(?,?)'

//3.使用数组的形式,依次为?占位符指定具体的值

db.query(sqlStr,[user.username,suer.password](err,results)=>{

if(err) return console.log(err.message)//成功

if(results.affectedRows === 1){

console.log('数据插入成功')//失败

}

})插入数据的便捷方式:

向表中新增数据时,如果数据对象每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:

代码语言:javascript代码运行次数:0运行复制//1.要插入到表中的数据对象

const user={username:'yuezeyi',password:'000'}

//2.待执行的SQL语句,其中英文的?表示占位符

const sqlStr='insert into users set ?'

//3.直接将数据对象当作占位符的值

db.query(sqlStr,user,(err,results)=>{

if(err) return console.log(err.message)

if(results.affectedRows===1){

console.log('数据插入成功')

}

})更新数据代码语言:javascript代码运行次数:0运行复制//1.要更新的数据对象

const user ={ id:7, username:'aaa',password:'000'}

//2.待执行的SQL语句

const sqlStr='update users set username=?,password=? where id=?'

//调用db.query()执行SQL语句的同时,使用数组依次为占位符指定具体的值

db.query(sqlStr,[user.name,user.password,user.id],(err,results)=>{

if(err) return console.log(err.message)

if(results.affectedRows===1){

console.log('更新数据成功')

}

})更新数据的便捷方式:

更新数据表时,如果数据对象每个属性和数据表的字段一一对应,则可以通过如下方式快速更新数据表:

代码语言:javascript代码运行次数:0运行复制//1.要更新的数据对象

const user={id:7,username:'bbb',password:'111'}

//2.待执行的SQL语句

const sqlStr='update users set ? where id=?'

//3.调用db.query()执行SQL的同时,使用数组依次为占位符指定具体值

db.query(sqlStr,[user,user.id],(err,results)=>{

if(err) console.log(err.message)

if(results.affectedRows===1){

console.log('数据更新成功')

}

})删除数据在删除数据时,推荐根据id这样的唯一标识,来删除对应的数据:

代码语言:javascript代码运行次数:0运行复制//1.要执行的SQL语句

const sqlStr='delete from users where id=?'

//2.调用db.query()执行SQL语句的同时,为占位符指定具体的值

db.query(sqlStr,7,(err,results)=>{

if(err) return console.log(err.message)

if(results.affectedRows===1){

console.log('数据删除成功')

}

})注意:如果SQL语句中有多个占位符,则必须使用数组为每个占位符指定具体的值;如果SQL语句中只有一个占位符,则可以省略数组。