经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
前端程序员需要了解的MySQL
来源:cnblogs  作者:辜负寒彻骨  时间:2023/3/14 8:48:18  对本文有异议

数据库的基本概念

数据库(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
创建数据库:

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语句用于从表中查询数据。执行的结果被存储在一个结果表中。

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

INSERT INTO语句

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

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

UPDATE语句

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

  1. -- 1UPDATE 指定更新的表
  2. -- 2SET 指定列对应的新值
  3. -- 3WHERE 指定更新条件
  4. UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
  5. UPDATE user SET password ='888888' WHERE id = 4
  6. -- user表中id4的用户密码更新为888888
  7. UPDATE user SET password ='123456',status=1 WHERE id = 7
  8. -- user表中id7的用户密码更新为888888,用户状态更新为1

DELETE语句

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

  1. DELETE FROM 表名称 WHERE 列名称=值

WHERE子句

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

image.png

AND和OR运算符

AND必须同时满足多个条件

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

ORDER BY语句

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

  1. SELECT * FROM user ORDER BY status
  2. SELECT * FROM user ORDER BY status ASC -- 升序
  3. SELECT * FROM user ORDER BY status DESC -- 降序
  4. SELECT * FROM user ORDER BY status DESC,username ASC -- 多重排序

COUNT(*)函数

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

  1. SELECT COUNT(*) FROM 表名称
  2. -- 使用AS为列设置别名
  3. SELECT COUNT(*) as total FROM users WHERE status=0

在Expres中操作MSQL

  • 安装操作MySQL数据库的第三方模块(mysql)
  • 通过mysql模块链接到MySQL数据库
  • 通过mysql模块执行SQL语句
  1. npm i mysql
  1. const mysql = require('mysql')
  2. //建立链接
  3. const db = mysql.createPool({
  4. host: '127.0.0.1', //数据库的IP地址
  5. user: 'root', //登录账号密码
  6. password: '123456',
  7. database: 'my_db_01'//指定操作那个数据库
  8. })
  9. //测试mysql模块能否正常工作
  10. db.query('SELECT 1', (err, results) => {
  11. //这里的SQL语句没有任何意义
  12. if (err) return console.log(err.message)
  13. console.log(results)
  14. })
  15. //获取数据
  16. db.query('select * from users', (err, results) => {
  17. if (err) return console.log(err.message)
  18. console.log(results)
  19. })
  20. //插入数据
  21. const user = { username: '赵六', password: 'admin123' }
  22. const sqlStr = 'insert into users (username,password) values (?,?)'
  23. //占位符写法,防止SQL注入
  24. db.query(sqlStr, [user.username, user.password], (err, results) => {
  25. if (err) return console.log(err.message)
  26. //如果执行insert语句,返回对象包含affectedRows
  27. if (results.affectedRows === 1) {
  28. console.log('插入数据成功!')
  29. }
  30. })
  31. //id跳跃现象:跳过的id的数据被删除过,删除的数据可以回滚。
  32. //更新数据
  33. const user = { id: 2, username: '钱七', password: '000' }
  34. const sqlStr = 'update users set username=?,password=? where id=?'
  35. //占位符写法,防止SQL注入
  36. db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
  37. if (err) return console.log(err.message)
  38. //如果执行insert语句,返回对象包含affectedRows
  39. if (results.affectedRows === 1) {
  40. console.log('更新数据成功!')
  41. }
  42. })
  43. //删除数据
  44. const sqlStr = 'delete from users where id=?'
  45. db.query(sqlStr, 3, (err, results) => {
  46. if (err) return console.log(err.message)
  47. //如果执行insert语句,返回对象包含affectedRows
  48. if (results.affectedRows === 1) {
  49. console.log('删除数据成功!')
  50. }
  51. })
  1. //插入数据(简化写法)
  2. const user = { username: '赵六', password: 'admin123' }
  3. const sqlStr = 'insert into users (username,password) set ?' //属性顺序必须和表一一对应!!!
  4. //占位符写法,防止SQL注入
  5. db.query(sqlStr, user, (err, results) => {
  6. if (err) return console.log(err.message)
  7. //如果执行insert语句,返回对象包含affectedRows
  8. if (results.affectedRows === 1) {
  9. console.log('插入数据成功!')
  10. }
  11. })
  12. //id跳跃现象:跳过的id的数据被删除过,删除的数据可以回滚。
  13. //更新数据(简化写法)
  14. const user = { id: 2, username: '钱七', password: '000' }
  15. const sqlStr = 'update users set ? where id=?'
  16. //占位符写法,防止SQL注入
  17. db.query(sqlStr, [user, user.id], (err, results) => {
  18. if (err) return console.log(err.message)
  19. //如果执行insert语句,返回对象包含affectedRows
  20. if (results.affectedRows === 1) {
  21. console.log('更新数据成功!')
  22. }
  23. })

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

原文链接:https://www.cnblogs.com/gfhcg/p/17210516.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号