数据库开发与SQL精华技巧
需积分: 3 73 浏览量
更新于2024-07-29
收藏 94KB DOC 举报
本资源主要涵盖了数据库开发中的关键知识点,包括SQL语言、存储过程、函数、序列和触发器的使用。以下是对这些知识点的详细说明:
1. 删除重复项:在数据库操作中,有时需要清理重复的数据,保留第一条记录。这可以通过子查询来实现,例如`DELETE FROM table_t1 WHERE t1.ID NOT IN (SELECT MIN(t2.ID) FROM table_t2 GROUP BY t2.ColName)`,这个查询会删除所有ID不在最小ID集合中的行,从而保留每个分组的最小ID(即无重复的ID)。
2. 查找重复记录:为了找出表中哪些记录是重复的,可以使用`GROUP BY`和`HAVING COUNT(*) > 1`,如`SELECT t1.ID, COUNT(*) FROM table GROUP BY t1.ID HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC`,这将返回ID及其出现次数,按出现次数降序排列。
3. 导入数据与触发器:当目标表有主键且源表没有对应字段时,可以创建一个触发器在插入前获取序列的下一个值,例如`CREATE OR REPLACE TRIGGER res_circuit_uuid_insert BEFORE INSERT ON table FOR EACH ROW BEGIN SELECT SEQ_TABLE_ID.NEXTVAL INTO :NEW.ID FROM DUAL; END;`,这样在插入新行时,自动为ID字段分配序列值。
4. 导入数据(目标表已存在,无主键或主键约束禁用):在这种情况下,可以使用简单的`INSERT INTO`语句,例如`INSERT INTO table2 (t2.col1, t2.col2) SELECT DISTINCT t1.col1, t1.col1 FROM table1 t1`,确保导入的是不重复的数据。
5. 生成新表(结构+数据):直接从旧表创建新表,包含数据,可以使用`CREATE TABLE new_table AS SELECT * FROM old_table NOLOGGING`,其中`NOLOGGING`选项可减少日志记录,提高性能。
6. 复制表结构:创建新表的结构,可以选择性地复制所有或部分字段。
- 复制所有字段:`CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=2;`
- 复制部分字段:`CREATE TABLE new_table AS SELECT col1, col2 FROM old_table NOLOGGING;`
7. 修改表结构:
- 添加列:`ALTER TABLE tableName ADD (col1 col_type, col2 DATE DEFAULT SYSDATE);`
- 修改列:`ALTER TABLE tableName MODIFY (col1 new_col_type, col2 DEFAULT NULL);`
- 删除列:`ALTER TABLE department DROP (col1, col2) CASCADE CONSTRAINTS;`,这会删除列并级联删除相关的约束。
- 软删除:`ALTER TABLE tableName SET UNUSED (col1, col2)`,标记列不再使用,但不立即删除,以便后续的DML操作不受影响。
以上内容涵盖了数据库开发中常见的SQL操作,存储过程的应用,以及表结构的维护。理解并熟练运用这些技能对于数据库管理和开发至关重要。
2022-06-30 上传
2011-08-17 上传
2009-03-12 上传
2022-06-02 上传
2010-05-30 上传
2012-09-27 上传
2021-10-13 上传
2012-03-22 上传
chaoweiyi
- 粉丝: 9
- 资源: 10
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践