第十章,更新和删除数据

更新数据

update 表名 列名和新值 过滤条件

UPDATE 语句总是以要更新的表名开始,
在更新多列时每一个" 列=值" 对之间应逗号分隔
如果操作中出现错误,默认整个操作都被取消,如需忽略错误继续执行 可使用IGNORE 关键字

删除数据

delete from 表名 过滤条件

没有过滤条件则删除表中所有数据

更新和删除的指导原则

除非打算更新和删除表中的每一行,否则绝对不要使用不带 WHERE 子句的UPDATE 和DELETE 语句
### 数据结构第十章上机作业示例与解答 对于数据结构课程中的第十章,通常涉及较为复杂的数据结构应用以及高级主题。根据常见的教材安排,第十章可能涵盖了诸如图论、树的特殊形式(如B树)、哈希表优化或是更深入的索引技术等内容。 #### 图的应用案例解析 假设第十章讨论的是图的应用,则可能会有如下类型的练习题: - **最短路径计算** 给定一个加权无向图G=(V,E),其中每条边都有正权重w(u,v)表示城市u到v之间的距离。要求编程求解任意两点间的最小旅行成本。 ```c++ void dijkstra(int graph[V][V], int src) { set<pair<int, int>> s; vector<int> dist(V, INT_MAX); s.insert(make_pair(0, src)); dist[src] = 0; while (!s.empty()) { pair<int, int> tmp = *(s.begin()); s.erase(s.begin()); int u = tmp.second; for (int v = 0; v < V; ++v) { if (graph[u][v] && dist[v] > dist[u] + graph[u][v]) { if (dist[v] != INT_MAX) s.erase(s.find(make_pair(dist[v], v))); dist[v] = dist[u] + graph[u][v]; s.insert(make_pair(dist[v], v)); } } } cout << "Vertex Distance from Source" << endl; for (int i = 0; i < V; ++i){ cout << i << "\t\t" << dist[i]<<endl; } } ``` 此代码实现了Dijkstra算法来寻找单源最短路径[^1]。 #### B树操作实践 如果该章节聚焦于B树的操作,则会涉及到插入、删除节点等实际编码任务: ```cpp class BTreeNode{ public: bool leaf; int *keys; BTreeNode** C; int n; }; // 插入新键k至非满结点p中适当位置 void insertNonFull(BTreeNode* p, int k) { // 寻找合适的子树继续向下探索... } // 主要用于处理根节点为空的情况 void BTree::insert(int key) { if(root == NULL){ root = new BTreeNode(true); root->keys[0]=key; root->n=1; }else{ if(root->n==2*t-1){ BTreeNode *s=new BTreeNode(false); s->C[0]=root; splitChild(s,0,root); int i=0; if(s->keys[0]<key)i++; insertNonFull(s->C[i],key); root=s; }else{ insertNonFull(root,key); } } } ``` 这段伪代码展示了如何在一个已存在的B树里安全地加入新的关键字而不违反其性质。 #### 哈希冲突解决方法探讨 当第十章讲解哈希表及其改进措施时,学生会被鼓励尝试不同的碰撞解决方案,例如链地址法或开放寻址法: ```java import java.util.LinkedList; public class HashTableSeparateChaining<K,V>{ private static final int DEFAULT_CAPACITY = 7; LinkedList<Entry<K,V>>[] table; public HashTableSeparateChaining(){ this(DEFAULT_CAPACITY); } @SuppressWarnings("unchecked") public HashTableSeparateChaining(int capacity){ table = new LinkedList[nextPrime(capacity)]; for(int i=0;i<table.length;i++) table[i]=new LinkedList<>(); } // ...其余省略的方法定义... private static class Entry<K,V>{ K key; V value; Entry(K k, V v){this.key=k;this.value=v;} } } ``` 上述Java类通过分离链接的方式解决了哈希冲突问题,即每个桶都维护了一个列表用来存储具有相同散列码的关键字项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值