SQl 数据库 使用介绍

mySql 数据库

SQL 是用于访问和处理数据库的标准的计算机语言。提供了安全机制、便于通过Sql语句对数据直接进行操作

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

需要的软件有: 

MySQL服务
navicat

RDBMS 术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

  • 表头(header): 每一列的名称;
  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某条记录的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 键的值在当前列中具有唯一性。

 

数据库可视化工具navicat的基本使用

  1. 打开和关闭数据库连接

  2. 创建用户、设置用户权限

  3. 新建数据库、新建表、设计表(设置字段类型)、设置Id自增、日期自动插入

  • 示例:
  • 新建users用户表,表字段为:id、name、age、gender、address、isdel

  • Id自增:设置为主键,勾选自动递增

  • 主键:是用来标识数据表中每一行数据的唯一性的,确保独一无二性。

 

使用Sql语句对数据库执行基本操作

查询 :

1 -- 查询的SQL语句  查询出来的数据都是结果集
2 -- 语法:  select * from 表名 where 条件 
3 -- && 用 and 代替   || 用 or 代替   ! 用 not 代替
4 select * from  stuInfo;  --  表示查询所有的数据信息
5 select id,name,gender from stuinfo; -- 根据指定的字段来查询
6 select * from stuinfo where id = 2;  -- 查询id为2的那一条数据
7 select name,age from stuinfo where id = 3;  -- 查询id为3的那条数据中的name age id
8 select * from stuinfo where id =3 or id= 5; -- 查询id为3 和5 的那两条数据
9 select * from stuinfo where id in (2,3,4,5,7);  -- 查询id为 2  3  4  5  7 的那些数据

 

 

增加 :

1 -- 增加语句
2 -- 语法: insert [into] 表名 (字段1,字段2...) values (值1,值2...);
3 insert into stuinfo (id,name,gender,age,phone) values (NULL,'张三','',20,'1302012345');
4 insert into stuinfo (name,age,gender) values ('李四',21,'');
5 insert into stuinfo values (null,"王五","男",21);  -- 如果直接写值的话,必须和字段匹配起来,这样写会报错的
6 insert into stuinfo values (null,"王五","男",21,"1234666"); -- 没有字段的时候,如果要是直接添加值的话,必须和字段对应,不能缺少

 

 

修改 :

-- 修改语句
-- 语法: UPDATE 表名 set 字段1= 值1,字段2 = 值2... where 条件 
UPDATE stuinfo set gender = '';  -- 如果后面没有跟条件的话,则表示将表中所有的数据中的gender都改成了男
UPDATE stuinfo set gender = '' WHERE id = 3; --  将id为3的那条数据中的gender修改为“女”
UPDATE stuinfo set gender = '' WHERE age = 21 and name = '李四'; -- 将数据表中名字叫"李四"

 

 

 

删除 :

1 --  删除语句
2 -- 语法: DELETE FROM 表名 where 条件  
3 DELETE FROM stuinfo where id = 7; -- 删除id=7的数据
4 DELETE FROM stuinfo where id = 2 or id = 8; --删除id=2 和 id=8 的数据
5 DELETE FROM stuinfo where id in (4,5,10); -- 删除id为 4 5 10 的数据
6 DELETE FROM stuinfo WHERE gender ='' AND age = 20;  -- 通过多条件来删除数据  and 在这里表示并且的关系 
7 DELETE FROM stuinfo WHERE id > 10;   -- 还可以根据id的特性 删除id大于10的数据
8 DELETE FROM stuinfo        -- 不写条件 则会删除库中所有的数据

 

 

mySQL 常用函数:

COUNT()函数

SELECT count(*) FROM stuinfo; -- count用来统计所有的数据条数 会根据里面的参数来进行统计
SELECT count(id) FROM stuinfo; -- 根据id来统计具体的数据条数
SELECT count(phone) FROM stuinfo; -- 根据phone字段来统计具体的条数,如果数据为空则会忽略

 

 

MAX,   MIN,   AVG  函数

 

SELECT MAX(age) FROM stuinfo;     -- 查询年龄中的最大值
SELECT MIN(age) FROM stuinfo;    -- 查询年龄中的最小值
SELECT avg(age) FROM stuinfo;    -- 查询年龄中的平均值 average 平均值

 

 

order by 函数

1 SELECT * FROM stuinfo order by id;       -- order by是用来排序的,默认是以升序进行排序 asc就是升序排序
2 SELECT * FROM stuinfo ORDER BY id desc; 
3 SELECT * FROM stuinfo ORDER BY age desc;    -- desc是降序排列

 

 

limit  函数  : 主要用于分页场合

 1 SELECT * FROM stuinfo ORDER BY id;
 2 select * from stuinfo limit 3;  -- 取结果集中的前3条
 3 SELECT * FROM stuinfo  ORDER BY id limit 3;
 4 
 5 -- limit  n (索引) m (数量)   数据表中数据的索引默认也是从0开始的,索引只会对剩下的数据进行排序
 6 SELECT * FROM stuinfo ORDER BY id LIMIT 3, 3;
 7 
 8 -- 还可以这样来实现一个分页  limit count(数量)  offset index(索引);
 9 SELECT * FROM stuinfo ORDER BY id limit 3 offset 0; -- 从索引为0的位置向下查询3条
10 SELECT * FROM stuinfo ORDER BY id limit 3 offset 3; -- 从索引为3的位置向下查询3条
11 SELECT * FROM stuinfo ORDER BY id limit 3 offset 6; -- 从索引为6的位置向下查询3条
12 
13 -- 经过上面的规律可以总结如下:
14 int pageCount = 3 ; -- 每页显示的条数
15 int  pageSize = 1 ; -- 当前的页码  1 第1页  2 第2页 3 第3页
16 
17  SELECT * FROM stuinfo ORDER BY id LIMIT pageCount offset (pageSize - 1)* pageCount;

Node.js 连接 MySQL

安装驱动

在项目跟目录下安装 :  $ cnpm install mysql

连接数据库

let mysql = require('mysql');
let connection = mysql.createPool({
  host     : 'localhost', // 
  user     : 'root',
  password : '123456',
  database : 'test'
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

 

数据库连接参数说明:

 

数据库操作( CURD )

查询数据

var mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test' 
}); 
 
connection.connect();
 
var  sql = 'SELECT * FROM websites';
//
connection.query(sql,function (err, result) {
        if(err){
          console.log('[SELECT ERROR] - ',err.message);
          return;
        }
 
       console.log('--------------------------SELECT----------------------------');
       console.log(result);
       console.log('------------------------------------------------------------\n\n');  
});
 
connection.end();

插入数据

var mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test' 
}); 
 
connection.connect();
 
var  addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';
var  addSqlParams = ['菜鸟工具', 'https://c.runoob.com','23453', 'CN'];
//
connection.query(addSql,addSqlParams,function (err, result) {
        if(err){
         console.log('[INSERT ERROR] - ',err.message);
         return;
        }        
 
       console.log('--------------------------INSERT----------------------------');
       //console.log('INSERT ID:',result.insertId);        
       console.log('INSERT ID:',result);        
       console.log('-----------------------------------------------------------------\n\n');  
});
 
connection.end();

更新数据

var mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test' 
}); 
 
connection.connect();
 
var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?';
var modSqlParams = ['菜鸟移动站', 'https://m.runoob.com',6];
//
connection.query(modSql,modSqlParams,function (err, result) {
   if(err){
         console.log('[UPDATE ERROR] - ',err.message);
         return;
   }        
  console.log('--------------------------UPDATE----------------------------');
  console.log('UPDATE affectedRows',result.affectedRows);
  console.log('-----------------------------------------------------------------\n\n');
});
 
connection.end();

删除数据

ar mysql  = require('mysql');  
 
var connection = mysql.createConnection({     
  host     : 'localhost',       
  user     : 'root',              
  password : '123456',       
  port: '3306',                   
  database: 'test' 
}); 
 
connection.connect();
 
var delSql = 'DELETE FROM websites where id=6';
//
connection.query(delSql,function (err, result) {
        if(err){
          console.log('[DELETE ERROR] - ',err.message);
          return;
        }        
 
       console.log('--------------------------DELETE----------------------------');
       console.log('DELETE affectedRows',result.affectedRows);
       console.log('-----------------------------------------------------------------\n\n');  
});
 
connection.end();

 

posted @ 2020-12-02 21:07  南城北斋  阅读(792)  评论(0编辑  收藏  举报