gpt4 book ai didi

前端程序员需要了解的MySQL

转载 作者:我是一只小鸟 更新时间:2023-03-13 14:31:48 25 4
gpt4 key购买 nike

数据库的基本概念

数据库(database)是用来 组织 、 存储 和 管理 数据的仓库。对数据库中的数据可以进行 增删改查 操作。市面上常见的数据库有:

  • MySQL(使用最广泛。流行度最高的开源免费数据库 Community+Enterprise)
  • Oracle(收费)
  • SQL Server(收费)
  • Mongodb (Community+Enterprise)

MySQL、Oracle、SQL Server属于传统型数据库(关系型数据库或SQL数据库),Mongodb属于新型数据库(非关系型数据库或NoSQL数据库)( 相互弥补 ) 。

数据组织结构 :数据库(database)、数据表(table)、数据行(row)、字段(filed) 。

MySQL的基本使用

使用MySQL Workbench管理数据库

MySQL Workbench:可视化的MySQL管理工具 。

连接数据库:

主界面的组成:

创建数据库:

image.png

创建数据库表:

image.png

DataType数据类型

  • int 整数
  • varchar(len) 字符串
  • tinyint(1) 布尔值

字段的特殊标识

  • PK (Primary Key)主键、唯 标识
  • NN (Not Null) 不允许为空
  • UQ(Unique) 值唯一
  • Al (AutoTncrement)值自动增长

向表中写入数据:

image.png

使用SQL管理数据库

SQL(Structured Query Language)是 结构化查询语言 ,是专门 访问和处理数据库 的编程语言,能够让我们 以编程的形式操作数据库里的数据 .

  • SQL是一门数据库编程语言
  • 使用SQL编写出来的代码,叫做SQL语句
  • SQL语言只能在关系型数据库中使用

SELECT语句

SELECT语句 用于从表中查询数据。执行的结果被存储在一个结果表中.

                        
                          SELECT * FROM 表名称
SELECT 列名称1,列名称2 FROM 表名称
-- SQL语句中的关键字对大小写不敏感

                        
                      

INSERT INTO语句

INSERT INTO 用于向数据表中插入新的数据行.

                        
                          INSERT INTO table_name(列1,列2,...) VALUES(值1,值2,...)
-- 列和值要一一对应

                        
                      

UPDATE语句

UPDATE 用于修改数据表中的数据.

                        
                          -- 1、UPDATE 指定更新的表
-- 2、SET 指定列对应的新值
-- 3、WHERE 指定更新条件
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

UPDATE user SET password ='888888' WHERE id = 4
-- 把user表中id为4的用户密码更新为888888

UPDATE user SET password ='123456',status=1 WHERE id = 7
-- 把user表中id为7的用户密码更新为888888,用户状态更新为1

                        
                      

DELETE语句

DELETE 用于删除数据表中的数据.

                        
                          DELETE FROM 表名称 WHERE 列名称=值

                        
                      

WHERE子句

WHERE 用于限定选择的标准,可以使用下列运算符:

image.png

AND和OR运算符

AND 必须同时满足多个条件 。

OR 只要满足任意一个条件即可 。

ORDER BY语句

ORDER BY 用于根据指定的列对结果进行排序.

                        
                          SELECT * FROM user ORDER BY status
SELECT * FROM user ORDER BY status ASC -- 升序
SELECT * FROM user ORDER BY status DESC -- 降序

SELECT * FROM user ORDER BY status DESC,username ASC -- 多重排序

                        
                      

COUNT(*)函数

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

                        
                          SELECT COUNT(*) FROM 表名称

-- 使用AS为列设置别名
SELECT COUNT(*) as total FROM users WHERE status=0

                        
                      

在Expres中操作MSQL

  • 安装操作MySQL数据库的第三方模块(mysql)
  • 通过mysql模块链接到MySQL数据库
  • 通过mysql模块执行SQL语句
                        
                          npm i mysql

                        
                      
                        
                          const mysql = require('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, results) => {
    //这里的SQL语句没有任何意义
    if (err) return console.log(err.message)
    console.log(results)
})

//获取数据
db.query('select * from users', (err, results) => {
    if (err) return console.log(err.message)
    console.log(results)
})

//插入数据
const user = { username: '赵六', password: 'admin123' }
const sqlStr = 'insert into users (username,password) values (?,?)'
//占位符写法,防止SQL注入
db.query(sqlStr, [user.username, user.password], (err, results) => {
    if (err) return console.log(err.message)
    //如果执行insert语句,返回对象包含affectedRows
    if (results.affectedRows === 1) {
        console.log('插入数据成功!')
    }
})  
//id跳跃现象:跳过的id的数据被删除过,删除的数据可以回滚。

//更新数据
const user = { id: 2, username: '钱七', password: '000' }
const sqlStr = 'update users set username=?,password=? where id=?'
//占位符写法,防止SQL注入
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
    if (err) return console.log(err.message)
    //如果执行insert语句,返回对象包含affectedRows
    if (results.affectedRows === 1) {
        console.log('更新数据成功!')
    }
})

//删除数据
const sqlStr = 'delete from users where id=?'
db.query(sqlStr, 3, (err, results) => {
    if (err) return console.log(err.message)
    //如果执行insert语句,返回对象包含affectedRows
    if (results.affectedRows === 1) {
        console.log('删除数据成功!')
    }
})

                        
                      
                        
                          //插入数据(简化写法)
const user = { username: '赵六', password: 'admin123' }
const sqlStr = 'insert into users (username,password) set ?' //属性顺序必须和表一一对应!!!
//占位符写法,防止SQL注入
db.query(sqlStr, user, (err, results) => {
    if (err) return console.log(err.message)
    //如果执行insert语句,返回对象包含affectedRows
    if (results.affectedRows === 1) {
        console.log('插入数据成功!')
    }
})
//id跳跃现象:跳过的id的数据被删除过,删除的数据可以回滚。

//更新数据(简化写法)
const user = { id: 2, username: '钱七', password: '000' }
const sqlStr = 'update users set ? where id=?'
//占位符写法,防止SQL注入
db.query(sqlStr, [user, user.id], (err, results) => {
    if (err) return console.log(err.message)
    //如果执行insert语句,返回对象包含affectedRows
    if (results.affectedRows === 1) {
        console.log('更新数据成功!')
    }
})

                        
                      

标记删除 :使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。所谓的标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除,当用户执行了删除的动作时,我们并没有执行 DELETE 语句把数据删除掉,而是执行了 UPDATE 语句,将这条数据对应的 status 字段标记为删除.

最后此篇关于前端程序员需要了解的MySQL的文章就讲到这里了,如果你想了解更多关于前端程序员需要了解的MySQL的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com