Sql grammar collections

本文介绍了SQL的基础操作,包括获取不重复记录、使用逻辑运算符、利用IN关键字查询、BETWEEN关键字的使用、LIKE关键字匹配、排序、聚合函数的使用、HAVING子句的应用、别名设置、表连接、子查询、UNION与UNION ALL的区别、INTERSECT及MINUS的使用方法,同时还讲解了如何创建表、视图、索引,修改表结构,定义主键、外键,以及删除表和截断表等内容。
1.Get the unrepeated record.
SELECT DISTINCT store_name FROM Store_Information

2.The usage of 'or' and 'and'.
SELECT store_name FROM Store_Information WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)

3.The usage of 'in'.
SELECT * FROM Store_Information WHERE store_name IN('LosAngeles', 'San Diego')

4.Key word 'between'.
SELECT * FROM Store_Information WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999'

5.How to use 'like' key word
SELECT * FROM Store_Information WHERE store_name LIKE '%AN%'

6.'Order by'
SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC

7.Function usage such as (avg,count,max,min,sum...)
[color=red]USAGE :SELECT FUNCTION_NAME (FIELD_NAME) FROM TABLE_NAME[/color]
example:SELECT SUM(Sales) FROM Store_Information
To figure out how many unrepeated records as follows:
SELECT COUNT(DISTINCT store_name) FROM Store_Information

8.Having cluase/key word
The Having cluase usually exist at a Sql statement tail.The group by cluase is unrequired.
SELECT FIELD_NAME_1 ,SUM(FIELD_NAME_2) FROM TABLE_NAME GROUP BY FIELD_NAME_1 HAVING (function condition)

9.alias (set a alias for a field)
SELECT A1.store_name Store, SUM(A1.Sales) "Total Sales" FROM Store_Information A1 GROUP BY A1.store_name

Store_Information TABLE
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Geography TABLE
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

10.Table join
If we want to know every region (region_name) sales .The table Geography show us shops in every region.The table Store_Information show us sales every shop.So we can join the two different tables ,we can use the same field 'store_name'

SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name

11.Subquery
SELECT SUM(Sales) FROM Store_Information WHERE Store_name IN(SELECT store_name FROM Geography WHERE region_name = 'West')

12.The union instruction aid is merged the two sql results.(Similar the join key word)But union key word require the two table have same field. and the result will only show us different records.

Internet_Sales TABLE
Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

RESULTS:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999

13.UNION ALL
(No matter the resluts are repeated or unrepeated)
SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales

RESULTS:

Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-08-1999
Jan-07-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999

14.INTERSECT (different from the union and union all .The records must be exist in the two table)

SELECT Date FROM Store_Information
INTERSECT
SELECT Date FROM Internet_Sales

RESULTS:
Date
Jan-07-1999


15.MINUS are used in two SQL statements ,Find the results of first statement ,if these records are exist at the second statement the records will not put to the final results and if the record of second statement are not exist at first statement the records will not put to the final results either.

16.CREATE TABLE
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

17.CREATE VIEW
CREATE VIEW V_REGION_SALES
AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

18.CREATE INDEX
CREATE INDEX IDX_CUSTOMER_LOCATION
on CUSTOMER (City, Country)

19.ALTER TABLE
a)ALTER table customer add Gender char(1)
b)ALTER table customer change Address Addr char(50)
c)ALTER table customer modify Addr char(30)
d)ALTER table customer drop Gender

20.primary key (depends on different Database)
MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));

Oracle:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

update statement :
MySQL:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

Oracle:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

SQL Server:
ALTER TABLE Customer ADD PRIMARY KEY (SID);


21.Reference key.
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));

Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);

SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);

update statement:
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);

Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);

SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);

22.DROP TABLE
DROP TABLE customer.

23.TRUNCATE TABLE
TRUNCATE TABLE customer.

24.单引号的处理 MySQL里可以用双引号包起字符串,Oracle里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。

25.字符串的模糊比较 MySQL里用 字段名 like Oracle里也可以用 字段名 like 但这种方法不能使用索引, 速度不快用字符串比较函数 instr(字段名,字符串)>0 会得到更精确的查找结果 8. 程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:
SQL> select instr('yuechaotianyuechao','ao') position from dual;

POSITION
----------
6

从字符串'yuechaotianyuechao'的第一个位置开始,向后查找第一个出现子串'ao'出现的位置。

其实instr共有4个参数,格式为“instr(string, substring, position, occurrence)”。可实现子串的如下搜索:
1.从指定位置开始搜索子串
2.指定搜索第几次出现的子串的位置
3.从后向前搜索

--1.从第7个字符开始搜索
SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;

POSITION
----------
17

--2.从第1个字符开始,搜索第2次出现子串的位置
SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;

POSITION
----------
17

--3.从倒数第1个字符开始,搜索第1次出现子串的位置
SQL> select instr('yuechaotianyuechao','ao', -1, 1) position from dual;

POSITION
----------
17

--3.从倒数第1个字符开始,搜索第2次出现子串的位置
SQL> select instr('yuechaotianyuechao','ao', -1, 2) position from dual;

POSITION
----------
6
@Override public ShopAmountVo getBeneficenceAmount(Long userId, Integer days) { // 获取管理员用户下的门店信息 List<CmsBeneficenceConfig> beneficenceConfigList = getBeneficenceConfigList(userId); if (beneficenceConfigList != null && !beneficenceConfigList.isEmpty()) { List<ErpDonationRecord> erpDonationRecordList = getBeneficenceRegionList(beneficenceConfigList, days); if (erpDonationRecordList != null) { List<ShopAmount> list = erpDonationRecordList.stream().collect(Collectors.groupingBy( ErpDonationRecord::getShopId, Collectors.reducing( BigDecimal.ZERO, record -> record.getAmount() == null ? BigDecimal.ZERO : record.getAmount(), BigDecimal::add ) )).entrySet().stream().map(i -> ShopAmount.builder() .shopId(i.getKey()) .amount(i.getValue()) .build() ).toList(); return ShopAmountVo.builder() .totalAmount(list.stream().map(ShopAmount::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO)) .shopAmountList(list) .build(); } } return null; } /** * 获取管理员用户列表的所管理的门店信息 * @return 门店信息 */ @DS("master") private List<CmsBeneficenceConfig> getBeneficenceConfigList(Long userId) { LambdaQueryWrapper<CmsBeneficenceConfig> query = new LambdaQueryWrapper<>(); query.eq(CmsBeneficenceConfig::getUserId, userId); return cmsBeneficenceConfigMapper.selectList(query); } /** * 获取门店的捐款记录 * @return 捐款记录 */ @DS("wanyu-erp") private List<ErpDonationRecord> getBeneficenceRegionList(List<CmsBeneficenceConfig> beneficenceConfigList, Integer days) { LambdaQueryWrapper<ErpDonationRecord> query = new LambdaQueryWrapper<>(); query.in(ErpDonationRecord::getShopId, beneficenceConfigList.stream().map(CmsBeneficenceConfig::getShopId).collect(Collectors.toSet())); query.between(ErpDonationRecord::getCreateTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), - days)), DateUtil.endOfDay(new Date())); return erpDonationRecordMapper.selectList(query); } 报错Table 'wanyu-cms.erp_donation_record' doesn't exist\n; bad SQL grammar []",
10-12
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
基于粒子群算法优化Kmeans聚类的居民用电行为分析研究(Matlb代码实现)内容概要:本文围绕基于粒子群算法(PSO)优化Kmeans聚类的居民用电行为分析展开研究,提出了一种结合智能优化算法与传统聚类方法的技术路径。通过使用粒子群算法优化Kmeans聚类的初始聚类中心,有效克服了传统Kmeans算法易陷入局部最优、对初始值敏感的问题,提升了聚类的稳定性和准确性。研究利用Matlab实现了该算法,并应用于居民用电数据的行为模式识别与分类,有助于精细化电力需求管理、用户画像构建及个性化用电服务设计。文档还提及相关应用场景如负荷预测、电力系统优化等,并提供了配套代码资源。; 适合人群:具备一定Matlab编程基础,从事电力系统、智能优化算法、数据分析等相关领域的研究人员或工程技术人员,尤其适合研究生及科研人员。; 使用场景及目标:①用于居民用电行为的高效聚类分析,挖掘典型用电模式;②提升Kmeans聚类算法的性能,避免局部最优问题;③为电力公司开展需求响应、负荷预测和用户分群管理提供技术支持;④作为智能优化算法与机器学习结合应用的教学与科研案例。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解PSO优化Kmeans的核心机制,关注参数设置对聚类效果的影响,并尝试将其应用于其他相似的数据聚类问题中,以加深理解和拓展应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值