SQL学习之增删改查
文章目录
- 数据库
- 数据类型
- 建表create table
- 插入数据insert into
- 查询数据select from
- 修改数据update set
- 删除数据delete from
- 备份ctas
- 结果插入iis
- 截断表 truncate table
- 修改表结构alter table
- 添加注释
注:本文的SQL语法是基于Oracle数据库操作的,但是基本的SQL语法在数据库中应该都是通用的
数据库
什么是数据库?什么是表?
数据库可以理解为图书馆,图书馆里面的书就是数据库中的数据,数据库表就是书架,每个架子都有自己名字(编号),不同的架子放的是不同类型的书,数据库表也一样。
针对表的操作有很多,可以分为对表本身的操作,包括创建表、删除表、修改表,这类操作称为DDL;还有操作表中的数据,包括插入数据、修改数据、删除数据,这类操作称为DML;还有一类是对前面操作的授权,称为DCL;最重要的是查询表中数据的操作,称为DQL。
- DDL(data definition language)操作包括:create table、alter table、drop table;
- DML(data manipulation language)操作包括:insert into、update set、delete from、truncate table;
- DCL(data control language)操作包括:grant、revoke;
- TCL(transaction control language)操作包括:commit、rollback;
- DQL(data query language)操作包括:select;
数据类型
Oracle数据库中常用的数据类型大致如下:
类 型 | 描 述 |
---|---|
char(n) | 保存固定长度的字符串,n在1-2000之间。 |
varchar2(n) | 保存数字、字母等变长字符串,n在1-4000之间。 |
number(m,n) | 保存数字,是整数或小数。n表示小数长度,整数长度是m-n。 |
date | 保存日期时间类型,不含毫秒。 |
timestamp | 保存日期时间类型,含毫秒。 |
clob | 存放海量文字。 |
blob | 存放海量二进制文件,如图片、电影、音乐等。 |
还有其他类型,如long、float、int、rowid(伪列)等。
注:
- oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为rowid,在oracle内部通常就是使用它来访问数据的。
- char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar2是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。
在SQL中没有bool类型,在plsql中有bool类型。
建表create table
create table 表名 (列名1 类型, 列名2 类型....)
说明:
- “create table 表名(列名 类型)”是固定写法。表名是自己起的,英文开头,可以包含数字,可以包含下划线,表名中不能有空格,不要使用中文做表名。
- 表名后面必须跟小括号,里面是列的定义,列名后面是一个类型,中间用空格区分;多个列定义之间使用逗号分割。列名定义规则跟表名一样。
- 创建表时,只能执行一次,多次执行会报错“00955 名称已由现有对象使用”。
eg:创建学生表stu
create table stu(sno number, sname varchar2(32), sage int, sdate date, sincome number(8,2));
插入数据insert into
语法如下:
insert into 表名(列1,列2,......)values(值1,值2,......);
说明:
- “insert into (…) values (…)”是固定结构,小括号是必须有的。
- 第一个小括号中是需要插入的列名,第二个小括号中是需要插入的值。一定要注意的是列名跟值是一一对应的。不仅个数一致,位置也要一致。
- 插入的值,必须跟数据类型保持一致:number/int类型就是纯数字,varchar2类型是用单引号引起来;date类型是字符串前面加date;
- 被插入的表必须存在,如果不存在,需要create table创建。
- 同一条插入语句,重复执行,会插入多条相同的数据。
eg:向表中插入下述内容
insert into stu(sno, sname, sage, sdate, sincome)values(1,'张三',23,date'1990-02-23', 3000.32);
insert into stu(sno, sname, sage, sdate, sincome)values(2,'李四',24,date'1989-10-12', 4300.46);
insert into stu(sno, sname, sage, sdate, sincome)values(3,'王五',25,date'1987-07-03', 4977.58);
查询数据select from
语法如下:
select * from 表名;
select 列名1, 列名2... from 表名;
说明:
- “select … from …”是固定结构,先写select,再写from;
- select后面跟着是星号,表示显示所有列;
- select后面可以跟具体的列名,多个列名之间使用逗号分割;
- from后面跟的是表名;
修改数据update set
语法如下:
update 表名 set 列名1=新值1,列名2=新值2 [where 列名=某值];
说明:
- “update … set …”是固定结构。
- set后面的等号表示把新值1赋给某一列,让该列的值变成新的值;有多个列的值要修改,就写多个等式,中间用逗号分割。
- where是可选的,如果没有where条件,意味着对所有行都修改;有where条件,只对满足条件的行做修改。
eg:按下面要求,修改stu中的数据
update stu set sincome=4000;
update stu set sincome=4000 where sno=1;
update stu set sincome=4000 where sno<3;
update stu set sincome=sincome+1000;
删除数据delete from
语法如下:
delete from 表名 [where条件];
说明:
- 如果不带where条件,则删除表中所有记录;带where条件,则删除符合条件的行。
eg:按如下要求删除stu表中数据
-- 删除张三
delete from stu where sno=1;
-- 删除所有
delete from stu;
备份ctas
如果对一个表进行备份,或者对表中一部分数据,一部分列备份,就可以使用ctas。
相当于“文件的另存为”功能。
语法如下:
create table 新表名 as select语句
eg:
对stu表备份,新的表名是stu1
create table stu1 as select * from stu;
把stu表的sno、sname、sage三列数据备份到新的表stu2中。
create table stu2 as select sno, sname, sage from stu;
创建一个表stu3,结构跟stu表完全相同,但是没有数据。
create table stu3 as select * from stu where 1=2;
结果插入iis
查询一个表的内容,把查询结果插入到另一个表中。
语法如下:
insert into 表名 select语句;
例 :演示iis插入数据。
insert into stu3 select * from stu;
截断表 truncate table
对于删除整个表的所有数据,delete并不会释放表所占用的空间。
如果用户确定是删除整表的所有数据,那么使用 truncate table 速度更快。
一个表可以看做是一张纸,上面有很多数据,使用delete删除相当于使用橡皮擦擦除数据,使用truncate删除相当于换了一张新的纸,非常干净,而且速度快。
使用delete删除,可以回滚数据;使用truncate删除,不能回滚数据。
例 :对stu1表进行截断操作。
truncate table stu2;
修改表结构alter table
主要操作包括增加列、删除列、修改列名、修改列的数据类型。
- 添加字段
语法如下:
alter table 表名 add(列名1 列类型, 列名2 列类型)
说明:
- 添加列,add后面有小括号,里面是列名和类型;添加多个列,使用逗号分隔;
例 :在stu表中增加一列sphone,类型是varchar2(11)。
alter table stu add (sphone varchar2(11));
- 删除字段
alter table 表名 drop column 列名
例 :删除stu表中刚刚添加的sphone列。
alter table stu drop column sphone;
- 修改字段
-- 列的名字重新命名
alter table 表名 rename column 旧的列名 to 新的列名
-- 修改列的类型
alter table 表名 modify 列名 新的列类型
例 :把stu表中的列sincome改为salary。
alter table stu rename column sincome to salary;
添加注释
comment on table 表名 is '注释内容';
comment on column 表名.字段名 is '注释内容';
例 :给stu表添加表注释和字段注释,并在plsql developer中点击右键“描述”查看注释。
comment on table stu is '学生表';
comment on column stu.sno is '学号';
comment on column stu.sname is '学生姓名';
相关文章:

SQL学习之增删改查
文章目录 数据库数据类型建表create table插入数据insert into查询数据select from修改数据update set删除数据delete from备份ctas结果插入iis截断表 truncate table修改表结构alter table添加注释 注:本文的SQL语法是基于Oracle数据库操作的,但是基本的…...

Ansible角色定制实例
目录 角色定制:roles 角色定制实例:利用角色部署wordpress 1.在roles目录下生成对应的目录结构 2.定义配置文件 ①nginx ②php ③mysql ④定义剧本文件 ⑤启动服务 角色定制:roles 对于普通的剧本(playbook)有…...
ElastaticSearch--- es多字段聚合
在使用es时,我们经常会用到聚合查询。 简单的聚合查询,已经在前面介绍过,详情见: https://www.cnblogs.com/expiator/p/13843969.html 有时,也会用到多字段聚合查询。类似于Mysql的Group By多个字段。 比如…...
本周Github有趣开源项目:Rspress等6个
Github有趣的项目、工具和库: 1、sshx 一个基于 Web 的安全协作终端。通过网络进行快速、协作的实时终端共享 特征: 运行一个命令即可与任何人共享您的终端。 在无限画布上调整大小、移动窗口以及自由缩放和平移。 查看其他人的光标实时移动。 连接到…...
【华为OD题库-016】字符串摘要-Java
题目 给定一个字符串的摘要算法,请输出给定字符串的摘要值 1、去除字符串中非字母的符号 2、如果出现连续字符(不区分大小写),则输出:该字符(小)+连续出现的次数 3、如果是非连续的宁符(不区分大小写),则输出:该字符(小写)该字母之…...

生成式AI - Knowledge Graph Prompting:一种基于大模型的多文档问答方法
大型语言模型(LLM)已经彻底改变了自然语言处理(NLP)任务。它们改变了我们与文本数据交互和处理的方式。这些强大的AI模型,如OpenAI的GPT-4,改变了理解、生成人类类似文本的方式,导致各种行业出现…...

深度学习AIR-PolSAR-Seg图像数据预处理
文章目录 深度学习sar图像数据预处理一.图片预处理操作1.log(1x)处理2.sqrt平方化处理 二.原网络训练效果展示原始数据训练效果展示: 三.对比实验1.采用原始数据2.采用取log(1x)后的数据3.采用取平方后归一化处理: 四.总结:五.思考 深度学习s…...

求最大公约数math.gcd()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求最大公约数 math.gcd() [太阳]选择题 下列代码执行输出的结果是? import math print("【执行】print(math.gcd(6, 8))") print(math.gcd(6, 8)) print(&quo…...

数据结构之队列
目录 引言 队列的概念与结构 队列的实现 定义 初始化 销毁 入队 判断队列是否为空 出队 获取队头元素 获取队尾元素 检测队列中有效元素个数 元素访问 源代码 queue.h queue.c test.c 引言 数据结构之路经过栈后,就来到了与栈联系紧密的兄弟—…...
MySQL数据库——存储过程-循环(while、repeat、loop)
目录 while 介绍 案例 repeat 介绍 案例 loop 介绍 案例一 案例二 while 介绍 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为: -- 先判定条件,如果条件为true,则执行逻辑&#…...
Django路由
路由系统 1.Django1中的路由1.1 普通形式1.2 分组1.2.1 无名分组1.2.2 有名分组 2. Django2版本2.1 传统的路由2.2 正则表达式路由 3. 路由分发3.1 include(一般使用此方式做路由分发)3.2 手动分发 4. name别名及使用name的反向URL生成4.1 一般情况下的别名使用及反向生成4.2 分…...
头歌实践平台-数据结构-二叉树及其应用
第1关:实现二叉树的创建 #include "binary_tree.h"BiTreeNode* CreatBiTree(char* s, int &i, int len) // 利用先序遍历创建二叉树 // 参数:先序遍历字符串s,字符串初始下标i0,字符串长度len。 // 返回࿱…...

2023.11.11通过html内置“required-star“添加一个红色的星号来表示必填项
2023.11.11通过html内置"required-star"添加一个红色的星号来表示必填项 在HTML中,可以使用标签来为元素添加说明。同时可以通过添加一个红色的星号来表示必填项。 <!DOCTYPE html> <html lang"en"> <head><meta charse…...
pcie【C#】
根据提供的引用内容,使用C#编写PCIE的Demo需要遵循以下步骤:1.连接好硬件后,烧录bit文件,安装PCIe内核驱动,然后重启计算机。2.打开VS工程,创建一个新的C#控制台应用程序项目。3.在项目中添加对C DLL的引用…...

西门子精智屏数据记录U盘插拔问题总结
西门子精智屏数据记录U盘插拔问题总结 注意: 数据记录过程中不允许带电插拔 U 盘! 数据记录的相关功能可参考以下链接中的内容: TIA博途wincc V16 如何进行变量周期归档?...
(论文阅读27/100)Deep Filter Banks for Texture Recognition and Segmentation
27.文献阅读笔记 简介 题目 Deep Filter Banks for Texture Recognition and Segmentation 作者 Mircea Cimpoi, Subhransu Maji, Andrea Vedaldi, 原文链接 http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Cimpoi_Deep_Filter_Banks_2015_CVPR_pap…...
ARMday06(串口)
代码: #include "gpio.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h" void init(); char getc(); void putc(const char data); int main() {init();//初始化putc(j);char …...
Rust字符串详解
文章目录 字符串切片String迭代方法基础字符串方法容量操作增删改查 字符串切片 我们所熟知的由双引号括起来的字符串,在Rust中只是个字符串切片,又叫字符串字面值。这种类型一旦创建,则不可更改。但支持索引,从切片中索引出来的…...

(四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖…...

Window安装MongoDB
三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...