数据库管理
零. MySql数据库相关
-
操作关系型数据库的标准化、结构化的查询语言: SQL(structured query language)
-
MySQL属于一种关系型的数据库管理系统
-
结构化查询语言的分类:
-
数据定义语言:创建、修改、删除数据库中的各种对象
create—创建数据库
alter—修改数据库
drop—删除数据库
-
数据操纵语言:查询、修改
select—查询
insert—插入到表或视图
update—修改
Delete—删除表数据
-
数据控制语言:授予权限—grant、回收权限—revoke
-
-
mysql可以通过Navicat软件使用,也可以通过终端使用。下面是终端使用的相关代码
1. mysql相关指令
-
登录
默认为输入mysql -uroot -p,然后输入密码即可。
2. 数据库相关指令
-
创建数据库
create database 数据库名
create database if not exists 数据库的名字-------如果没有则创建
-
查看已有数据库
show databases;
-
打开数据库
use 数据库名;
-
删除数据库
drop database 数据库名称;
3. 数据表相关指令
-
创建表
create table 表名(
字段名 数据类型[(长度)] [default 默认值 各种约束],
字段名 数据类型[(长度)] [default 默认值 各种约束],
…
)[表其他属性的定义];
如:
create table person(
id int,
name varchar(10),
sex enum(“男”,“女”) default ‘女’
);
-
查看表
desc 表名
-
向表中插入数据
insert into 表名 values(值1,值2,….)
-
修改表
alter table 表名
add [column] 字段名 字段的定义 [first|after 字段名] --添加新字段
|alter [column] 字段名 {set default 默认值|drop default} --设置默认值或删除默认值
|change [column] 旧的字段名 新的字段名 字段的定义 --修改字段的名称或字段的定义
|modify [column] 字段名 字段的新定义 --修改字段的定义
|drop [column] 字段名 --删除字段
|rename to 新表名
-
删除表
drop table [if
exists] 表名1,表名2,… -
查询表
select * from 表名; 查询表中所有字段
select 字段名1,字段名2… from 表名 ; 查询表中的几个字段
select name from person where age<18; 查询person表中age小于18的name
排序:ORDER BY 字段 [ASC|DESC] []中的为设置升序还是降序
分组: group by 字段1,字段2…
一. nodejs数据库操作
- 数据库其实就是存放数据的仓库
- 数据库存储的优点:方便管理数据(增,删,改)、方便查找、数据安全
- 常用数据库管理系统:MySQL、Oracle、SQLserver
1. 数据库操作—查
select * from 表名
const mysql = require('mysql');
// 创建一个数据库链接
var connection = mysql.createConnection({
host: 'localhost', // 数据库服务器地址
user: 'root', // 用户名
password: '0000', // 密码
database: 'text' // 数据库名
});
// 打开链接
// connection.connect();
// 执行sql语句
connection.query('select * from user', (error, results, fields)=>{
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
// 关闭链接
// connection.end();
error----错误信息
results----结果集
fields----字段的信息
注意:每次查询都是异步操作
打开和关闭链接可以不写,会自动打开和关闭
2. 数据库操作—增
- insert into 表名(字段名1,字段名2…) values (值1,值2…)
const mysql = require('mysql');
// 创建一个数据库链接
var connection = mysql.createConnection({
host: 'localhost', // 数据库服务器地址
user: 'root', // 用户名
password: '0000', // 密码
database: 'text' // 数据库名
});
// 打开链接
// connection.connect();
// 执行sql语句增
let name = 'zgsan';
let miaoshu = '6666';
connection.query(`insert into user(username,description) values ('${name}','${miaoshu}')`, (error, results, fields) => {
if (error) throw error;
console.log('已更改: ', results.affectedRow);
console.log('插入数据的id为>>>', results.insertID);
});
// 关闭链接
// connection.end();
results.affectedRow----受影响的行数
results.insertID----所插入数据的id
3. 数据库操作—改
- update 表名 set 字段名=值 where 条件
connection.query(`update user set username='jackaaa',description='wuwuwu' where id = 1`, (error, results, fields) => {
if (error) throw error;
console.log('已更改: ', results.affectedRows); // 受影响的行数
});
只是SQL语句不一样
4. 数据库操作—删
- delete from 表名 where 条件
connection.query(`delete from user where id = 1`, (error, results, fields) => {
if (error) throw error;
console.log('已更改: ', results.affectedRows); // 受影响的行数
});
delete from user where id = 1 删除user表里id为1的数据
只是SQL语句不一样
三. 数据库练习
// 导包
const express = require('express');
const mysql = require('mysql');
const multer = require('multer');
// 创建服务器
const app = express();
// 公开访问
app.use(express.static('uploads'));
// 创建一个链接
var connection = mysql.createConnection({
host: 'localhost', // 数据库服务器地址
user: 'root', // 用户名
password: '0000', // 密码
database: 'cqmanager' // 数据库名
});
// 创建一个文件夹
var upload = multer({ dest: 'uploads/' })
/**
* 写路由
*/
// 新增英雄
app.post('/hero/add', upload.single('heroIcon'), (req, res)=>{
/**
* 接收前端的参数
* req.file.filename---可以获取回到图像名字
* req.body---可以获取到文参数
* */
let heroIcon = 'http://127.0.0.1:8088/' + req.file.filename;
let {heroName,heroSkill} = req.body;
// 把传递过来的数据保存到数据库中
connection.query(`insert into hero(heroName,heroSkill,heroIcon) values ('${heroName}','${heroSkill}','${heroIcon}')`, (error, results, fields) => {
if(error == null){
res.send({
code:200,
msg:'新增成功'
});
}else{
res.send({
code:500,
msg:'新增失败'
})
}
});
});
// 查询所有英雄
app.get('/hero/all', upload.single('heroIcon'), (req, res) => {
connection.query('select id,heroName,heroSkill,heroIcon from hero where isDelete = "0"', (error, results, fields)=>{
if (error == null) {
res.send({
code: 200,
date: results
});
} else {
res.send({
code: 500,
msg: '查询失败'
})
}
});
});
app.listen(8088,()=>{
console.log('服务器开启了')
})