plsql最简单的增删改查命令

1 insert
语法: insert into 表名称 values(值1,值2);
insert into person values('github','c++','java','mysql');
insert into  persion(name,password) values('张三',123);

2 delete
语法: delete from 表名称 where 列名称=值
删除某行
delete from persion where lastname ='zhangsan';
删除所有行:
delete from table_name
或者
delete * from table_name;

3 updata
语法:updata 表名称 set 列名称=新值 where 列名称=某值
更新某一行中一个列
updata persion set firstname ='lisi' where lastname='zhangsan';
更新某一行的诺干列
修改地址,并添加新的城市名称
update persion set address ='zhenghzou',city='nanjing' where lastname='zhangsan';
4 select
语法:select 列名称 from 表名称
select * from 表名称
获取列名称为"lastname" 和"firstname"的列内容
select lastname ,firstname from  persion;
获取表中所有的列名称
select * from persion
指定条件查询
select * form persion where id=2;
select连接字符串并起别名
select firstname+''+lastname as 名字 from persion
查询表中所有ID不为1的记录
select * from persion where not id=1;
带and多条件查询,没有符合条件的记录,返回为空
带or的多条件查询
select * from persion where id or firstname='a1';
select * from persion where id=1 and firstname='a1';
5 order by 排序
select * from persion order by id desc;
select * from persion order by id asc;
6 模糊查询
% 零或多个字符
select * from persion where firstnam like 'a%';
_ 一个字符
select * from persion where firstname like 'a_';
[] 指定范围内的任意单个字符
select * from persion where firstname like'a[a-e]';
select * from persion  where firstname like 'a[bcd]';
[^]不属于指定范围内的任单个字符
select * from persion where firstname like'a[^bcd]';
select * from persioin  where firstname likt '[bcd]%';
7 between and
select * from  between 1 and 2;
### PL/SQL 中增删改查语句的使用方法与示例 #### 插入操作 (Insert) 在 PL/SQL 中,`INSERT` 语句用于向表中插入新记录。可以单独执行 `INSERT` 或将其嵌套于存储过程中。 以下是通过存储过程实现插入的一个示例: ```sql create or replace procedure pro_addData(v_userid varchar2, v_username varchar2, v_usersex varchar2) is begin insert into new_tab(userid, username, usersex) values(v_userid, v_username, v_usersex); end; ``` 此代码创建了一个名为 `pro_addData` 的存储过程,允许传入三个参数并插入到指定表中[^3]。 --- #### 查询操作 (Select) 查询是 SQL 和 PL/SQL 中最常用的操作之一。基本语法如下: ```sql SELECT column_name(s) FROM table_name WHERE condition; ``` 更复杂的查询可以通过连接多个条件来完成。例如,在 PL/SQL 块中动态获取数据: ```sql declare v_emp emp%rowtype; v_empno emp.empno%type; begin v_empno := &员工编号; select * into v_emp from emp where empno = v_empno; dbms_output.put_line(v_emp.empno || ' ' || v_emp.ename); exception when no_data_found then dbms_output.put_line('不存在此项数据'); end; / ``` 这段代码展示了如何捕获异常情况下的错误处理逻辑[^4]。 --- #### 更新操作 (Update) 更新现有记录可通过标准 SQL 实现,也可以封装成存储过程以便重复利用。下面是一个简单的例子: ```sql update employee set salary = salary + 1000 where department_id = 10; ``` 如果希望将更新行为抽象化,则可以用以下方式定义存储过程: ```sql create or replace procedure update_salary(dept_id number, increment_value number) as begin update employees set salary = salary + increment_value where department_id = dept_id; end; ``` 这使得每次调整薪资变得更为灵活和可控[^5]。 --- #### 删除操作 (Delete) 删除特定条件下的一组或多条记录同样支持多种表达形式。比如基于子查询的方式批量清除不符合要求的数据项: ```sql DELETE FROM emp WHERE deptno IN (SELECT deptno FROM dept WHERE dname = '销售'); ``` 或者采用存在性判断的形式进一步优化性能表现: ```sql DELETE FROM emp X WHERE NOT EXISTS (SELECT 1 FROM valid_departments Y WHERE X.deptno = Y.deptno); ``` 对于复杂场景还可以考虑结合事务管理机制确保一致性。 --- ### 综合应用实例 假设我们需要维护一张学生信息表 (`student`) 并提供相应的 CRUD 功能接口。下面是完整的解决方案框架: ```sql -- 创建测试用的学生表格结构 CREATE TABLE student ( id NUMBER PRIMARY KEY, name VARCHAR2(50), age NUMBER, major VARCHAR2(100) ); -- 添加一条新的学籍记录 PROCEDURE add_student(p_id NUMBER, p_name VARCHAR2, p_age NUMBER, p_major VARCHAR2) AS BEGIN INSERT INTO student(id, name, age, major) VALUES (p_id, p_name, p_age, p_major); END; -- 修改某个学生的专业方向 PROCEDURE change_major(p_id NUMBER, p_new_major VARCHAR2) AS BEGIN UPDATE student SET major = p_new_major WHERE id = p_id; END; -- 移除已毕业的学生档案 PROCEDURE remove_graduated_students(grad_year NUMBER) AS BEGIN DELETE FROM student WHERE EXTRACT(YEAR FROM SYSDATE) - age >= grad_year; END; -- 查找所有计算机科学专业的学员名单 FUNCTION get_cs_students RETURN SYS_REFCURSOR IS cs_cursor SYS_REFCURSOR; BEGIN OPEN cs_cursor FOR SELECT * FROM student WHERE UPPER(major) LIKE '%COMPUTER SCIENCE%'; RETURN cs_cursor; END; ``` 以上涵盖了从单条目录入直到集合型检索在内的全方位覆盖[^1][^2]. ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smilecattobelucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值