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(伪列)等。
注:

  1. oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为rowid,在oracle内部通常就是使用它来访问数据的。
  2. char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar2是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。

在SQL中没有bool类型,在plsql中有bool类型。

建表create table

create  table  表名  (列名1  类型, 列名2  类型....)

说明:

  1. “create table 表名(列名 类型)”是固定写法。表名是自己起的,英文开头,可以包含数字,可以包含下划线,表名中不能有空格,不要使用中文做表名。
  2. 表名后面必须跟小括号,里面是列的定义,列名后面是一个类型,中间用空格区分;多个列定义之间使用逗号分割。列名定义规则跟表名一样。
  3. 创建表时,只能执行一次,多次执行会报错“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......);

说明:

  1. “insert into (…) values (…)”是固定结构,小括号是必须有的。
  2. 第一个小括号中是需要插入的列名,第二个小括号中是需要插入的值。一定要注意的是列名跟值是一一对应的。不仅个数一致,位置也要一致。
  3. 插入的值,必须跟数据类型保持一致:number/int类型就是纯数字,varchar2类型是用单引号引起来;date类型是字符串前面加date;
  4. 被插入的表必须存在,如果不存在,需要create table创建。
  5. 同一条插入语句,重复执行,会插入多条相同的数据。

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 表名;

说明:

  1. “select … from …”是固定结构,先写select,再写from;
  2. select后面跟着是星号,表示显示所有列;
  3. select后面可以跟具体的列名,多个列名之间使用逗号分割;
  4. from后面跟的是表名;

修改数据update set

语法如下:

update 表名 set 列名1=新值1,列名2=新值2  [where 列名=某值];

说明:

  1. “update … set …”是固定结构。
  2. set后面的等号表示把新值1赋给某一列,让该列的值变成新的值;有多个列的值要修改,就写多个等式,中间用逗号分割。
  3. 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条件];

说明:

  1. 如果不带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 列类型)

说明:

  1. 添加列,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 '学生姓名';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda从4.12升级到最新版23.9 自动升级失败 手动升级方法

最新版conda有多线程下载&#xff0c;还做了一些其它易用性改动&#xff0c;所以决定从很老的4.12版本升级到最新版。因为版本差别过大&#xff0c;使用自带的conda update conda已经不起作用了。 手动升级最先想到的是把老环境全部导出为yaml文件&#xff0c;在新环境里全部重…

开源软件 FFmpeg 生成模型使用图片数据集

本篇文章聊聊&#xff0c;成就了无数视频软件公司、无数在线视频网站、无数 CDN 云服务厂商的开源软件 ffmpeg。 分享下如何使用它将各种视频或电影文件&#xff0c;转换成上万张图片数据集、壁纸集合&#xff0c;来让下一篇文章中的模型程序“有米下锅”&#xff0c;这个方法…

⑨【MySQL事务】事务开启、提交、回滚,事务特性ACID,脏读、幻读、不可重复读。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ MySQL事务 ⑨【事务】1. 事务概述2. 操作事务3…

若依Linux与Docker集群部署

若依Linux集群部署 1. 若依2.MYSQL Linux环境安装2.1 MYSQL数据库部署和安装2.2 解压MYSQL安装包2.3 创建MYSQL⽤户和⽤户组2.4 修改MYSQL⽬录的归属⽤户2.5 准备MYSQL的配置⽂件2.6 正式开始安装MYSQL2.7 复制启动脚本到资源⽬录2.8 设置MYSQL系统服务并开启⾃启2.9 启动MYSQL…

ubuntu小技巧30--23.10桌面版安装钉钉启动报错undefined symbol: FT_Get_Color_Glyph_Layer

ubuntu小技巧30-- 23.10桌面版安装钉钉启动报错undefined symbol: FT_Get_Color_Glyph_Layer 介绍解決方法说明 介绍 近期在电脑上安装了 ubuntu 23.10桌面版本, 安装最新版钉钉后无法正常打开软件&#xff0c;报错 undefined symbol: FT_Get_Color_Glyph_Layer &#xff0c;具…

手把手带你学习 JavaScript 的 ES6 ~ ESn

文章目录 一、引言二、了解 ES6~ESn 的新特性三、掌握 ES6~ESn 的用法和实现原理四、深入挖掘和拓展《深入理解现代JavaScript》编辑推荐内容简介作者简介精彩书评目录 一、引言 JavaScript 是一种广泛使用的网络编程语言&#xff0c;它在前端开发中扮演着重要角色。随着时间的…

并发线程的三大特性-原子性

1.1 什么是并发编程的原子性 JMM&#xff08;Java Memory Model&#xff09;。不同的硬件和不同的操作系统在内存上的操作有一定差异的。Java为了解决相同代码在不同操作 系统上出现的各种问题&#xff0c;用JMM屏蔽掉各种硬件和操作系统带来的差异。 让Java的并发编程可以做到…

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境OpenCV环境 相关其它博客工程源代码下载其它资料下载 前言 本项目基于从网络获取的多种银行卡数据集&#xff0c;采用OpenCV库的函数进行图像处理&#xff0c;并通过神经网络进行模型训练。最终实…

【MySQL】——Select查询语句(其二)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

6.jvm中对象创建流程与内存分配

目录 概述对象的创建流程对象的内存分配方式对象怎样才会进入老年代大对象直接进入老年代内存担保 jvc 相关指令查看jdk默认使用的gc查看当前jdk支持的有哪些gc查看指定进程当前正在使用的gc 结束 概述 相关文章在此总结如下&#xff1a; 文章地址jvm基本知识地址jvm类加载系…

Unity 控制组件显示在同级最前端或者最后端

有时候我们在做一些类似轮播的效果时&#xff0c;就通常会用到切换某张图片显示在最后端或者最前端。 如我写一个这样的脚本&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class ChangePic : M…

国际阿里云:提高CDN缓存命中率教程!!!

CDN缓存命中率低会导致源站压力大&#xff0c;静态资源访问效率低。您可以根据导致CDN缓存命中率低的具体原因&#xff0c;选择对应的优化策略来提高CDN的缓存命中率。 背景信息 CDN通过将静态资源缓存在CDN节点上实现资源访问加速。当客户端访问某资源时&#xff0c;如果CDN节…

算不上最全,但都是必备——Spring这些不会不行啊

Spring 篇 Spring框架中的单例bean是线程安全的吗&#xff1f; 不是线程安全的 Spring bean并没有可变的状态(比如Service类和DAO类)&#xff0c;所以在某种程度上说Spring的单例bean是线程安全的。 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0…

数据结构与算法之排序: Leetcode 922. 按奇偶排序数组 II (Typescript版)

按奇偶排序数组 II https://leetcode.cn/problems/sort-array-by-parity-ii/ 描述 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b…

Windows如何正确设置PHP环境变量以在Git Bash中运行命令

1、随便找一个目录&#xff0c;鼠标右键打开git bash here 2、cd的根目录 3、找到php安装目录 4、 在根目录下打开 vim .bash_profile &#xff0c;添加环境变量&#xff0c;php地址根据自己的本地地址而定 PATH$PATH:/d/phpstudy_pro/Extensions/php/php7.3.4nts 添加后保存…

基于Rabbitmq和Redis的延迟消息实现

1 基于Rabbitmq延迟消息实现 支付时间设置为30&#xff0c;未支付的消息会积压在mq中&#xff0c;给mq带来巨大压力。我们可以利用Rabbitmq的延迟队列插件实现消息前一分钟尽快处理 1.1定义延迟消息实体 由于我们要多次发送延迟消息&#xff0c;因此需要先定义一个记录消息…

2.6 Windows驱动开发:使用IO与DPC定时器

本章将继续探索驱动开发中的基础部分&#xff0c;定时器在内核中同样很常用&#xff0c;在内核中定时器可以使用两种&#xff0c;即IO定时器&#xff0c;以及DPC定时器&#xff0c;一般来说IO定时器是DDK中提供的一种&#xff0c;该定时器可以为间隔为N秒做定时&#xff0c;但如…

RedCap推动5G规模应用,紫光展锐赋能产业高质量发展

5G R17 RedCap作为面向中高速物联网场景的关键技术和解决方案&#xff0c;可以大幅降低终端的复杂度、成本和功耗。在当前国内5G应用规模化发展关键时期&#xff0c;5G R17 RedCap拥有广大的市场潜力与广泛的应用场景&#xff0c;将有助于推动5G规模应用、构建融通发展的5G生态…

【海德教育】建筑八大员中综合来看,以下几个岗位比较吃香

1.施工员 施工员刚入行工资不高、劳动强度大&#xff0c;但发展前景可观。 通过考建造师等执业资格证&#xff0c;后期有望出任项目经理&#xff0c;拿到一万起步的月薪。 想要晋升项目经理、包工头等&#xff0c;对于社交能力和个人吃苦能力要求比较高&#xff0c;比较适合男孩…

7、线性数据结构-切片

切片slice 容器容量可变&#xff0c;所以长度不能定死长度可变&#xff0c;元素个数可变底层必须依赖数组&#xff0c;可以理解它依赖于顺序表&#xff0c;表现也像个可变容量和长度顺序表引用类型&#xff0c;和值类型有区别 定义切片 var s1 []int //长度、容量为0的切片&…