继学习记录1的使用练习
注意⚠️
本页的内容所有都基于练习与学习资料整理,有可能有错,欢迎指出。谢谢
查询所有的数据
-- 查询指定的字段
select ip,host_name,os_type where hosts_info;
-- 查询特定规则的记录
select id,os_type,host_name from hosts_info where id>15 and os_type like '%o%' order by id desc;
-- 快速查看表机构
describe hosts_info;
-- 完整查看表结构
show full columns from hosts_info;
-- 条件查询where
select * from hosts_info where os_type in ('IOS','Kali','Arch');
条件查询
查看表结构的2种方式
条件查询 where
in
between
like
% 与 _ 的使用
AND
OR
LIMIT
限制查询结果的数量
Group BY
having
having 只能在Group by 中使用,而且
查询去重
拓展:
1、Mysql相关函数
当然,以下是一些不太常见但仍然有用的 MySQL 聚合函数,以收集为主,做数后再验证:
- GROUP_CONCAT():用于将一列的值合并为一个字符串,并可以使用
SEPARATOR
指定分隔符。
SELECT GROUP_CONCAT(column_name SEPARATOR ', ') FROM table_name;
- STD():计算总体标准差。
SELECT STD(column_name) FROM table_name;
- STDDEV():计算总体标准差的另一种方式。
SELECT STDDEV(column_name) FROM table_name;
- VAR_POP():计算总体方差。
SELECT VAR_POP(column_name) FROM table_name;
- VAR_SAMP():计算样本方差。
SELECT VAR_SAMP(column_name) FROM table_name;
- BIT_AND():计算某列中所有值的按位与。
SELECT BIT_AND(column_name) FROM table_name;
- BIT_OR():计算某列中所有值的按位或。
SELECT BIT_OR(column_name) FROM table_name;
- BIT_XOR():计算某列中所有值的按位异或。
SELECT BIT_XOR(column_name) FROM table_name;
- JSON_ARRAYAGG():将查询的结果作为 JSON 数组聚合。
SELECT JSON_ARRAYAGG(column_name) FROM table_name;
- JSON_OBJECTAGG():将查询的结果作为 JSON 对象聚合。
SELECT JSON_OBJECTAGG(key_column, value_column) FROM table_name;
2、截取函数/系统函数
当涉及到截取函数和系统函数时,不同的数据库系统通常具有不同的函数和语法
截取函数 (Substring Functions)
截取函数是用于从文本、字符串或日期数据中提取部分内容的函数。它们在各种数据库系统中都有类似的功能,尽管具体的函数名称和语法可能会有所不同。下面我将介绍一些常见的截取函数以及它们在不同数据库系统中的使用方法。
1. LEFT() / SUBSTRING()
- LEFT(string, length): 从字符串的开头截取指定长度的字符。
- SUBSTRING(string, start, length): 从字符串的指定位置开始截取指定长度的字符。
在不同数据库中的用法:
- MySQL:
SELECT LEFT(column_name, 3) FROM table_name;
SELECT SUBSTRING(column_name, 2, 5) FROM table_name;
- Oracle:
SELECT SUBSTR(column_name, 1, 3) FROM table_name;
SELECT SUBSTR(column_name, 2, 5) FROM table_name;
- SQL Server:
SELECT LEFT(column_name, 3) FROM table_name;
SELECT SUBSTRING(column_name, 2, 5) FROM table_name;
- PostgreSQL:
SELECT LEFT(column_name, 3) FROM table_name;
SELECT SUBSTRING(column_name FROM 2 FOR 5) FROM table_name;
2. RIGHT()
- RIGHT(string, length): 从字符串的末尾截取指定长度的字符。
在不同数据库中的用法:
- MySQL:
SELECT RIGHT(column_name, 3) FROM table_name;
- Oracle:
SELECT SUBSTR(column_name, -3) FROM table_name;
- SQL Server:
SELECT RIGHT(column_name, 3) FROM table_name;
- PostgreSQL:
SELECT RIGHT(column_name, 3) FROM table_name;
3. MID() / SUBSTR()
- MID(string, start, length): 从字符串的指定位置开始截取指定长度的字符(通常在Access数据库中使用)。
- SUBSTR(string, start, length): 从字符串的指定位置开始截取指定长度的字符。
在不同数据库中的用法:
- MySQL:
SELECT SUBSTR(column_name, 2, 5) FROM table_name;
- Oracle:
SELECT SUBSTR(column_name, 2, 5) FROM table_name;
- SQL Server:
SELECT SUBSTRING(column_name, 2, 5) FROM table_name;
- PostgreSQL:
SELECT SUBSTRING(column_name FROM 2 FOR 5) FROM table_name;
4. DATE_PART() / EXTRACT()
- DATE_PART(unit, date): 从日期中提取指定单元(如年、月、日等)的值。
- EXTRACT(unit FROM date): 从日期中提取指定单元的值。
在不同数据库中的用法:
- MySQL:
SELECT EXTRACT(YEAR FROM date_column) FROM table_name;
SELECT EXTRACT(MONTH FROM date_column) FROM table_name;
- Oracle:
SELECT EXTRACT(YEAR FROM date_column) FROM table_name;
SELECT EXTRACT(MONTH FROM date_column) FROM table_name;
- SQL Server:
SELECT DATEPART(YEAR, date_column) FROM table_name;
SELECT DATEPART(MONTH, date_column) FROM table_name;
- PostgreSQL:
SELECT EXTRACT(YEAR FROM date_column) FROM table_name;
SELECT EXTRACT(MONTH FROM date_column) FROM table_name;
系统函数 (System Functions)
数据库中的系统函数是内置函数,用于执行各种任务,如处理日期和时间、字符串、数值、逻辑等。这些函数在各种数据库管理系统(如MySQL、Oracle、SQL Server、PostgreSQL、Db2等)中都有类似的功能,尽管具体的函数名称和语法可能会有所不同。以下是一些常见的数据库系统函数以及它们在不同数据库系统中的使用方法。
1. 日期和时间函数
CURDATE() / CURRENT_DATE:获取当前日期。
- MySQL:
SELECT CURDATE();
- Oracle:
SELECT SYSDATE FROM DUAL;
- SQL Server:
SELECT GETDATE();
- PostgreSQL:
SELECT CURRENT_DATE;
NOW() / CURRENT_TIMESTAMP / SYSTIMESTAMP:获取当前日期和时间。
- MySQL:
SELECT NOW();
- Oracle:
SELECT CURRENT_TIMESTAMP FROM DUAL;
- SQL Server:
SELECT CURRENT_TIMESTAMP;
- PostgreSQL:
SELECT CURRENT_TIMESTAMP;
DATE_ADD() / DATEADD():在日期上执行加法操作。
- MySQL:
SELECT DATE_ADD(date_column, INTERVAL 7 DAY);
- SQL Server:
SELECT DATEADD(DAY, 7, date_column);
DATEDIFF() / DATE_DIFF():计算日期之间的差值。
- MySQL:
SELECT DATEDIFF(end_date, start_date);
- SQL Server:
SELECT DATEDIFF(DAY, start_date, end_date);
2. 字符串函数
CONCAT() / CONCATENATE():连接字符串。
- MySQL:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM table_name;
- SQL Server:
SELECT first_name + ' ' + last_name AS full_name FROM table_name;
LENGTH() / LEN():获取字符串的长度。
- MySQL:
SELECT LENGTH(column_name) FROM table_name;
- SQL Server:
SELECT LEN(column_name) FROM table_name;
UPPER() / UPPER():将字符串转换为大写。
- MySQL:
SELECT UPPER(column_name) FROM table_name;
- SQL Server:
SELECT UPPER(column_name) FROM table_name;
3. 数值函数
ROUND() / ROUND():四舍五入数值。
- MySQL:
SELECT ROUND(number, 2) FROM table_name;
- SQL Server:
SELECT ROUND(number, 2) FROM table_name;
ABS() / ABS():返回数的绝对值。
- MySQL:
SELECT ABS(number) FROM table_name;
- SQL Server:
SELECT ABS(number) FROM table_name;
4. 逻辑函数
IF() / IIF():条件语句,返回不同的值基于条件。
- MySQL:
SELECT IF(condition, value_if_true, value_if_false) FROM table_name;
- SQL Server:
SELECT IIF(condition, value_if_true, value_if_false) FROM table_name;
3.各类型数据库的聚合函数整理
以Mysql的函数功能说明页为主导整理
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html
具体有可能有错,如果发现请指出,毕竟没有全都测试一次。
-- 1.COUNT():计算匹配条件的行数。
-- MySQL:
SELECT COUNT(column_name) FROM table_name;
-- Oracle:
SELECT COUNT(column_name) FROM table_name;
-- SQL Server:
SELECT COUNT(column_name) FROM table_name;
-- Db2:
SELECT COUNT(column_name) FROM table_name;
-- 2.SUM():计算某列的总和。
-- MySQL:
SELECT SUM(column_name) FROM table_name;
-- Oracle:
SELECT SUM(column_name) FROM table_name;
-- SQL Server:
SELECT SUM(column_name) FROM table_name;
-- Db2:
SELECT SUM(column_name) FROM table_name;
-- 3.AVG():计算某列的平均值。
-- MySQL:
SELECT AVG(column_name) FROM table_name;
-- Oracle:
SELECT AVG(column_name) FROM table_name;
-- SQL Server:
SELECT AVG(column_name) FROM table_name;
-- Db2:
SELECT AVG(column_name) FROM table_name;
-- 4.MIN():找出某列的最小值。
-- MySQL:
SELECT MIN(column_name) FROM table_name;
-- Oracle:
SELECT MIN(column_name) FROM table_name;
-- SQL Server:
SELECT MIN(column_name) FROM table_name;
-- Db2:
SELECT MIN(column_name) FROM table_name;
-- 5.MAX():找出某列的最大值。
-- MySQL:
SELECT MAX(column_name) FROM table_name;
-- Oracle:
SELECT MAX(column_name) FROM table_name;
-- SQL Server:
SELECT MAX(column_name) FROM table_name;
-- Db2:
SELECT MAX(column_name) FROM table_name;
-- 6.STDEV():计算总体标准差。
-- MySQL:
无对应函数
-- Oracle:
SELECT STDDEV(column_name) FROM table_name;
-- SQL Server:
SELECT STDEV(column_name) FROM table_name;
-- Db2:
SELECT STDDEV(column_name) FROM table_name;
-- 7.VAR():计算总体方差。
-- MySQL:
无对应函数
-- Oracle:
SELECT VARIANCE(column_name) FROM table_name;
-- SQL Server:
无对应函数
-- Db2:
SELECT VARIANCE(column_name) FROM table_name;
-- 8.CHECKSUM_AGG():计算表达式的检验和。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT CHECKSUM_AGG(expression) FROM table_name;
-- Db2:
无对应函数
-- 9.STRING_AGG():将一列的值合并为一个字符串。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT STRING_AGG(column_name, ', ') WITHIN GROUP (ORDER BY column_name) FROM table_name;
-- Db2:
无对应函数
-- 10.BIT_AND():计算某列中所有值的按位与。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT BIT_AND(column_name) FROM table_name;
-- Db2:
无对应函数
-- 11.BIT_OR():计算某列中所有值的按位或。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT BIT_OR(column_name) FROM table_name;
-- Db2:
无对应函数
-- 12.BIT_XOR():计算某列中所有值的按位异或。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT BIT_XOR(column_name) FROM table_name;
-- Db2:
无对应函数
-- 13.JSON_AGG():将查询的结果作为 JSON 数组聚合。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT JSON_AGG(column_name) FROM table_name;
-- Db2:
无对应函数
-- 14JSON_OBJECT_AGG():将查询的结果作为 JSON 对象聚合。
-- MySQL:
无对应函数
-- Oracle:
无对应函数
-- SQL Server:
SELECT JSON_OBJECT_AGG(key_column, value_column) FROM table_name;
-- Db2:
无对应函数