Oracle数据库语句大全
ORACLE支持五种类型的完整性约束 NOT NULL(非空)--防止NULL进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL. CHECK(检查)--检查在约束中指定的条件是否得到了满足. UNIQUE(唯一)--保证在指定的列中没有重复.在该表中每一个或者每一组
ORACLE支持五种类型的完整性约束
NOT NULL(非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.
CHECK(检查)--检查在约束中指定的条件是否得到了满足.
UNIQUE(唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.
PRIMARY KEY(主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.
POREIGN KEY(外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.ORACLE支持五种类型的完整性约束
NOT NULL(非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.
CHECK(检查)--检查在约束中指定的条件是否得到了满足.
UNIQUE(唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.
PRIMARY KEY(主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.
POREIGN KEY(外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.
1--设置每行显示多少字符
2 设置每页显示多少条记录 set pagesize 30;
3 用户名的切换: 如 connsystem/tiger
Conn sys/change_on_install as sysdba(注意超级用户在后面加as sysdba)
4 在超级用户下查找普通用户的表是查不到的必须这样查找
5 查看当前是那个用户身份登录: show user;
6 查看有多少张表: select * fromtab;(注意不同用户下的表是不同的)
7查看表的结构: desc emp(emp为表名)
8 取出重复的列(DISTINCT): 如 SELECTDISTINCT
9字符串的链接操作用:
10 查询有奖金的员工: select* from emp where comm is notnull;
11 查询没有奖金的员工信息: select * from emp where comm isnull;
12 两个条件以上就得用and如查询工资大雨1500和有奖金的员工 select * from empwhere
13 表示两个条件有一个满足就可就用:or如查询工资大于1500或者没有奖金的员工信息
Select * from emp where sal>1500 or comm is notnull;
14取反可以用not 如查询员工工资不大于1500和有奖金的员工信息 如:
15在什么什么之间用between----and----如查询工资在1500和3000之间的员工信息:
Select * from emp
16
Select * from emp where empno in(2323,4555,2222);
17.l模糊查询
Select * from emp where ename LIKE '_M%';
又如姓名中包含M的员工
18oracle中不等于有两种表示方式""和"!="
19 排序用order by {ascdesc}其中asc 是升序排列如果不写就默认按升序排列desc是按降序排列
Select * from emp order by sal asc(升序)
Selecct * from emp order by saldesc(降序)
Select * from emp where deptno='10' order by saldesc,hiredateasc;(查询部门10的员工工资的升序排列如果工资相等就按员工的入职时间排序)
20.group by 用于对查询的结果进行分组统计:显示每个部门的平均工资和最高工资
Select avg(sal),max(sal) from emp group by deptno;
Having
如:select avg(sal), deptno from emp group by deptnohaving avg(sal)>2000;
2. 单行函数:
1 小写变大写: upper 如 select * fromemp where ename=upper('smith');
讲一个字符串变为小写字母表示 如:
将单词的首字母变大写 用 INITCAP 如: SELECTINITCAP('HELLO WORLD') FROM DUAL;
2.字符串的操作
3数值函数
四舍五入: round();
截断小数位:trunc();
一.入门部分
1.
create tablespace schooltbs datafile‘D:\oracle\datasource\schooltbs.dbf’ size 10M autoextend on;
2.
drop tablespace schooltbs[including contents and datafiles];
3.
select *||tablespace_name from DBA_TABLESPACES;
4.
create user
identified by lihua
default tablespace schooltbs
temporary tablespace temp;
5.
alter user lihua
identified by 123
default tablespace users;
6.
alter user lihua account lock|unlock;
7.
drop user lihua cascade;--删除用户模式
8.
connect,dba,select_catalog_role,delete_catalog_role,execute_catalog_role,exp_full_database,imp_full_database,resource
9.
grant connect to lihua;
10.授予使用表空间的角色
grant resource to lihua with grant option;--该用户也有授权的权限
11.授予操作表的权限
grant select,insert on user_tbl to scott;--当前用户
grant delete,update on lihua.user_tbl to scott;--系统管理员
12.修改表的结构(alter)
Alter table
二.SQL查询和SQL函数
1.SQl支持的命令:
数据定义语言(DDL):create,alter,drop
数据操纵语言(DML):insert,delete,update,select
数据控制语言(DCL):grant,revoke
事务控制语言(TCL):commit,savepoint,rollback
2.Oracle数据类型
字符,数值,日期,RAW,LOB
字符型
char:1-2000字节的定长字符
varchar2:1-4000字节的变长字符
long:2GB的变长字符
Long列不能定义唯一约束或主键约束
long列上不能创建索引
过程或存储过程不能接受long类型的参数。
数值型
number:最高精度38位
日期时间型
date:精确到ss
timestamp:秒值精确到小数点后6位
函数
sysdate,systimestamp返回系统当前日期,时间和时区。
更改时间的显示
alter session set nls_date_language=’american’;
alter session set nls_date_format=’yyyy-mm-dd’;
Oracle中的伪列
像一个表列,但没有存储在表中
伪列可以查询,但不能插入、更新和修改它们的值
常用的伪列:rowid和rownum
rowid:表中行的存储地址,可唯一标示数据库中的某一行,可以使用该列快速定位表中的行。
rownum:查询返回结果集中的行的序号,可以使用它来限制查询返回的行数。
3.数据定义语言
用于操作表的命令
create table
alter table
truncate table
drop table
修改表的命令
alter table stu_table rename to stu_tbl;--修改表名
alter table stu_tbl rename column stu_sex to sex;--修改列名
alter table stu_tbl add (stu_age number);--添加新列
alter table stu_tbl drop(sex);--删除列
alter table stu_tbl modify(stu_sex varchar2(2));--更改列的数据类型
alter table stu_tbl add constraint pk_stu_tbl primarykey(id);--添加约束
4.数据操纵语言
select,update,delete,insert
利用现有的表创建表
create table stu_tbl_log as select id,stu_name,stu_age fromstu_tbl;--
选择无重复的行
select distinct stu_name from stu_tbl;--
插入来自其他表中的记录
insert into stu_tbl_log select id,stu_name,stu_age fromstu_tbl;
5.数据控制语言
grant,revoke
6.事务控制语言
commit,savepoint,rollback
7.SQL操作符
算术操作符:L+-*/
比较操作符:L=,!=,,>,=,
逻辑操作符:Land,or,not
集合操作符:Lunion,union all,intersect,minus
连接操作符:L||
示例中stu_tbl_log中的数据如下:
---------- -------------------- ----------
stu_tbl中的数据如下:
---------- -------------------- -- ----------
示例:
select (3+2)/2 from dual;--算术操作符,结果:2.5
select * from stu_tbl where stu_age>=20;--比较操作符
select * from stu_tbl where stu_name like '%a%';--比较操作符:like
select * from stu_tbl where stu_name like 'a___';--比较操作符:like
select * from stu_tbl where stu_age in(20,30);--比较操作符:in
select * from stu_tbl where stu_age between 20 and30;--比较操作符:between
select stu_name from stu_tbl union all
select stu_name from stu_tbl_log;--集合操作符:union all,测试结果具体如下:
STU_NAME
-----------
李华
accp
admin
李华
accp
nimda
已选择6行。
select stu_name from stu_tbl union
select stu_name from stu_tbl_log;--集合操作符:union,测试结果具体如下:
STU_NAME
---------
accp
admin
nimda
李华
select stu_name from stu_tbl intersect
select stu_name from stu_tbl_log;--集合操作符:intersect,测试结具体如下:
STU_NAME
----------
accp
李华
select stu_name from stu_tbl minus
select stu_name from stu_tbl_log;--集合操作符:minus,测试结果如下:
STU_NAME
----------
Admin
从中可以看出:
minus是获取第一张表独有的数据
intersect是获取两张表中都有的数据
union是整合两张表的数据,都有的只显示一次
union all是纯粹的两张表数据整合
select id,stu_name||' '||stu_sex as name_sex,stu_age
from stu_tbl;--连接操作符||,测试结果具体如下:
---------- ----------------------- ----------
8.SQL函数
单行函数:从表中查询的每一行只返回一个值,可出现在select子句,where子句中
日期函数
数字函数
字符函数
转换函数:ToChar(),ToDate(),ToNumber()
其他函数:
Nvl(exp1,exp2):表达式一为null时,返回表达式二
Nvl2(exp1,exp2,exp3):表达式一为null时返回表达式三,否则返回表达式二
Nullif(exp1,exp2):两表达式相等时,返回null,否则返回表达式一
分组函数:基于一组行来返回
Avg,Min,Max,Sum,Count
Group by,having
分析函数
Row_number,rank,dense_rank
示例:
select u.user_name,sum(oi.order_num*oi.order_price) astotal,row_number() over (order by sum(oi.order_num*oi.order_price)desc) as sort from order_item_tbl
三.锁和数据库对象
1.锁:数据库用来控制共享资源并发访问的机制。
锁的类型:行级锁,表级锁
行级锁:对正在被修改的行进行锁定。行级锁也被称之为排他锁。
在使用下列语句时,Oracle会自动应用行级锁:
insert,update,delete,select…… for update
select……for update允许用户一次锁定多条记录进行更新。
使用commit or rollback释放锁。
表级锁:
lock table user_tbl in mode mode;
表级锁类型:
行共享 row share
行排他 row exclusive
共享 share
共享行排他 share row exclusive
排他 exclusive
死锁:两个或两个以上的事务相互等待对方释放资源,从而形成死锁
2.数据库对象
oracle数据库对象又称模式对象
数据库对象是逻辑结构的集合,最基本的数据库对象是表
数据库对象:
表,序列,视图,索引
序列
用于生成唯一,连续序号的对象。
创建语法:
create sequence user_id_seq
start with 1000
increment by 1
maxvalue 2000
minvalue 1000
nocycle
cache 1000;--指定内存中预先分配的序号
访问序列:
select user_id_seq.currval from dual;
select user_id-seq.nextval from dual;
更改删除序列:
alter sequence user_id_seq maxvalue 10000;--不能修改其start with 值
drop sequence user_id_seq;
在Hibernate中访问序列:
user_id_seq
视图
以经过定制的方式显示来自一个或多个表的数据
创建视图:
create or replace view
user_tbl_view (vid,vname,vage)
as select id,user_name,age from user_tbl
[with check option]|[with read only];
创建带有错误的视图:
create force view user_tbl_force_view as
select * from user_table;--此时user_table可以不存在
创建外联接视图:
create view user_stu_view as
select u.id,u.user_name,u.password,s.ddress
from user_tbl u,stu_tbl s
where u.s_id(+)=s.id;--哪一方带有(+),哪一方就是次要的
删除视图:
drop user_stu_view;
索引
用于提高SQL语句执行的性能
索引类型:
唯一索引,位图索引,组合索引,基于函数的索引,反向键索引
创建标准索引:
create index user_id_index on user_tbl(id) tablespaceschooltbs;
重建索引:
alter index user_id_index rebuild;
删除索引:
drop index user_id_index;
创建唯一索引:
create unique index user_id_index on user_tbl(id);
创建组合索引:
create index name_pass_index on user_tbl(user_name,password);
创建反向键索引:
create index user_id_index on user_tbl(id) reverse;
四.使用PL/SQL
可用于创建存储过程,触发器,程序包,给SQL语句的执行添加程序逻辑。
支持SQL,在PL/SQL中可以使用:
数据操纵命令
事务控制命令
游标控制
SQL函数和SQL运算符
支持面向对象编程(OOP)
可移植性
更佳的性能,PL/SQL经过编译执行
分为三个部分:声明部分,可执行部分和异常处理部分
[declare
declarations]
begin
executable statements
[exception
handlers]
end;
打开输出
set serverout on;
--根据输入编号获取某学员的成绩--if
declare
score user_tbl.score%type;
begin
select score into score from user_tbl where id='&id';
if score>90 then
dbms_output.put_line('优秀');
elsif score>80 then
dbms_output.put_line('良好');
elsif score>60 then
dbms_output.put_line('及格');
else
dbms_output.put_line('差');
end if;
end;
--根据学员姓名获取某学员的成绩--if
declare
score user_tbl.score%type;
begin
select score into score from user_tbl whereuser_name='&name';
if score>90 then
dbms_output.put_line('优秀');
elsif score>80 then
dbms_output.put_line('良好');
elsif score>60 then
dbms_output.put_line('及格');
else
dbms_output.put_line('差');
end if;
end;
--case的使用
declare
grade user_tbl.grade%type;
begin
select grade into grade from user_tbl where id='&id';
case grade
when 'A' then dbms_output.put_line('优异');
when 'B' then dbms_output.put_line('优秀');
when 'C' then dbms_output.put_line('良好');
else dbms_output.put_line('一般');
end case;
end;
--基本循环
declare
i number(4):=1;
begin
loop
dbms_output.put_line('loop size:'||i);
i:=i+1;
exit when i>10;
end loop;
end;
--while循环
declare
i number(4):=1;
begin
while i
dbms_output.put_line('while loop size='||i);
i:=i+1;
end loop;
end;
--for循环
declare
i number(4):=1;
begin
for i in 1..10 loop
dbms_output.put_line('for loop Size:'||i);
end loop;
end;
declare
i number(2):=1;
j number(2):=1;
begin
for i in reverse 1..9 loop
for j in 1..i loop
dbms_output.put(j||'x'||i||'='||j*i||' ');
end loop;
dbms_output.put_line('');
end loop;
end;
--动态SQL
declare
userId number(2);
sql_str varchar2(100);
userName user_tbl.user_name%type;
begin
execute immediate 'create table testExe(id number,test_namevarchar2(20))';
userId:='&userId';
sql_str:='select user_name from user_tbl where id=:id';
execute immediate sql_str into userName using userId;
dbms_output.put_line(userName);
end;
(or
declare
)
--异常处理
declare
grade number(4);
begin
grade:='&grade';
case grade
when 1 then dbms_output.put_line('好的');
--else dbms_output.put_line('不好');
end case;
exception
when case_not_found then
dbms_output.put_line('输入类型不匹配!');
end;
--系统异常
declare
rowD user_tbl%rowtype;
begin
select * into rowD from user_tbl;
dbms_output.put_line(rowD.id||''||rowD.user_name||''||rowD.password);
exception
when too_many_rows then
dbms_output.put_line('不能将多行赋予一个属性!');
end;
or
declare
rowD user_tbl%rowtype;
begin
select * into rowD from user_tbl where id=5;
dbms_output.put_line(rowD.id||' '||rowD.user_name||''||rowD.password);
exception
when too_many_rows then
dbms_output.put_line('不能将多行赋予一个属性!');
when no_data_found then
dbms_output.put_line('没有您要查找的数据!');
end;
--自定义错误
declare
invalidError exception;
category varchar2(20);
begin
category:='&category';
if category not in('附件','顶盘','备件') then
raise invalidError;
else
dbms_output.put_line('您输入的类别是:'||category);
end if;
exception
when invalidError then
dbms_output.put_line('无法识别的类别!');
end;
--引发应用程序异常
declare
app_exception exception;
grade user_tbl.grade%type;
begin
select grade into grade from user_tbl whereid=&id;
if grade='A' then
raise app_exception;
else
dbms_output.put_line('查询的等级为:'||grade);
end if;
exception
when app_exception then
raise_application_error(-20001,'未知的等级!');
end;
五、游标管理
游标类型:隐式游标,显式游标,REF游标
REF游标用于处理运行时才能确定的动态SQL查询的结果
==========隐式游标==========
在PL/SQL中使用DML语句时自动创建隐式游标
隐式游标自动声明、打开和关闭,其名为SQL
隐式游标的属性:
%found
%notfound
%rowcount
%isopen
示例:
begin
update user_tbl set score=score+5;
if SQL%found then
elsif sql%notfound then
end if;
if SQL%isopen then
else
end if;
end;
==========显式游标==========
在PL/SQL的声明部分定义查询,该查询可以返回多行
J
J
J
J
声明游标完成两个任务:
给游标命名
将一个查询与游标关联
cursor cursor_name is select statement;
打开游标:
取数据:
关闭游标:
显式游标的属性:
%found
%notfound
%rowcount
%isopen
示例:
declare
users user_tbl%rowtype;
cursor boys_cur is select * from user_tbl where sex='h';
begin
open boys_cur;
loop
fetch boys_cur into users;
exit when boys_cur%notfound;
dbms_output.put_line(users.user_name||'
dbms_output.put_line(boys_cur%rowcount);
end loop;
close boys_cur;
end;
带参的显式游标
declare
users user_tbl%rowtype;
cursor boys_cur(sexParam varchar2)
is select * from user_tbl where sex=sexParam;
begin
open boys_cur('&sex');
loop
fetch boys_cur into users;
exit when boys_cur%notfound;
dbms_output.put_line(users.user_name||'
dbms_output.put_line(boys_cur%rowcount);
end loop;
close boys_cur;
end;
使用显式游标更新行
declare
cursor user_update_cur is select sex from user_tbl forupdate;
usersex user_tbl.sex%type;
begin
open user_update_cur;
loop
fetch user_update_cur into usersex;
exit when user_update_cur%notfound;
dbms_output.put_line(usersex);
if usersex = 'M' then
else
end if;
end loop;
close user_update_cur;
commit;
end;
循环游标
declare
cursor user_cur is select * from user_tbl;
begin
for username in user_cur loop
end loop;
end;
==========REF游标==========
REF游标和游标变量用于处理运行时动态执行的SQL查询
创建游标变量的步骤:
J
J
声明类型的语法
Type ref_cursor_name is ref cursor [return return_type];
打开游标变量的语法
Open cursor_name for select_statement;
----声明强类型的游标
declare
type ref_cur is ref cursor return user_tbl%rowtype;
users_cur ref_cur;
----声明弱类型的游标
declare
type ref_cur is ref cursor;
users_cur ref_cur;
示例
----强类型
declare
type ref_cur is ref cursor return user_tbl%rowtype;
users_cur ref_cur;
users user_tbl%rowtype;
begin
open users_cur for select * from user_tbl whereuser_name='ny2t92';
loop
end loop;
close users_cur;
end;
----弱类型
declare
type ref_cur is ref cursor;
my_cur ref_cur;
users user_tbl%rowtype;
stus stu_tbl%rowtype;
begin
open my_cur for select * from user_tbl;
loop
end loop;
close my_cur;
open my_cur for select * from user_tbl whereuser_name='ny2t92';
loop
end loop;
close my_cur;
open my_cur for select * from stu_tbl;
loop
fetch my_cur into stus;
exit when my_cur%notfound;
dbms_output.put_line(stus.stu_Name);
end loop;
close my_cur;
end;
----动态SQL游标
declare
type ref_cur is ref cursor;
my_cur ref_cur;
users user_tbl%rowtype;
username varchar2(20);
sqlstmt varchar2(200);
begin
username:='&username';
sqlstmt := 'select * from user_tbl where user_name= :name';
open my_cur for sqlstmt using username;
loop
end loop;
close my_cur;
end;
六.子程序
子程序分为:存储过程和函数,它是命名的PL/SQL块,编译并存储在数据库中。
子程序的各个部分:声明部分,可执行部分,异常处理部分。
过程----执行某些操作
函数----执行操作并返回值
==========存储过程==========
创建过程的语法:
create or replace procedure
proce_name (parameter_list)
is|as
local variable declaration
begin
executable statements
exception
exception_handlers
end proce_name;
过程参数的三种模式:
In----用于接收调用的值,默认的参数模式
Out----用于向调用程序返回值
In out----用于接收调用程序的值,并向调用程序返回更新的值
执行过程的语法:
Execute proce_name(parameter_list);
或
Declare
Variable var_list;
Begin
Proce_name(var_list);
End;
将过程执行的权限授予其他用户:
Grant execute on proce_name to scott;
Grant execute on proce_name to public;
删除存储过程:
Drop procedure proce_name;
==========函数==========
创建函数的语法:
Create or replace function
Fun_name (parameter_list)
Return datatype is|as
Local declarations
Begin
Executable statements;
Return result;
Exception
Exce_handlers;
End;
函数只能接收in参数,不能接受out或in out参数,形参不能是PL/SQL类型
函数的返回类型也必须是数据库类型
访问函数的方式:
J
J
Select fun_name(parameter_list) from dual;

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tempoh pengekalan log pangkalan data Oracle bergantung pada jenis log dan konfigurasi, termasuk: Buat semula log: ditentukan oleh saiz maksimum yang dikonfigurasikan dengan parameter "LOG_ARCHIVE_DEST". Log buat semula yang diarkibkan: Ditentukan oleh saiz maksimum yang dikonfigurasikan oleh parameter "DB_RECOVERY_FILE_DEST_SIZE". Log buat semula dalam talian: tidak diarkibkan, hilang apabila pangkalan data dimulakan semula dan tempoh pengekalan adalah konsisten dengan masa berjalan contoh. Log audit: Dikonfigurasikan oleh parameter "AUDIT_TRAIL", dikekalkan selama 30 hari secara lalai.

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle: Pemproses: berbilang teras, dengan frekuensi utama sekurang-kurangnya 2.5 GHz Untuk pangkalan data yang besar, 32 teras atau lebih disyorkan. Memori: Sekurang-kurangnya 8GB untuk pangkalan data kecil, 16-64GB untuk saiz sederhana, sehingga 512GB atau lebih untuk pangkalan data yang besar atau beban kerja yang berat. Storan: Cakera SSD atau NVMe, tatasusunan RAID untuk lebihan dan prestasi. Rangkaian: Rangkaian berkelajuan tinggi (10GbE atau lebih tinggi), kad rangkaian khusus, rangkaian kependaman rendah. Lain-lain: Bekalan kuasa yang stabil, komponen berlebihan, sistem pengendalian dan perisian yang serasi, pelesapan haba dan sistem penyejukan.

Jumlah memori yang diperlukan oleh Oracle bergantung pada saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan: untuk menyimpan penimbal data, penimbal indeks, melaksanakan pernyataan SQL dan mengurus cache kamus data. Jumlah yang tepat dipengaruhi oleh saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan. Amalan terbaik termasuk menetapkan saiz SGA yang sesuai, saiz komponen SGA, menggunakan AMM dan memantau penggunaan memori.

Untuk mencipta tugas berjadual dalam Oracle yang dilaksanakan sekali sehari, anda perlu melakukan tiga langkah berikut: Buat kerja. Tambahkan subkerja pada kerja dan tetapkan ungkapan jadualnya kepada "INTERVAL 1 HARI". Dayakan kerja.

Jumlah memori yang diperlukan untuk pangkalan data Oracle bergantung pada saiz pangkalan data, jenis beban kerja dan bilangan pengguna serentak. Cadangan am: Pangkalan data kecil: 16-32 GB, Pangkalan data sederhana: 32-64 GB, Pangkalan data besar: 64 GB atau lebih. Faktor lain yang perlu dipertimbangkan termasuk versi pangkalan data, pilihan pengoptimuman memori, virtualisasi dan amalan terbaik (pantau penggunaan memori, laraskan peruntukan).

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Pendengar Oracle digunakan untuk mengurus permintaan sambungan klien. Langkah permulaan termasuk: Log masuk ke contoh Oracle. Cari konfigurasi pendengar. Gunakan perintah mula lsnrctl untuk memulakan pendengar. Gunakan perintah status lsnrctl untuk mengesahkan permulaan.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah
