科普数据库

格式:alter table 表名 modify 列名 列的类

演示:alter table users modify mobile char(11)

4、删除一

格式:alter table 表名 drop column 列

演示:alter table users drop column mobile

5、修改表

格式:rename 旧表名 to 新表

演示:rename users to myusers

6.6、表约

一、语

CREATE TABLE 表

列名 列的类型 primary key,–主键约

列名 列的类型 not null,–非空约

列名 列的类型 unique,–唯一约

列名 列的类型 check(列名 in (检查列表)),–检查约

constraint 约束名 foreign key(字段名) references 主表(被引用列)–外键约

二、演

–商品分

create table category

cid number primary key

cname varchar2(20)

–商品详

create table product

pid number primary key,–主键约

pname varchar2(50) not null,–非空约

pimg varchar2(50) unique,–唯一约

pflag varchar2(10) check(pflag in (‘上架’,’下架’)),–检查约

cid number

constraint FK_CATEGORY_ID foreign key(cid) references category(cid)–外键约

三、修

1、主键

alter table product add constraint PK_PRODUCT_PID primary key(pid)

alter table product drop constraint PK_PRODUCT_PID

alter table product drop primary key

2、非空约

alter table product modify pname not null

alter table product modify pname null

3、唯一约

alter table product add constraint UK_PRODUCT_PIMG unique(pimg)

alter table product drop constraint UK_PRODUCT_PIMG

alter table product drop unique(pimg)

4、检查约

alter table product add constraint CK_PRODUCT_PFLAG check(pflag in (‘上架’,’下架’))

alter table product drop constraint CK_PRODUCT_PFLAG

5、外键约

alter table product add constraint FK_PRODUCT_ID foreign key(cid) references category(cid)

alter table product drop constraint FK_PRODUCT_ID

第七章 DML语

7.1、插入语

格式:insert into 表名(列名1,列名2,…) values(值1,值2,…)

演示:insert into category(cid,cname) values(1,’电视’)

注意:commit

7.2、修改语

格式:update 表名 set 列名1=值1,列名2=值2,… where 查询条件

演示:update category set cname=’汽车’ where cid = 1

注意:commit

7.3、删除语

格式:delete from 表名 where 查询条件

演示:delete from category where cid = 1

注意:commit

第八章 TCL语

8.1、事

一、含

一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不

二、特点(ACI

原子性:一个事务是不可再分割的整体,要么都执行要么都不

一致性:一个事务的执行不能破坏数据库数据的完整性和一致

隔离性:一个事务不受其它事务的干扰,多个事务是互相隔离

持久性:一个事务一旦提交了,则永久的持久化到本

三、分

1、开启

Oracle 11g中事务是隐式自动开始的,它不需要用户显示的执行开始事务语

2、编写一组逻辑sql

注意:sql语句支持的是insert、update、delet

【设置回滚

savepoint 回滚点名

3、结束

提交:commit

回滚:rollback

回滚到指定的地方: rollback to 回滚点名

8.2、事务并发(读问题

一、事物的并发问题如何发生

多个事务同时操作同一个数据库的相同数

二、事务的并发问题都有哪

脏读:一个事务读到了另一个事务还未提交的update数据,导致多次查询的结果不一样(Oracle中不会产

不可重复读:一个事务读到了另一个事务已经提交的update数据,导致多次查询结果不一

幻读:一个事务读到了另一个事务已经提交的insert数据,导致多次查询的结果不一

三、事物的并发问题如何解决

通过设置隔离级别来解决并发

四、隔离

Oracle中只支持READ COMMITTED、SERIALIZABLE、READ ONLY、READ WRITE,这些语句是互斥的,不能同时设置两个或两个以上的选项,一般默认即

8.3、丢失更新(写问

一、定

在事务的隔离级别内容中,能够了解到两个不同的事务在并发的时候可能会发生数据的影响。细心的话可以发现事务隔离级别章节中,脏读、不可重复读、幻读三个问题都是由事务A对数据进行修改、增加,事务B总是在做读操作。如果两事务都在对数据进行修改则会导致另外的问题:丢失更

悲观锁:认为两个事务更新操作一定会发生丢失

解决:通过在语句后边添加for update来实现行级上锁,所以又称为”行级锁”,例如:select * from t_account t wheret.id=’1′ for update

乐观锁:认为事务不一定会产生丢失更新,让事务进行并发修改,不对事务进行锁

解决:由程序员自己解决,可以通过给数据表添加自增的version字段或时间戳timestamp,进行数据修改时,数据库会检测version字段或者时间戳是否与原来的一致,若不一致,抛出异常或者重新查

三、注

对于账户交易建议直接使用悲观锁,数据库的性能很高,并发度不是很高的场景两者性能没有太大差别。如果是交易减库存的操作可以考虑乐观锁,保证并发

第九章 高级

9.1、序

一、含

序列是Oracle数据库中特有的,使用序列可以生成类似于 auto_increment 这种ID自动增长 1,2,3,4,5… 的

create sequence 序列

start with 从几开

increment by 每次增长多

[maxvalue 最大值] | nomaxvalu

[minvalue 最小值] | nominvalu

cycle | nocycle –是否自动循

[cache 缓存数量] | nocache

三、演

–创建

create sequence auto_increment_se

start with

increment by

nomaxvalu

minvalue

nocycl

cache 10000

–调用

select auto_increment_seq.nextval from dual

select auto_increment_seq.currval from dual

9.2、PLSQL编

9.2.1、格

declar

–声明变

begi

–业务逻

9.2.2、变

declar

–声明变

— 格式一:变量名 变量类型

— 格式二:变量名 变量类型 := 初始值

— 格式三:变量名 变量类型 := &文本框名

— 格式四:变量名 表名.字段名%type

— 格式五:变量名 表名%rowtype

vnum number

vage number := 28

vabc number := &abc;–输入一个数值,从一个文本框输

vsal emp.sal%type; –引用型的变量,代表emp.sal的类

vrow emp%rowtype; –记录型的变量,代表emp一行的类型

begi

–业务逻

dbms_output.put_line(vnum); –输出一个未赋值的变

dbms_output.put_line(vage); –输出一个已赋值的变

dbms_output.put_line(vabc); –输出一个文本框输入的变

select sal into vsal from emp where empno = 7654; –将查询到的sal内容存入vsal并输

dbms_output.put_line(vsal)

select * into vrow from emp where empno = 7654; –将查询到的一行内容存入vrow并输出

dbms_output.put_line(vrow.sal)

dbms_output.put_line(123); –输出一个整

dbms_output.put_line(123.456); –输出一个小数

dbms_output.put_line(‘Hello,World’); –输出一个字符

dbms_output.put_line(‘Hello’||’,World’); –输出一个拼接的字符串,||拼接符Oracle特

dbms_output.put_line(concat(‘Hello’,’,World’)); –输出一个拼接的字符串,concat函数比较通

end

9.2.3、if判

一、语

if 条件1 th

elsif 条件2 the

else

end if

二、演

decla

age number := &age

begi

if age < 18 the

dbms_output.put_line(‘小屁孩’)

elsif age >= 18 and age

Original: https://blog.csdn.net/RzhenDwo/article/details/127214194
Author: csde.L
Title: 科普数据库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/659838/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球