|
数据库的基本概念
数据库(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管理工具
连接数据库:
主界面的组成:
创建数据库:
创建数据库表:
DataType数据类型:
- int 整数
- varchar(len) 字符串
- tinyint(1) 布尔值
字段的特殊标识:
- PK (Primary Key)主键、唯 标识
- NN (Not Null) 不允许为空
- UQ(Unique) 值唯一
- Al (AutoTncrement)值自动增长
向表中写入数据:
使用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用于限定选择的标准,可以使用下列运算符:
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语句
- 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字段标记为删除。
来源:https://www.cnblogs.com/gfhcg/p/17210516.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|