SlideShare a Scribd company logo
Oracle 12c SQL New
Features
Emrah Mete
Senior DWH&BI Specialist
Board member of troug
Oracle cloud day - 19.11.2015TROUG
Emrah mete
- Yıldız Teknik Üniversitesi – Bilgisayar Mühendisliği
- Deneyim
- Software Developement Specialist @Turkcell
- Senior BI Consultant @i2i-Systems
- Senior BI Speacilist @HititCs
- Teknik Uzmanlık
- 5+ Oracle SQL, Oracle PL/SQL, ETL, DWH, BI
- Kurucu Üye ve Yönetim Kurulu Üyesi @TROUG
- Moderatör @OracleTurk
- Blogger
- https://emrahmete.wordpress.com/ (Türkçe)
- https://emrahmeteen.wordpress.com/ (İngilizce)
- Oracle Certified SQL Expert
- Oracle Database Developer Choice Awards, SQL Category 2015 Winner!!!
https://emrahmete.wordpress.com/about/
https://emrahmete.wordpress.com/about/
LiveSQL!!!
https://livesql.oracle.com
1.
Top-N Queries
select * from
(select * from
hr.employees
order by salary desc)
where rownum<=3;
select * from hr.employees
order by salary desc
fetch first 3 rows only;
Before 12c 12c
Employees tablosunda maaşı en yüksek olan 3 kişiyi
listeleyelim.
select * from
(select * from
(select * from
(select * from
hr.employees
order by salary desc)
where rownum<=7)
order by salary asc)
where rownum=1;
select * from
hr.employees
order by salary desc
offset 6 rows
fetch first 1 rows only;
Before 12c 12c
Employees tablosunda maaşı en yüksek olan 7. kişiyi
listeleyelim.
select * from
hr.employees
order by salary desc
fetch first 20 percent rows only;
12c
Employees tablosunda maaşı en yüksek olan %20’lik çalışan
grubunu listeleyelim
2.
Identıty columns
- Trigger tabanlı çözüm.
- Bir tablo yarat.
- bir sequence yarat.
- tabloya, ınsert isleminden once çalışacak bır
trıgger tanımla ve bu tırgger ıcınde, yarattıgın sequence’ı
her yenı ınsert’de bir arttırak yenı gelen kaydın ılgılı
kolonuna yaz.
Before 12c
ID kolonu otomatik artan bir tablo yaratalım.
CREATE TABLE TABTEST (
tabpk NUMBER GENERATED ALWAYS AS IDENTITY,
tabname VARCHAR2(50),
tabprop NUMBER,
tabadd VARCHAR2(50)
);
12c
ID kolonu otomatik artan bir tablo yaratalım.
CREATE TABLE TABTEST
(
tabpk NUMBER GENERATED ALWAYS AS IDENTITY
(START WITH 1 INCREMENT BY 5),
tabname VARCHAR2(50),
tabprop NUMBER,
tabadd VARCHAR2(50)
);
12c
Otomatık artan kolonumuzu tetıkleyen sequence’ı
özellestırebılırmıyız?
3.
Approx_Count_Distinct
Kayıt Sayısı: 2M
Distinct satır sayısı: 900K
select
approx_count_distinct(groupno)
from appxcnt;
çalışma süresi : 3.001 sn
sonuç : 867.159
Kayıt Sayısı: 2M
Distinct satır sayısı: 900K
Select
count(dıstınct groupno)
from appxcnt;
çalışma süresi : 8.275 sn
sonuç : 900.000
Approx_count_dıstınctCOUNT(DISTINCT)
Approx_count_dıstınct vs count(dıstınct) performans
karşılaştırması?
4.
JSON SUPPORT
CREATE TABLE applicationLog
(
appId NUMBER,
appName VARCHAR2(30),
appLog CLOB,
CONSTRAINT applicationLogCons CHECK (appLog IS JSON)
);
12c
JSON deger tutabilen kolonu olan bır tablo yaratalım
insert into applicationLog values (1,'WebContent',
'{
"ad" : "veli",
"soyad" : "mert",
"tckn" : "147456741232",
"adres" : { "ilce" :"Uskudar",
"sokak" :"Lider",
"numara" :"568",
"il" :"Istanbul"}
}‘
);
12c
Yarattıgımız tabloya ıcerısınde json ıfade barındıran bır
kayıt ekleyelım
select *
from applicationLog t1
where t1.applog.ad='veli';
12c
Json deger ıceren kolonunda, ad elementı «veli» olan
kayıtları lısteleyelım
select
JSON_VALUE(t1.appLog, '$.ad') AS isim,
JSON_VALUE(t1.appLog, '$.soyad') AS soyisim,
JSON_VALUE(t1.appLog, '$.tckn') AS tckimlik
from applicationLog t1;
12c
Json deger ıceren kolonumuzdakı tum AD, SOYAD, TCKN
degerlerını lısteleyelım
- JSON_EXIST
- JSON_QUERY
- JSON_TABLE
- JSON_TEXTCONTAINS
- IS JSON
12c
Dıger JSON fonksyonları
5.
Inline Procedures/Functions
WITH
FUNCTION square(p_x NUMBER) RETURN NUMBER AS
BEGIN
RETURN p_x*p_x;
END;
SELECT square(10) FROM dual;
12c
Inlıne procedures/functıons
6.
LATERAL Inline Views
select dx.first_name, dx.last_name, d.department_name
from hr.departments d,
(select * from hr.employees e where
e.department_id = d.department_id) dx;
12c before
select dx.first_name, dx.last_name, d.department_name
from hr.departments d,
LATERAL(select * from hr.employees e where
e.department_id = d.department_id) dx;
12c
7.
CROSS APPLY / OUTER APPLY
SELECT department_name,first_name
FROM hr.departments d
CROSS APPLY
(SELECT first_name
FROM hr.employees e
WHERE e.department_id = d.department_id);
12c CROSS APPLY
SELECT department_name,first_name
FROM hr.departments d
OUTER APPLY
(SELECT first_name
FROM hr.employees e
where e.department_id = d.department_id);
12c OUTER APPLY
8.
Pattern matchıng
– Finansal Uygulamalarda.
– Ürün fiyatlarının zamana karşı değişimini incelemede.
– Hisse senetlerinin zamana karşı değişmilerini takip edip aksiyon
almada.
– Güvenlik uygulamalarında sıra dışı hareketleri tesbit edip aksiyon
almada.
– Fraud tesbitlerinde.
– Sensörlerden gelen verinin zamansal olarak incelenmesinde.
– Complex Event Processing ihtiyacının doğduğu yerlerde.
12c Pattern Matchıng
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
Emrah METE - Oracle Cloud Day 2015 12c SQL New Features
9.
INVISIBLE COLUMN
CREATE TABLE invColExm
(
colA NUMBER,
colB NUMBER INVISIBLE,
colC VARCHAR2 (100)
);
- SELECT * FROM invColExm;
- DESC invColExm;
- %ROWTYPE ile referans gösterilen
tabloda invisible kolona erişilemez
buradada görünmezdir.
- INSERT INTO invColExm (colA, colB,
colC)
VALUES (12, 10, ‘Deneme’);
- UPDATE invColExm
SET colB = 20;
- DELETE invColExm
WHERE colB = 20;
- ALTER TABLE invColExm
MODIFY colB VISIBLE;
INVISIBLE COLUMNS
10.
Truncate cascade
truncate table t3;
TRUNCATE CASCADE
T1
T2
T3
T3.x
T2.y
T2.b
T1.a
truncate table t3 cascade;
12c Before
12c
tesekkurler!
Sorular?
@emrahmete (twitter)
emrahmete@gmail.com
https://emrahmete.wordpress.com
https://docs.oracle.com/database/121/SQLRF/toc.htm
https://oracle-base.com/
http://antognini.ch/2014/10/the-approx_count_distinct-function-a-test-case/
https://docs.oracle.com/database/121/ADXDB/json.htm
http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/1965433.pdf
https://jonathanlewis.wordpress.com/2013/07/01/12c-determinism/
http://www.oracle.com/technetwork/database/features/plsql/new-plsql-in-12c-2372822.pdf
Referanslar

More Related Content

PDF
Oracle veritabanı yonetiminde onemli teknikler
PDF
Oracle Database and Technologies Seminar
PPTX
Oracle'da Transaction Yönetimi
PDF
Oracle veritabani performans kontrol listesi
PDF
Oracle Audit Vault & Database Vault
PPTX
Opti̇mi̇zi̇ng Data Access
PPTX
Analytical Functions for DWH
PPTX
Useful Features of Oracle SQL Developer
Oracle veritabanı yonetiminde onemli teknikler
Oracle Database and Technologies Seminar
Oracle'da Transaction Yönetimi
Oracle veritabani performans kontrol listesi
Oracle Audit Vault & Database Vault
Opti̇mi̇zi̇ng Data Access
Analytical Functions for DWH
Useful Features of Oracle SQL Developer

Viewers also liked (15)

PPTX
Oracle’ın parallel execution yetenekleri ve performans
PPTX
Oracle PL/SQL Best Practices
PPTX
Veri Ambarları için Oracle'ın Analitik SQL Desteği
PPSX
Oracle Cloud As Services
PPTX
Bigdata : Big picture
PDF
The Top 12 Features new to Oracle 12c
PPTX
Why Upgrade to Oracle Database 12c?
PDF
GNW01: In-Memory Processing for Databases
PPTX
Top 10 Reasons Events Are the Best B2B Marketing Channel in the World
PDF
Gluent New World #02 - SQL-on-Hadoop : A bit of History, Current State-of-the...
PPTX
Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...
PPSX
Oracle database 12c new features
PPTX
Oracle database 12c new features
PDF
Oracle Enterprise Manager Cloud Control 12c
PPTX
Best New Features of Oracle Database 12c
Oracle’ın parallel execution yetenekleri ve performans
Oracle PL/SQL Best Practices
Veri Ambarları için Oracle'ın Analitik SQL Desteği
Oracle Cloud As Services
Bigdata : Big picture
The Top 12 Features new to Oracle 12c
Why Upgrade to Oracle Database 12c?
GNW01: In-Memory Processing for Databases
Top 10 Reasons Events Are the Best B2B Marketing Channel in the World
Gluent New World #02 - SQL-on-Hadoop : A bit of History, Current State-of-the...
Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...
Oracle database 12c new features
Oracle database 12c new features
Oracle Enterprise Manager Cloud Control 12c
Best New Features of Oracle Database 12c
Ad

Similar to Emrah METE - Oracle Cloud Day 2015 12c SQL New Features (20)

PDF
Sql indir
PPT
Java EE Struts
PDF
Sql proje
PDF
Sql teknikeri
PDF
Sql teknigi
PDF
Sql kursu-taksim
PPT
Csharp 3.0
PDF
Spring Framework
PDF
Sql 2018
PDF
Sql egitimi-taksim
PDF
Sql video
PDF
Sql egitimi-cekmekoy
PDF
Sql egitimi-besiktas
PDF
Sql odev-sitesi
PPTX
Asp.net ajax
PDF
Sql kursu-kadikoy
PDF
Sql gorsel-egitim-seti
PDF
Sql cizimi
PDF
Sql egitim
PDF
Sql egitimi-fatih
Sql indir
Java EE Struts
Sql proje
Sql teknikeri
Sql teknigi
Sql kursu-taksim
Csharp 3.0
Spring Framework
Sql 2018
Sql egitimi-taksim
Sql video
Sql egitimi-cekmekoy
Sql egitimi-besiktas
Sql odev-sitesi
Asp.net ajax
Sql kursu-kadikoy
Sql gorsel-egitim-seti
Sql cizimi
Sql egitim
Sql egitimi-fatih
Ad

Emrah METE - Oracle Cloud Day 2015 12c SQL New Features