plsql中数据库表的增删改查操作(常用的DDL,DML语句)

您所在的位置:网站首页 plsql查看数据库表 plsql中数据库表的增删改查操作(常用的DDL,DML语句)

plsql中数据库表的增删改查操作(常用的DDL,DML语句)

#plsql中数据库表的增删改查操作(常用的DDL,DML语句)| 来源: 网络整理| 查看: 265

注意: 1) 在所有增删改操作中,都需要提交事务commit,它能保证数据的一致性和完整性,能保证一系列操作的原子性,“要么都成功,只要有一条失败,全部回滚”。提交之后的数据无法回滚。 2)update跟delete要慎重,不要只选中一半,看清楚where条件,否则就是对全部数据都进行操作。

一、增删改

在这里插入图片描述

修改表名 alter table 原表名 rename to 新表名 注意:修改完表名之后右击tables刷新一下 alter table use rename to cominfo;

结果如下: (注意:如果需要查看字段类型,鼠标右键点击表名→"View"→"column"选项卡进行查看) 在这里插入图片描述

添加一个字段 alter table 表名 add( 字段名1 字段类型1, 字段名2 字段类型2, … ); alter table cominfo add( qq number(18) );

结果如下: 在这里插入图片描述

修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 alter table cominfo rename column qq to weixin;

结果如下: 在这里插入图片描述

修改字段类型 alter table 表名 modify( 字段名1 新类型1, 字段名2 新类型2, … ); alter table cominfo modify( weixin varchar2(32) );

结果如下: 在这里插入图片描述

删除一个字段 alter table 表名 drop(字段名); alter table cominfo drop(weixin);

结果如下: 在这里插入图片描述

删除一张表 drop table 表名 drop table buy; 新增一条数据 insert into 表名 (字段1,字段2,…)values(值1,值2,…) 或 insert into 表名 values(值1,值2,…) 注意: (1)插入语句执行完毕后,需要点击提交事务按钮"commit" (2)如果插入一条记录,给所有字段都插值,那么insert into 表名后面的第一对小括号可以省略 insert into cominfo values(1003, '张三', '男', '1998/1/3', '南京邮电大学',123456789,1); 或 insert into cominfo (pno, pname, sex, birthday) values (1004, '李四', '男', '1998/1/4');

结果如下: 在这里插入图片描述

字符串转日期函数 to_date(‘日期字符串’,‘日期格式’) 注意: (1)在Oracle中,使用y表示年,m表示月,d表示日,通常用“-”连接 (2)使用h表示时,mi表示秒,s表示秒,默认十二小时制,需要设置24小时则需在hh后面添加24 --先删除所有的出生日期,再把birthday的类型改成date alter table cominfo modify( birthday date ); --再使用to_date函数 insert into cominfo values(1009,'小月','男',to_date('1998-01-09 18:20:10','yyyy-mm-dd hh24:mi:ss'),'南京邮电大学',1807654321,2);

结果如下: 在这里插入图片描述

日期类型转字符串 to_ char(字段名 ,日期的字符串格式) 可以将日期型的字段按照指定的字符串格式转型为字符串 select pno,pname,sex,to_char(birthday,'yyyy') from cominfo;

结果如下: 在这里插入图片描述

给出指定生日,计算年龄 to_char(sysdate,‘yyyy’)-to_char(birthday,‘yyyy’) select pno,pname,sex,to_char(sysdate,'yyyy')-to_char(birthday,'yyyy') age from cominfo;

结果如下: 在这里插入图片描述

修改语句 update 表名 set 字段名 = ‘新值’ where 条件 注意: 条件通常使用编号 --1)将小月的性别改为女 update cominfo set psex = '女' where pname = '小月'; --2)将所有男同学的地址都改成南京邮电大学仙林校区 update cominfo set address = '南京邮电大学仙林校区' where sex = '男';

结果如下: 在这里插入图片描述

删除语句 delete from 表名 where 条件 --1)删除编号为1009的同学 delete from cominfo where pno = 1009;

结果如下: 在这里插入图片描述

二、约束

约束通常都是加在create table语句中,用来对表中的数据进行限定

非空约束——not null(表示指定字段的值不能为空) create table cominfo( pno varchar2(32) not null, pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32) ); 唯一约束——unique(表示指定字段的值不能重复) 唯一约束也可以使用constraint关键字来进行编写 格式:在所有字段定义的最后,使用constraint 约束名 unique(字段名) 注意:如果()中含有多个字段,则表示他们的组合不能重复 create table cominfo( pno varchar2(32) unique, pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32) constraint uk1 unique(pname) constraint uk2 unique(address,movephone) ); 主键约束(表示既非空又唯一的约束) 它在业务逻辑上可以用来识别一条记录 格式1:在字段后添加primary key 格式2:使用constraint 约束名 primary key(字段名) create table cominfo( pno varchar2(32) primary key, pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32) constraint uk1 unique(pname) constraint uk2 unique(address,movephone) ); 或 create table cominfo( pno varchar2(32), pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32) constraint uk primary key(pno) ); 外键约束 存在两张表,一张作为主表,一 张作为从表, 主表中的主键字段添加到从表中,在从表中当做外键 例如:班级表是主表,学生表是从表,班级编号在学生表中做外键 格式1:references 主表表名(主表主键名) 格式2:在字段最后使用constraint 外键名 foreign key(外键字段) references 主表名(主表主键字段)

外键约束的两层含义 : (1)当插入从表数据时数据的外键值必须要在主表中存在(否则违反完整约束) 如:学生表中有一个班级编号不存在于班级表 (2)当删除主表数据时,该数据的主键值必须没有被从表中数据关联

create table cominfo( pno varchar2(32), pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32) references classinfo(cpk) ); 或 create table cominfo( pno varchar2(32), pname varchar2(32), sex varchar2(6), birthday date, address varchar2(200), movephone number(18), cno varchar2(32), constraint uk foreign key(cno) references classinfo(cpk) ); 三、查询 查询语句 select 字段名1,字段名2,… from 表名 --1)查看表的所有字段 select * from cominfo

结果如下: 在这里插入图片描述

--2)查看表的编号字段,姓名字段和性别字段 select pno,pname,sex from cominfo 或 select c.pno,c.pname,c.sex from cominfo c

结果如下: 在这里插入图片描述

别名 --1)我们可以在sq|语句的表名后面加空格别名,在当前sq|语句中,别名就代表这张表 select c.pno,c.pname,c.sex from cominfo c;

结果如下: 在这里插入图片描述

--2)我们还可以在字段的后面加空格别名,那么结果集的列名就是对应的别名 select c.pno 编号,c.pname 姓名,c.sex 性别 from cominfo c;

结果如下: 在这里插入图片描述

distinct关键字 在select语句中,字段名的前面,使用distinct可以实现数据结果的排重,去掉重复 --1) select distinct c.pno 编号,c.pname 姓名,c.sex 性别 from cominfo c;

结果如下: 在这里插入图片描述

--2) select distinct c.pno 编号,c.pname 姓名,c.sex 性别 from cominfo c order by c.pno asc; 或 select distinct c.pno 编号,c.pname 姓名,c.sex 性别 from cominfo c order by c.pno;

结果如下: 在这里插入图片描述

--3) select distinct c.pno 编号,c.pname 姓名,c.sex 性别 from cominfo c order by c.sex,c.pno;

结果如下: 在这里插入图片描述

在select语句的最后,可以使用order by字段名实现结果集根据指定字段排序 在字段名后面使用asc表示升序,desc表示降序,asc可以省略 注意: (1)中文字在order by中的排序是根据Unicode编码的先后顺序决定的 (2)order by后面的字段可以是多个字段,它会按照先后的优先级进行一层层的排序 (3)order by 语句放在最后

where语句 1)where语句可以跟在from语句的后面表示条件过滤 2)where语句中支持 = > >= < = 1005 and c.pno 1007 or c.pno


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3