首先安装两个软件:
数据储存:
MySQL :: Download MySQL Community Server
可视化工具:
MySQL :: Download MySQL Workbench
按照步骤安装即可
使用
1.输入设置的密码:
2.设置库的名字:
3.创建数据表:
4.默认值:
DataTypes数据类型:
- int 整数
- varchar(len)字符串
- tinyint(1)布尔值
字符串的特殊标识:
- PK(Primary Key)主键 唯一标识
- NN (Not Null) 值不允许为空
- UQ (Unique) 值唯一
- AI (auto increment) 值自动增长
5.向表中写入数据:
SQL语句
作用:增删改查 。。。
- 查询数据(select)
- 插入数据 (insert into)
- 更新数据 (update)
- 删除数据 (delete)
-- 这是注释
-- 从from 指定的「表中」,查询出「所有的数据」* 表示所有
select * from 表名称
-- 从from 指定的「表中」,查询出指定列名称字段
select 列名称 from 表名称
查询:
select * from users
select id from users
增加:
insert into users (username,password) values ('tony','123456')
修改:
-- 语法解读
-- 1. 用 update 指定要更新那个表中的数据
-- 2. 用 set 指定列对应的新值
-- 3. 用 where 指定更新的条件
upadte 表名称 set 列名称 = 新值 where 列名称 = 某值
将id = 3 的password更改为‘111111’
update users set password='111111' where id=3
-- 若干项
update users set password='111111',status='1' where id=3
删除(删除 id =3)
-- 语法解析
-- 从指定的表中, 根据where 条件,删除对应的数据行
delete from 表名称 where 列名称 = 值
delete from users where id=3
SQl的where子句
where 子句用于限定选择标准,在select,update,delete语句中,皆可以使用where 限定选择范围
-- 查询语句中的 where 条件
select 列表名 from 表名称 where 列 运算符 值
-- 查询 status 为1的所有用户
select * from users where status=1
-- 查询 ID 大于 2 的所有用户
select * from users where id>2
-- 查询username 不等于 admin 的所有用户
select * from users where username<>'admin'
-- 更新语句中的 where 条件
update 表名称 set 列 = 新值 where 列 运算符 值
update users set password='111111' where id=3
-- 删除语句中的 where 条件
delete from 表名称 where 列 运算符 值
delete from users where id=3
SQL的and 和 or 运算符
语法:
and 和 or 可以在where 子语句中,把两个或多个条件结合起来
and 表示必须同时满足多个条件 相当于js中的 &&
or 表示只要满足一个条件即可 相当于 js中的 ||
--使用and 来显示所有status 为零 和id 小于三的用户
select * from users where status=0 and id<3
-- 使用 or 运算符 显示所有 status=1 或者username ='zhangsan'的用户
select * from users where status=1 or username='zhangsan'
SQL的 order by 子句
语法:
order by 语句用于根据指定的列对结果集进行排列
order by 默认是按照升序
如果希望降序排列,可以使用 desc 关键字
order by 升序
-- select * from users order by status asc
-- asc 默认升序 ,可以不写
select * from users order by status
--降序排列
select * from users order by status desc
-- 对users 表中的数据 先按照status 进行降序排序,再按照 username 字母的顺序进行升序排序
select * from users order by status desc,username asc
SQL的 count(*)函数
-- 查询users 表中 status 为0 的数据条数
select count(*) from users whree status=0
使用 as 为 列设置别名
select count(*) as total from users where status=0
在项目中操作SQL
安装:
npm install mysql or yarn add mysql
配置 mysql :
//导入sql模块
const mysql = require('mysql')
const db =mysql.createPool({
host:'127.0.0.1', //数据库的 ip 地址
user:'root', //登陆数据库账号
password:'admin123', //密码
database:'my_login' //指定操作哪一个数据库
})
// 检测数据库 模块能否正常工作
db.query('select 1',(err,results)=>{
if(err) return console.log(err);
console.log(results);
})
查询 :
//查询users 表中的所有数据
db.query('select * from users',(err,results)=>{
if(err) return console.log(err);
console.log(results);
})
插入:
//增加数据
db.query('insert into users (username,password) values ("xitougao","1234567")',(err,results)=>{
if(err) return console.log(err);
console.log(results);
})
//要插入表中的对象
const user ={username:'kel',password:'123456789'}
//待执行的sql 语句,其中 英文 问号表示 占位符
const mysqlstr = 'insert into users (username,password) values (?,?)'
db.query(mysqlstr,[user.username,user.password],(err,results)=>{
if(err) return console.log(err);
if(results.affectedRows===1){
console.log('插入成功');
}
})
插入数据的便携方式:
//插入数据的便携方式
// 执行sql 语句其中 英文的问好表示占位符
const mysqlstr = 'insert into users set ?'
db.query(mysqlstr,user,(err,results)=>{
if(err) console.log(err.message);
if(results.affectedRows===1){
console.log('插入成功');
}
})
更新数据:
//更新数据
// 要更新的数据对象
const userss = {id:7,username:'lisisi',password:'1233333'}
// 要执行的sql 语句
const sqlstr = 'update users set username=?,password=? where id=?'
// 依次写入占位符的值
db.query(sqlstr,[userss.username,userss.password,userss.id],(err,results)=>{
if(err) return console.log(err.message);
if(results.affectedRows===1){
console.log('更新成功');
}
})
更新的便携方式
// 更新数据的便携方式
const userss = {id:7,username:'辈子',password:'00000'}
const sqlstr = 'update users set ? where id=?'
db.query(sqlstr,[userss,userss.id],(err,results)=>{
if(err) return console.log(err.message);
if(results.affectedRows===1){
console.log('更新成功');
}
})
删除数据:
// 删除数据
const sqlstr = 'delete from users where id=?'
// 注意 如果是多个占位符,、,必须使用数组为每个占位符指定具体的值
// 如果是一个则可以省略
db.query(sqlstr,6),(err,results)=>{
console.log(results);
if(err) return console.log(err.message);
if(results.affectedRows===1) {
console.log('删除成功');
}
}
标记删除:
使用delete字段 会把表中的数据真正的删除掉,为了保险起见,我们采用标记删除的法,来模拟删除的动作,就是在表中设置类似于status 的字段,来标记当前字段是否删除,
当执行删除的动作时,我们并没有执行 delete ,而是执行 update
// 标记删除
const sqlstr = 'update users set status=? where id=?'
const sta = {status:1,id:8}
db.query(sqlstr,[sta.status,sta.id],(err,resulte)=>{
if(err) return console.log(err.message);
if(resulte.affectedRows===1) {
console.log('删除成功');
}
})