52phm简介


专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。 网站正在不断建设和完善过程中,欢迎大家给予建议和参与社区建设

联系我们


投稿说明


52phm,专注于预测性维护知识学习和交流,欢迎广大从事预测性维护行业人员投稿,投稿请联系管理员(wx: www52phmcn),投稿内容可以是:

  • 学习笔记
  • 技术理论
  • 工程案例
  • 行业资讯

加入我们


官方公众号:52phm,专注预测性维护的学习平台

2022-03-31 21:56:59    博客笔记    519    当前专栏:数据库操作    分类:算法开发    本站官网:www.52phm.cn   

公众号 ...

  • 课题:SQL语句入门篇
  • 作者:小知
  • 日期:2019-02-26
  • 分享日期:2019-05-22
  • 问题描述:小知同学学习总结笔记,快速入门 SQL,基本语句函数。四个核心内容:插入、选择、更新和删除
  • 本篇是会持续更新的,发现新的东西就会更新上来
  • 小知同学下载的是 mysql 数据库编辑器,但操作跟使用 sql 操作是类似的,不影响使用SQL基本语句

SQL数据库基本操作

mysql -uroot -p            # 在终端打开 mysql 
create database 数据库名;   # 创建数据库
drop database 数据库名;     # 删除数据库
show databases;            # 查看已经创建的数据库
use 数据库名;               # 使用某个数据库

一、创建表格

# 语法
CREATE TABLE table_name(
       column1 datatype,
       column2 datatype,
       column3 datatype,
       .....
       columnN datatype,
       PRIMARY KEY( one or more columns )
    );
''' 创建一个表格 '''

mysql> create table lianxi( 
    ID int not null, 
    name varchar(20) not null,   字符类型
    age int not null,   整数类型
    sage datetime not null,  时间类型
    score decimal(18,1)  浮点数类型
    primary key (ID)  # 指定哪一列作为主键
);

Query OK, 0 rows affected (0.52 sec)

''' 查看创建的表格 '''
mysql第一种> SHOW CREATE TABLE 表名
mysql第二种> desc lianxi;
-----------------------------------------------
| Field | Type        | Null | Key | Default | Extra |
-----------------------------------------------
| ID    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | NO   |     | NULL    |       |
| age   | int(11)     | NO   |     | NULL    |       |
-----------------------------------------------
3 rows in set (0.01 sec)

''' 删除表格 '''
mysql> drop table lianxi;
Query OK, 0 rows affected (0.29 sec)
# 查看表格是否删除
mysql> desc lianxi;
ERROR 1146 (42S02): Table 'lxz.lianxi' doesn't exist

二、在表格中插入数据

INSERT INTO 有两种基本的语法

第一种语法格式如下
    INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) 
    VALUES (value1, value2, value3,...valueN);
这里 column1, column2,...columnN 是表中字段的名字你必须为新记录的这些字段填充数据

mysql> insert into person (id, name, age) values (2, '二狗', 33);

第二种语法格式如下
如果要为表中"所有的字段"都添加数据的话就不需要指定字段名了
不过这种情况下必须保证值的顺序按照表中字段出现的顺序排列 
此时 SQL INSERT INTO 语句的语法如下
    INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

mysql> insert into person values (3, '傻蛋', 22);

第三种语法格式如下
你还可以用 SELECT 语句将一个表中相应字段的数据填充到另一个表中
其语法形式如下
    INSERT INTO first_table_name [(column1, column2, ... columnN)] 
       SELECT column1, column2, ...columnN 
       FROM second_table_name
       [WHERE condition];

解决插入中文字段错误的语句  
ALTER TABLE 表名 MODIFY 列名 数据类型 CHARACTER SET utf8 非空约束  
例如ALTER TABLE student MODIFY name VARCHAR(20) CHARACTER SET utf8 NOT NULL   

三、选择表格中的数据

3.1 基本语法

SQL SELECT 语句用于从数据库的表中取回所需的数据并以表的形式返回
返回的表被称作结果集

SELECT 语句的基本语法如下
第一种
    SELECT column1, column2, columnN FROM table_name;
这里column1, column2...是你想要从表中取回的字段

第二种
如果要取回表中所有字段的话可以使用下面的语法
    SELECT * FROM table_name;


 person 中导入所有数据               person 中导入指定的列数据     
mysql> select * from person;          mysql> select id,age from person;
------------------                 ------------
| id   | name | age  |                  | id   | age  |
------------------                 ------------
|    1 | 大佬 |   21 |                  |    1 |   21 |
| 2153 | aaa  |   21 |                  | 2153 |   21 |
| 2154 | bbb  |   19 |                  | 2154 |   19 |
| 2155 | ccc  |   16 |                  | 2155 |   16 |
| 2156 | ddd  |   28 |                  | 2156 |   28 |
| 2157 | eee  |   37 |                  | 2157 |   37 |
| 2158 | aaa  |   21 |                  | 2158 |   21 |
| 2159 | bbb  |   19 |                  | 2159 |   19 |
| 2160 | ccc  |   16 |                  | 2160 |   16 |
| 2161 | ddd  |   28 |                  | 2161 |   28 |
| 2162 | eee  |   37 |                  | 2162 |   37 |
------------------                 ------------

3.2 操作符

3.2.1 算术符
mysql>select 10  20;
mysql>select 10 * 20;
mysql>select 10 / 5;
mysql>select 12 / 5;
3.2.2 比较符
mysql>select * from 表名 where 用哪一列作比较 > 30
例子
mysql> select * from person;
------------------
| id   | name | age  |
------------------
|    1 | 大佬 |   21 |
| 2153 | aaa  |   21 |
| 2154 | bbb  |   19 |
| 2155 | ccc  |   16 |
| 2156 | ddd  |   28 |
| 2157 | eee  |   37 |
| 2158 | aaa  |   21 |
| 2159 | bbb  |   19 |
| 2160 | ccc  |   16 |
| 2161 | ddd  |   28 |
| 2162 | eee  |   37 |
------------------

select * from person where age > 30
select * from person where age <= 30
select * from person where age != 30
select * from person where age !> 30 检查左边的操作数是否不大于右边的操作数是的话返回真
3.2.3 逻辑运算符
  • 运算符 描述

  • ALL运算符用于将一个值同另一个值集中所有的值进行比较。
  • AND运算符使得在 WHERE 子句中可以同时存在多个条件。
  • ANY运算符用于将一个值同条件所指定的列表中的任意值相比较。
  • BETWEEN 给定最小值和最大值,BETWEEN 运算符可以用于搜索区间内的值。
  • EXISTS运算符用于在表中搜索符合特定条件的行。
  • IN运算符用于将某个值同指定的一列字面值相比较。
  • LIKE运算符用于使用通配符对某个值和与其相似的值做出比较。
  • NOT操作符反转它所作用的操作符的意义。例如,NOT EXISTS、NOT BETWEEN、NOT IN 等。这是一个求反运算符。
  • OR运算符用于在 SQL 语句中连接多个条件。
  • IS NULL/ is not null用于将某个值同 NULL 作比较。
  • UNIQUE运算符检查指定表的所有行,以确定没有重复。
 person 中导入所有数据               person 中导入指定的列数据     
mysql> select * from person;          mysql> select id,age from person;
------------------                 ------------
| id   | name | age  |                  | id   | age  |
------------------                 ------------
|    1 | 大佬 |   21 |                  |    1 |   21 |
| 2153 | aaa  |   21 |                  | 2153 |   21 |
| 2154 | bbb  |   19 |                  | 2154 |   19 |
| 2155 | ccc  |   16 |                  | 2155 |   16 |
| 2156 | ddd  |   28 |                  | 2156 |   28 |
| 2157 | eee  |   37 |                  | 2157 |   37 |
| 2158 | aaa  |   21 |                  | 2158 |   21 |
| 2159 | bbb  |   19 |                  | 2159 |   19 |
| 2160 | ccc  |   16 |                  | 2160 |   16 |
| 2161 | ddd  |   28 |                  | 2161 |   28 |
| 2162 | eee  |   37 |                  | 2162 |   37 |
------------------                 ------------

mysql> select * from person  where id > 2156 and age >= 25;
mysql> select * from person where id > 2158 or age > 20;
mysql> select * from person where age is null;
mysql> select * from person where age is not null;
mysql> select * from person where name like 'aa%';  # 返回 % 之前与 aa 相似的名字
mysql> select * from person where age in (21, 28);  # 返回 age 中有 21、28 的数据
mysql> select * from person where age between 25 and 40;
mysql> select age from person where exists (select age from person where id > 2160);
# 输出左边的年龄全部大于右边的年龄的值
mysql> select * from person where age >  all (select age from person where id = 2161);
# 输出左边的年龄大于右边任意一个的年龄的值
mysql> select * from person where age >  any (select age from person where id > 2160);
3.2.4 表达式
 SELECT 语句的基本语法

    SELECT column1, column2, columnN 
    FROM table_name 
    WHERE [CONDITION|EXPRESSION];

''' 1、布尔表达式 '''
SELECT column1, column2, columnN 
    FROM table_name 
    WHERE 单值匹配表达式;

mysql> select * from person where age = 21;  

''' 2、数值表达式 '''
SELECT numerical_expression as  OPERATION_NAME
    [FROM table_name
    WHERE CONDITION] ;

其中
numerical_expression 为数学运算或者任何公式
SQL 有一系列的内建函数例如 avg()sum()count() 
这些函数用于在表上或者表中的特定列上执行聚合数据运算。)
OPERATION_NAME 为自定义名字

mysql> select (12 * 3) as lxz;
mysql> select count(*) as myname from person;  # 统计样本数

''' 3、时间表达式 '''
# 返回当前系统的日期和时间
mysql> select current_timestamp;

四、更新数据

SQL UPDATE 语句用于修改表中现有的记录

你可以在 UPDATE 语句中使用 WHERE 子句来修改选定的记录否则所有记录都会收到影响

语法
 WHERE 子句的 UPDATE 语句的基本语法如下

    UPDATE table_name
    SET column1 = value1, column2 = value2...., columnN = valueN
    WHERE [condition];
WHERE 子句中你可以将 N 个条件用 AND 或者 OR 连接在一起
''' 更新前 '''
mysql> select * from person;
------------------
| id   | name | age  |
------------------
|    1 | 大佬 |   21 |
|    2 | 二狗 |   33 |
|    3 | 傻蛋 |   22 |
------------------

''' 更新 id = 2 这一行的 name 更新为 'lxz' '''
mysql> update person  set name = 'lxz' where id = 2;

''' 更新后 '''
mysql> select * from person;
------------------
| id   | name | age  |
------------------
|    1 | 大佬 |   21 |
|    2 | lxz  |   33 |
|    3 | 傻蛋 |   22 |
------------------
如果你想要修改 person 表中所有记录的 name  age 字段
只要把 WHERE 子句去掉即可
此时UPDATE 语句如下所示

mysql> UPDATE CUSTOMERS SET name = '大佬', age = '22';

五、删除表格中的数据

SQL DELETE 语句用于删除表中现有的记录

你可以在 DELETE 语句中使用 WHERE 子句来删除选定的记录
否则所有的记录都会被删除

语法
 WHERE 子句的 DELETE 语句的基本语法如下

    DELETE FROM table_name
    WHERE [condition];

# 将从 person 中删除 id 为 2 的客户/记录
mysql> delete from person where id = 2;
# 删除 person 表中所有的记录
mysql> delete from person;

六、SQL函数

1、count 统计数量函数

  • COUNT函数是 SQL 中最简单的函数了,
  • 对于统计由 SELECT 语句返回的记录非常有用。
mysql> select * from lianxi;
---------------------
| id | date | name | age |
---------------------
|  1 | 2015 | aaa  |  20 |
|  2 | 2016 | bbb  |  18 |
|  3 | 2020 | ccc  |  26 |
|  4 | 2018 | bbb  |  28 |
|  5 | 2019 | eee  |  35 |
---------------------
5 rows in set (0.00 sec)

''' 统计上面 lianxi 表中记录的总数 '''
mysql> select count(*) from lianxi;
----------
| count(*) |
----------
|        5 |
----------

''' 只想统计名字为 bbb 的数目 '''
mysql> select count(*) from lianxi where name = 'bbb';
----------
| count(*) |
----------
|        2 |
----------

2、最值函数

  • MAX函数用于找出记录集中具有最大值的记录。
  • MIN函数用于找出记录集中具有最小值的记录。
# -------------------------------
# 第一种
mysql> select max(age) from lianxi;  # 返回 age 列的最大值
----------
| max(age) |
----------
|       35 |
----------

mysql> select min(age) from lianxi;  # 返回 age 列的最小值
----------
| min(age) |
----------
|       18 |
----------

# ------------------------------
# 第二种,通过 group by 聚合子句,也可以使用 min
使用 GROUP BY 子句为每个名字name找出 age 的最大值
mysql> select id, name, max(age) from lianxi group by name;
--------------------
| id | name | max(age) |
--------------------
|  1 | aaa  |       20 |
|  2 | bbb  |       28 |
|  3 | ccc  |       26 |
|  5 | eee  |       35 |
--------------------

# -----------------------------
# 第三种,返回最大最小的年龄
mysql> select min(age) least, max(age) max from lianxi;
-------------
| least | max  |
-------------
|    18 |   35 |
-------------

3、avg 平均值函数

  • AVG函数用于找出表中记录在某字段处的平均值
# -----------------------------------
# 1、求出平均年龄
mysql> select avg(age) from lianxi;
----------
| avg(age) |
----------
|  25.4000 |
----------

# ------------------------------------
# 2、通过 group by 子句聚合,为每个名字(name)找出 age 的平均值
mysql> select id, name, avg(age) from lianxi group by name;
--------------------
| id | name | avg(age) |
--------------------
|  1 | aaa  |  20.0000 |
|  2 | bbb  |  23.0000 |
|  3 | ccc  |  26.0000 |
|  5 | eee  |  35.0000 |
--------------------

# 表格 student、sc 之间连接
select Student.SId, Student.Sname, r.ss from Student right join(
      select SId, AVG(score) AS ss from sc
      GROUP BY SId
      HAVING AVG(score)> 60
)r on Student.SId = r.SId;

4、sum 求和函数

  • SUM函数用于找出表中记录在某字段处的总和
mysql> select sum(age) from lianxi;
# 通过 group by 子句聚合,为每个名字(name)找出 age 的总和
mysql> select id, name, sum(age) from lianxi group by name;

5、sqrt 平方根函数

  • SQRT 函数用于计算得出任何数值的平方根
mysql> select sqrt(16);
mysql> select sqrt(age) from lianxi;
mysql> select id, name, sqrt(age) from lianxi group by name;

6、rand 随机函数

  • SQL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数:
mysql> select rand(), rand(), rand();

''' 
当以某个整数值作为参数来调用的时候,
RAND() 会将该值作为随机数发生器的种子。
对于每一个给定的种子,
RAND() 函数都会产生一列可以复现的数字 
'''
mysql> select rand(1), rand(), rand();

# 使用 ORDER BY RAND() 来对一组记录进行随机化排列
mysql> select * from lianxi order by rand();
---------------------
| id | date | name | age |
---------------------
|  3 | 2020 | ccc  |  26 |
|  4 | 2018 | bbb  |  28 |
|  2 | 2016 | bbb  |  18 |
|  1 | 2015 | aaa  |  20 |
|  5 | 2019 | eee  |  35 |
---------------------

7、concat 连接函数

  • CONCAT 函数用于将两个字符串连接为一个字符串
mysql> select concat('i', 'am', 'lxz');
# 将 id, date, name, age 连接起来
mysql> select concat(id, date, name, age) from lianxi;

参考文献

学习教程:http://wiki.jikexueyuan.com/project/sql/overview.html

免责声明


[推荐] window MySQL下载与安装

2021-12-15 22:58:54    互联网    1005    分类:开发环境    专栏:下载安装   


[推荐] Linux安装MySQL可视化工具Workbench

2021-12-17 18:09:55    互联网    831    分类:开发环境    专栏:下载安装   


[推荐] 时间序列分类算法之LPS论文翻译

2021-12-21 15:50:53    互联网    494    分类:论文速递    专栏:时间序列预测   



转发此文章到社区


关注公众号进群

让志同道合读者学习交流



14种分类算法进行文本分类实战

本篇文本分类实战训练是以完整的文本分类项目流程来写的,比较适合进阶和提高 《获取数据》——《数据分析和处理》——《特征工程与选择》——《算法模型》——《性能评估/参数调优》,让读者全貌了解文本分类流程,建议阅读收藏~

2021-12-04 12:13:55    博客笔记    2139    分类:算法开发    专栏:未分组   


可穿戴传感器健康老年人动作识别

可穿戴传感器健康老年人动作识别

2021-12-04 23:19:10    博客笔记    528    分类:边缘感知    专栏:动作识别   


智能故障诊断方法总结

1.故障诊断方法可分为三个步骤:信号处理、特征提取、模式分类。2.信号处理方法通常包括:时域处理(提取振动信号的相关指标);频域处理(包络谱分析,频谱分析);时频域分析(小波分析,傅里叶变换)3.故障诊断方法:专家系统故障诊断法,模糊故障诊断、灰色关联度故障诊断、神经网络故障诊断、数据融合故障诊断。...

2021-12-09 11:32:32    互联网    1893    分类:算法开发    专栏:故障诊断   


基于Python的频谱泄露分析

1、频谱泄露  对于频率为fs的正弦序列,它的频谱应该只是在fs处有离散谱。但是,在利用DFT求它的频谱时,对时域做了截断,结果使信号的频谱不只是在fs处有离散谱,而是在以fs为中心的频带范围内都有谱线出现,它们可以理解为是从fs频率上“泄漏”出去的,这种现象称 为频谱“泄漏”。2、代码分析如果我们波形不能在fft_size个取样中形成整数个周期的话会怎样呢?将上篇博客中的采样对象...

2021-12-14 14:06:09    互联网    782    分类:算法开发    专栏:数字信号处理   


Linux 安装最新版本python3

新安装了Linux系统(CentOS 6),发现已安装的python版本是2.6. 在网上搜索研究之后总结了一下怎么在保留python2的同时安装最新版的python3。1. 查看 Python 的版本号:命令行输入以下命令就可以查看python版本:#python -V 或# python --version2. 下载3.x新版本可以访问python的官方网站查看最新的python版本以及下载...

2021-12-16 17:35:07    互联网    884    分类:开发环境    专栏:下载安装   


风电机组状态监测系统(CMS)

1、前言 风能作为一种清洁的永续能源,逐渐成为许多国家可持续发展战略的重要组成部分。我国的风能开发更是飞速发展,已经成为全球最大的风电市场。2015年,中国风电装机量再创新高。全国(除台湾地区外)新增装机容量3075.3万千瓦,同比增长32.6%,新增安装风电机组16740台;累计装机容量达到14536.2万千瓦,同比增长26.8%,累计安装风电机组92981台。

2021-12-19 15:22:38    互联网    1153    分类:算法开发    专栏:风电机组   


时间序列预测算法总结

时间序列算法time series data mining 主要包括decompose(分析数据的各个成分,例如趋势,周期性),prediction(预测未来的值),classification(对有序数据序列的feature提取与分类),clustering(相似数列聚类)等。时间序列的预测常用的思路:1、计算平均值2、exponential smoothing指数衰减...

2021-12-25 19:42:49    互联网    471    分类:算法开发    专栏:时间序列预测   


基于LSTM的股票时间序列预测(附数据集和代码)

LSTM数据集实战如果对LSTM原理不懂得小伙伴可以看博主下一篇博客,因为博主水平有限,结合其他文章尽量把原理写的清楚些。数据集首先附上数据集链接:https://pan.baidu.com/s/1AKsz-ohmYHr9mBEEh76P5g提取码:6owv这个数据集是关于股票的,里面有日期,开盘价等信息。既然是时间序列预测,我们最关心的是预测值在时间维度上的走势如何,那我们只要最后一列volume和第一列date这两列就好了。实战先是导入相关包,一些常见的包就不详细说了,我们需要的Se

2021-12-25 19:48:44    互联网    842    分类:算法开发    专栏:时间序列预测   


keras实现LSTM单变量时间序列预测——国际航班乘客预测

https://blog.csdn.net/zyxhangiian123456789/article/details/87458140对于较为简单的时间序列预测问题,可以使用Exponential Smoothing和ARIMA等传统模型非常方便地求解。然而,对于复杂的时间序列预测问题,LSTM不失为一种很好的选择。因此,本文旨在探讨如何利用LSTM神经网络求解时间序列预测问题。首先,需要明白时...

2021-12-25 19:50:56    互联网    443    分类:算法开发    专栏:时间序列预测   


PIL图像预处理实操

1 PIL基本操作:主要是为了介绍 PIL 打开、展示和保存图像的基本运用。 2 图像处理:这个主要是为了对原始图像进行再处理,从而使图像符合我们的需求, 通常这里的处理情况会影响到模型训练的精度和准。 3 图像向量化:由于图片是非结构化数据,计算机不能直接识别处理, 因此需要向量化处理,从而转换成结构化数据 4 图像识别分类实战:主要是以步骤性来讲述,方便掌握

2022-03-10 16:18:19    博客笔记    828    分类:算法开发    专栏:图像预处理   


  • 52phm公告

  • 在这里,可以学习接触到工业互联网技术知识以及落地案例,其中涵盖工业数据集、工业标准库、机理模型、设备知识、机器学习、 深度学习、特征工程、振动分析、工业视觉、边缘硬件及传感器等技术知识!


数据库操作   
  • 关于站长


  •         从事设备故障预测与健康管理行业多年的PHM算法工程师(机器医生)、国际振动分析师, 实践、研发和交付的项目涉及“化工、工业机器人、风电机组、钢铁、核电、机床、机器视觉”等领域。专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。


当前文章目录


52phm社区

52phm社区,专注预测性维护的学习平台!

Saas体验

+ 工业demo学习系统

技术博客

+ 博客首页    + 算法开发    + 边缘感知   

+ 设备机理    + 开发环境

+ 论文速递   

友情链接

+ 在码圈

联系我

Copyright© 2021 52phm社区

京ICP备2021029973号-1