数据库基本概念
1.数据库:用来组织,存储和管理数据的仓库 2.常见的数据库分类:
- MySQL【目前使用最广泛,流行度最该的开源免费数据库】
- Oracle
- SQL Server
-上述是传统型数据库,关系型数据库 - Mongodb数据库【新型数据库,菲关系型数据库】
3.传统型数据库的数据组织结构:数据库,数据表,数据行,字段 4.实际开发中库,表,行,字段的关系 ①在实际开发中,一般情况下,每个项目都对应独立的数据库 ②不同的数据,要存储到数据库的不同的表中 ③每个表中具体存储哪些信息没有字段决定 ④表中德夯,代表每一条具体的数据
安装配置数据库
创建数据库 创建数据表:点击create table----输入表格名称—填写数据表的描述项----设计表的字段 int:整数 varchar(len)字符串 tinyint(1)布尔值
字段的特殊标识符: PK:主键,唯一标识 NN:值不允许为空 UQ:值唯一 AI:值自动增长 向表中写入数据
MYSQL的基本使用
*注明:SQL中的注释-- * 1.Select语句
select * from 表名称;
SELECT 列名称 FROM 表名称;
SQL语句实例
select * from users;
select username from users;
2.Insert into:项数据表中插入新的数据行 语法上格式:
insert into table_name(列1,列2……)values(值1,值2……)
实例代码
insert into users (username,password) values ('tony','098123')
3.update语句:用于修改表中的数据
UPDATE 表名称 SET 列名称=新值 WHERE (更新的条件==列名称=某值)
实例代码
update users set password='888888' where id='1'
update users set password='ad123',status=1 where id='1'
4.DELETE语句:删除表里面的行
delete FROM 表名称 where 列名称=值
示例代码
delete from users where id='2'
5.where 子句 用来限定选择得标准
(1)=--------等于 (2)<>(!=)-------不等于 (3) >----------大于 (4)<----------小于 (5)>=---------大于等于 (6)<=-------小于等于 (7)between------在某个范围内 (8)like-------搜索某种模式 6.AND和OR运算符:把两个或多个条件结合起来 AND:表示必须同时满足多个条件 OR:只要满足任意一个条件即可
示例代码
select * from users where id<'11' and status=0;
select * from users where id<'11' or username='tony'
7.order by order by预警与根据限定的列对结果进行排序【默认按照升序对记录进行排列】 升序:ASC 降序:DESC 示例代码
select * from users order by id asc;
select * from users order by id desc;
8.order by的多重排序:将排序的条件写在 order by的后面然后用英文的逗号隔开
示例代码
select * from users order by id desc,username asc;
9.count(*):用于返回查询结构的总数据条数 语法格式:
select count(*) from 表名称 where 条件
10,使用AS为列设置别名 如果要给多个列名设置别名。只需要将这些列的名称用英文的逗号隔开即可
select count(*) as total from users where status=0
在项目中操作MySQL
1.在项目中操作MySQL的步骤 ①安装MySQL数据库的第三方模块(mysql) ②通过mysql模块连接到MYSQL数据库 ③通过mysql模块执行SQL语句 2.安装与配置mysql模块:npm install mysql 3.配置mysql模块: 步骤:
- 导入mysql模块
- 建立与MySQL数据库的连接:调用createePoool
数据库的IP地址:host 登录数据库的账号:user【默认root】 登录数据库的密码:password 指定操作的数据库:database 示例代码:
const mysql=require('mysql')
const db=mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'admin123',
database:'my_db_01'
测试mysql模块能否正常工作 调用db.query()函数,指定要执行的SQL语句,通过回调函数拿到执行的结果 语法
db.query('SQL语句',(err,result)=>{
)
实际测试代码
db.query('select * from users',(err,result)=>{
if(err){
return console.log(err.message);
}
else{
console.log(result);
}
})
4.向users表中插入对象 步骤 (1)创建要插入到users表中的数据对象 (2)创建待执行的SQL语句,其中?表示占位符 (3)使用query方法,以数组的形式,依次为占位符指定具体的数据 如果result.affectedRows==1则证明插入成功 实例代码
const user={username:'Joe',password:'Joe888'}
const sqlStr='insert into users (username,password) values (?,?)'
db.query(sqlStr,[user.username,user.password],(err,result)=>{
if(err){
return console.log('添加失败'+err.message);
}
if(result.affectedRows===1){
console.log('添加成功');
}
})
简便方式
const user={username:'May',password:'May888'}
const sqlStr='insert into users set ?'
db.query(sqlStr,user,(err,result)=>{
if(err){
return console.log('添加失败'+err.message);
}
if(result.affectedRows===1){
console.log('添加成功');
}
})
5.更新数据 update 测试代码:
const user={id:7,username:'Alice',password:'Alice123'}
const sqlStr='update users set username=?,password=? where id=?'
db.query(sqlStr,[user.username,user.password,user.id],(err,result)=>{
if(err) {return console.log('添加失败'+err.message);}
if(result.affectedRows===1){
console.log('更新成功');
}
})
简便方式
const user={id:9,username:'CAT',password:'cat123'}
const sqlStr='update users set ? where id=?'
db.query(sqlStr,[user,user.id],(err,result)=>{
if(err) {return console.log('添加失败'+err.message);}
if(result.affectedRows===1){
console.log('更新成功');
}
})
6.删除数据的值
const sqlStr='delete from users where id=?'
db.query(sqlStr,7,(err,result)=>{
if(err) {return console.log('删除失败'+err.message);}
if(result.affectedRows===1){
console.log('删除成功');
}
})
7.标记删除:为了保险起见,推荐使用标记删除的形式,来模拟删除的动作 相当于在表中设置类似于status这样的状态字段,来标记当前的这天数据是否被删除
当用户执行了删除的动作时,我们真正的并没有执行delete语句将这条数据删除掉,而是执行了update语句,将这条数据的status字段标记为删除即可
示例代码:
const sqlStr='update users set status=? where id=?';
db.query(sqlStr,[1,3],(err,result)=>{
if(err) {return console.log('删除失败'+err.message);}
if(result.affectedRows===1){
console.log('删除成功');
}
})
在Express中操作数据库
前后端的身份认证
|