前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL的基本使用和MySQL在项目中的操作

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

作者头像
岳泽以
发布2022-10-26 17:30:43
1.3K0
发布2022-10-26 17:30:43
举报
文章被收录于专栏:岳泽以博客

SQL的基本使用

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

  • SQL是一门数据库编程语言
  • 使用SQL语言编写出来的代码,叫做SQL语句
  • SQL语句只能在关系型数据库中使用(例如Mysql、Oracle、SQL Server),非关系型数据库(如Mongodb)不支持SQL语言。

SELECT语句

语法格式

SELECT语句用于从表中查询数据,执行的结果被存储在一个结果表中(成为结果集),语法格式如下:

代码语言:javascript
复制
-- 注释
-- 从from指定的表中,查询出所有的数据,* 表示所有列
select * from 表名称

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

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

SELECT * 示例

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

image-20221003165201706
image-20221003165201706

SELECT 列名称 示例

如需取名为 usernamepassword的列的内容(从名为users的数据库表),请使用下面的select语句:

image-20221003165356740
image-20221003165356740

INSERT INTO语句

语法格式

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

代码语言:javascript
复制
-- 语法解读:向指定的表中,插入如下几列数据,列的值通过values一一指定
-- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔
insert into table_name(列1,列2,...) values (值1,值2,...)

INSERT INTO 示例

向users表中,插入一条 username为tony stark,password098123 的用户数据:

代码语言:javascript
复制
insert into users(username,password) value('tony stark','098123')

UPDATE语句

语法格式

update语句用于修改表中的数据,语法格式如下:

代码语言:javascript
复制
update 表名称 set 列名称 = 新值 where 列名称 = 某值
  • update指定要更新那个表中的数据
  • set指定列对应的新值
  • where指定更新的条件

UPDATE示例

更新某一行中的一个列

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

代码语言:javascript
复制
update users set password='888888' where id=4

更新某一行中的若干列

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

代码语言:javascript
复制
update users set password='admin123',status=1 where id=2

DELETE语句

语法格式

delete语句用于删除表中的行,语法格式如下:

代码语言:javascript
复制
-- 从指定的表中,根据where条件,删除对应的数据行
delete from 表名称 where 列名称 = 值

DELETE示例

从users表中,删除id为4的用户:

代码语言:javascript
复制
delete from users where id=4

WHERE语句

where子句用于限定选择的标准,在select,update,delete语句中,,皆可使用where子句来限定选择的标准。

代码语言:javascript
复制
-- 查询语句中的where条件
select 列名称 from 表名称 where 列 运算符 值

-- 更新语句中的where条件
update 表名称 set 列=新值 where 列 运算符 值

-- 删除语句中的where条件
delete from 表名称 where 列 运算符 值

下面的运算符可在where子句中使用,用来限定选择的标准:

运算符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜素某种模式

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

示例:

代码语言:javascript
复制
-- 查询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
复制
select * from users where status=0 and id<3

使用OR来显示所有status为1,或者username为zs的用户:

代码语言:javascript
复制
select * from users where status=1 or username='zs'

SQ的ORDER BY子句

ORDER BY语句用于根据指定的列队结果集进行排序

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

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

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

代码语言:javascript
复制
select * from users order by status

降序排序:对users表中的数据,按照id字段进行降序排序:

代码语言:javascript
复制
select * from users order by id desc

多重排序:对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序,进行升序排序:

代码语言:javascript
复制
select * from users oreder status DESC,username ASC

COUNT(*)函数

COUNT(*)函数用于返回查询结果的总数据条款:

代码语言:javascript
复制
select count(*) from 表名称

查询users表中status为0的总数据条款:

代码语言:javascript
复制
select count(*) from users where status=0

使用AS为列设置别名

如果希望查询出来的列名称设置别名,可以使用AS关键字:

代码语言:javascript
复制
select count(*) as total from users where status=0

项目中操作MySql

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

代码语言:javascript
复制
npm install mysql

通过mysql模块连接到MySQL数据库

代码语言:javascript
复制
//导入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
复制
//检测mysql模块能否正常工作
db.query('select 1',(err,results)=>{
    if(err) return console.log(err.message)
    //只要能打印出[RowDataPacket{'1':1}]的结果,就证明数据库连接正常
    console.log(results)
})

查询数据

查询users表中的数据

代码语言:javascript
复制
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
复制
//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
复制
//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
复制
//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
复制
//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
复制
//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语句中只有一个占位符,则可以省略数组。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 10 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL的基本使用
    • SELECT语句
      • 语法格式
      • SELECT * 示例
      • SELECT 列名称 示例
    • INSERT INTO语句
      • 语法格式
      • INSERT INTO 示例
    • UPDATE语句
      • 语法格式
      • UPDATE示例
    • DELETE语句
      • 语法格式
      • DELETE示例
    • WHERE语句
      • AND和OR运算符
        • 示例
      • SQ的ORDER BY子句
        • COUNT(*)函数
          • 使用AS为列设置别名
      • 项目中操作MySql
        • 查询数据
          • 插入数据
            • 更新数据
              • 删除数据
              相关产品与服务
              云数据库 MySQL
              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档