SQL技巧:数据导入导出与转换操作
103 浏览量
更新于2024-08-28
收藏 106KB PDF 举报
本文介绍了在SQL和SQL SERVER中处理数据导入导出及转换的一些巧妙方法,同时也涉及了与ACCESS和EXCEL的数据交互。以下是一些关键的SQL操作示例:
1. 复制表结构:
当你需要创建一个新表,只复制原表的结构而不包含数据时,可以使用如下语句:
```sql
SELECT * INTO b FROM a WHERE 1<>1
```
这里`a`是源表,`b`是新表。`WHERE 1<>1`是一个无效的条件,所以不会选取任何数据,但会创建新表的结构。
2. 拷贝表数据:
若要将数据从一个表复制到另一个已有相同结构的表中,可以执行:
```sql
INSERT INTO b (a, b, c) SELECT d, e, f FROM b
```
这里`a`, `b`, `c`是目标表`b`的字段,`d`, `e`, `f`是源表的相应字段。
3. 显示多表信息:
若要展示一篇文章及其提交人和最后的回复时间,可以使用子查询:
```sql
SELECT a.title, a.username, b.adddate
FROM table a,
(SELECT MAX(adddate) adddate FROM table WHERE table.title = a.title) b
```
子查询找到每篇文章的最后回复时间。
4. 外连接查询:
使用LEFT OUTER JOIN进行外连接查询,例如:
```sql
SELECT a.a, a.b, a.c, b.c, b.d, b.f
FROM a LEFT OUT JOIN b ON a.a = b.c
```
这会返回所有来自`a`表的记录,即使在`b`表中没有匹配项。
5. 时间条件查询:
检查日程安排是否在当前时间前五分钟内,如需提醒:
```sql
SELECT * FROM 日程安排
WHERE DATEDIFF('minute', f开始时间, GETDATE()) > 5
```
6. 删除关联表中的孤儿记录:
删除主表中已在副表中不存在的记录,可以这样操作:
```sql
DELETE FROM info
WHERE NOT EXISTS (SELECT * FROM info_bz WHERE info.info_id = info_bz.info_id)
```
7. 复杂查询示例:
示例展示了如何结合多表查询,找出特定时间段内的库存变化:
```sql
Select A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
FROM TABLE1,
(Select X.NUM, X.UPD_DATE, Y.UPD_DATE AS PREV_UPD_DATE
FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
FROM TABLE2
WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,
(SELECT NUM, UPD_DATE, STOCK_ONHAND
FROM TABLE2
WHERE TO_CHAR(UPD_DATE, 'YYYY/MM') =
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01', 'YYYY/MM/DD') - 1, 'YYYY/MM')) Y
WHERE X.NUM = Y.NUM(+)
AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND, 0) <> X.STOCK)
```
此查询涉及到在特定月份(当前月)内,根据入库量和现有库存判断是否有库存差异。
以上技巧和示例涵盖了基本的表操作、数据迁移以及时间条件查询,对理解和操作SQL数据库十分有用。它们可以帮助你更有效地管理数据库,实现数据的灵活迁移和分析。
352 浏览量
112 浏览量
235 浏览量
2012-03-10 上传
235 浏览量
2011-03-26 上传
134 浏览量
152 浏览量
391 浏览量
weixin_38576922
- 粉丝: 6
- 资源: 904
最新资源
- 手把手,教你入门WINOLS(入门篇).rar
- AWT
- table_calendar:高度可定制的功能丰富的日历小部件,适用于Flutter
- 家具进销存管理软件 宏达家具进销存管理系统 v3.0
- rhodeswiki
- astarisx:适用于React的高度可组合MVVM框架
- python-json-logger:用于标准python记录器的Json Formatter
- 星期六AI:挑战Tareas de AIS星期六
- 5种炫酷js鼠标跟随动画特效插件
- plot3Dmeshgrid:plot3Dmeshgrid(X,Y,Z) 绘制由函数 [Xgrid,Ygrid,Zgrid] = meshgrid(X,Y,Z) 返回的 3D 网格-matlab开发
- measure.zip中文版
- dislocker:FUSE驱动程序在Linux Mac OSX下读写Windows的BitLocker版本
- Java的dubbo.xsd配置文件
- slider_animate:创建滑块控制的动画-matlab开发
- 骰子滚动游戏是计算机掷骰子,然后用户掷骰子获得最高分。骰子滚动游戏是“计算机”掷骰子。骰子,然后用户掷骰子,最高分获胜。 胜利加起来,如果愿意的话,球员们可以再次打球,然后比分提高。 一旦玩家选择退出,总分就会显示出来
- moonfair.github.io