Chris Saxon
chrisrsaxon.bsky.social
Chris Saxon
@chrisrsaxon.bsky.social
Oracle Developer Advocate for SQL. Lover of quizzes and games of all kinds. Any views expressed belong to me.

chrissaxon.co.uk
Expressing rules as nested NOT EXISTS is tricky to do and understand

There’s new

ALL ( <query> )
SATIFY ( <query> )

To simplify this
November 19, 2025 at 8:45 AM
There’s a new enqueue to manage concurrency
November 19, 2025 at 8:35 AM
This does incremental validation of DML that could violate the assertion
November 19, 2025 at 8:31 AM
Coming in Oracle AI Database

#SQL assertions

These enable you to create cross row, cross table constraints with SQL standard syntax

CREATE ASSERTION … CHECK (
[ NOT ] EXISTS ( )
)

@toonkoppelaars.bsky.social explains at #DOAG2025
November 19, 2025 at 8:23 AM
freesql.com gives free access to an Oracle AI Database schema

You can connect to it from VS Code or any other client with SQL*Net

#DOAG2025
November 18, 2025 at 10:38 AM
APEXlang is an open application specification language coming for #orclAPEX

This human readable syntax is simple to validate and manage with source control

Mike Hichwa explains how it works at #DOAG2025
November 18, 2025 at 10:20 AM
Oracle AI Database is one Database that supports all data types

You can access the same data as relational tables, #JSON objects, or graph queries

Hasan Rizvi explains at #DOAG2025
November 18, 2025 at 9:11 AM
Yesterday's #SQuizL was tricky for many, the solution was

SELECT emperor FROM japan AS OF PERIOD FOR meiji_era DATE '1868-10-23'

This uses the temporal period meiji_era to find rows active on the date passed

Today's seems challenging too - can you guess it?

devgym.oracle.com/pls/apex/f?p...
October 24, 2025 at 12:36 PM
The #SQL analysis report in Oracle AI Database 26ai shows potential problems in a query

Cartesian products
UNION
Non sargable filters (can’t use indexes)

You can use this to find queries in the cursor cache which you may be able to improve
October 16, 2025 at 5:31 PM
Run natural language queries against Oracle AI Database with

SELECT AI

e.g.

SELECT AI what are the top 10 movies

Michelle Malcher demos and gives example use cases for it #AIWorld
October 16, 2025 at 4:21 PM
Get your desks of #SQL tips at #AIWorld from the swag-as-a-service or Oracle AI Database booths
October 14, 2025 at 4:50 PM
Lots struggled with yesterday's #SQuizL!

Recognizing the first transaction on the Helsinki stock exchange, the solution was

SET TRANSACTION READ WRITE NAME q'[Helsinki Stock Exchange]'

This names the db transaction

Can you guess today's statement from the clue?

devgym.oracle.com/pls/apex/f?p...
October 8, 2025 at 9:34 AM
In this month's SQL Ask TOM Live session, Ric Van Dyke is joining me to discuss how to

Use the WITH clause
Optimize #SQL queries using WITH

Join us at Tues 21ct Oct, 2pm UK time asktom.oracle.com/ords/r/tech/...
October 7, 2025 at 2:29 PM
#SQL is second in the IEEE Top Programming Languages for jobs in 2025

Good going for a language that's over 50 years old!

spectrum.ieee.org/top-programm...
September 24, 2025 at 2:42 PM
Oracle Database 23ai added direct join syntax for updates

UPDATE t1
SET t1.col = t2.col
FROM t2
WHERE

My latest post looks at this and other methods for updating one table from another

Update only merge
Updating a query
Correlated subquery update

blogs.oracle.com/sql/post/how...
September 16, 2025 at 10:03 AM
Happy Birthday #SQuizL!

The daily Wordle-style guess the SQL statement quiz turns 2 today

We hope it makes for a fun way to learn Oracle #SQL syntax

Big thanks to Eli Feuerstein for building it

Play today at devgym.oracle.com/pls/apex/f?p...
September 11, 2025 at 12:26 PM
A summary of the key commands for SQLcl project #poug2025
September 6, 2025 at 7:43 AM
Oracle SQLcl project is a tool for managing deployments of database objects and APEX apps

Rafal Grzegorczyk showing us how to use it to move changes from dev->test->prod

#poug2025
September 6, 2025 at 7:37 AM
Just noticed that IF [NOT] EXISTS made it into 19.28 too

HT @ilmarkerm.eu
August 1, 2025 at 10:20 AM
With all the new stuff in the 23ai RUs, it can be easy to overlook some cool changes in 19c such as

Schema annotations have been backported to 19.28

These enable you to add key-value metadata to describe tables, columns, and other database objects
August 1, 2025 at 9:01 AM
It can? Have you got a demo?

Disabling the transpiler reverts the behaviour from what I can see without changing the statement
July 31, 2025 at 11:29 AM
UUID functions

Generate version 4 UUIDs with the UUID function

Check whether a value is a valid UUID

SELECT UUID(), IS_UUID (...)
July 16, 2025 at 7:20 AM
Group by enhancements

Automatically place any unaggregated columns in the select into the group by clause

SELECT col1, col2, ...
FROM ..
GROUP BY ALL -- generates col1, col2
July 16, 2025 at 7:20 AM
Non-positional inserts

Assign column values in the SET clause for row-based inserts:

INSERT INTO … SET col1 = val1, col2 = val2, ...

Match columns from the source table to the target table in INSERT-SELECT by name rather than position with

INSERT INTO … BY NAME SELECT …
July 16, 2025 at 7:20 AM
To celebrate Spam's birthday, there is a lot of spam in today's #SQuizL

Can you find the #SQL statement hidden amongst all the spam?

devgym.oracle.com/pls/apex/f?p...
July 5, 2025 at 7:48 AM