Работая с базой данных более 1 года, у меня есть некоторый опыт, которым я могу поделиться с новичком в SQL Developer (PL / SQL). В этой статье я обобщу необходимые навыки, связанные с SQL (PL / SQL). Не только это, но я также предоставляю несколько частых сценариев, связанных с базой данных Oracle.

Что такое SQL?

Данные - это базовая часть новых современных приложений. Например, такое приложение, как Messenger, WhatApp хранит информацию о сообщениях пользователей, в том числе данные о сообщениях и изображениях их друзей. SQL (язык структурированных запросов) - это язык программирования, который позволяет разработчикам взаимодействовать с данными. Ниже перечислены несколько типов баз данных. В этой статье будет рассмотрено реляционная база данных.

Требовать знаний при работе с базой данных

База данных может быть представлена ​​в виде нескольких таблиц. Каждая таблица имеет свое количество столбцов и строк и представляет собой набор данных. На первом этапе Учебная страница представляет собой отличный пример ресурса для адаптации базовых знаний перед работой с базой данных. Некоторые ключевые слова ниже настоятельно рекомендуются:

  1. База данных SQL (CREATE DB, DROP DB, BACKUP DB,…)
  2. Таблица SQL (СОЗДАТЬ таблицу, Удалить таблицу, Изменить таблицу, Ограничения, Первичный ключ, Внешний ключ, Индекс, Разделы,…)
  3. синтаксис SQL (SELECT, FROM, DISTINCT,…)
  4. условие SQL (ГДЕ, И, ИЛИ, НЕ, СУЩЕСТВУЕТ, КАК, МЕЖДУ,…)
  5. Изменение данных SQL (INSERT, UPDATE, DELETE, TRUNCATE,…)
  6. SQL-соединения (JOINS, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN,…)
  7. оператор SQL (MIN, MAX, COUNT, AVG, SUM,…)

После одобрения этих определений у вас может быть достаточно фундамента для начала работы с базой данных. Следующим шагом я добавлю некоторый опыт работы с базой данных. Я выбрал базу данных Oracle, потому что хорошо ее использовал и испытал.

Общий сценарий SQL, часто используемый разработчиком в базе данных Oracle.

SQL-скрипт, связанный с изменением данных

  1. Вставить

Описание: этот оператор используется для вставки одной или нескольких записей в таблицу в Oracle.

Синтаксис

Оператор вставки при вставке отдельной записи с использованием ключевого слова VALUES:

INSERT INTO SCHEMA_NAME.TABLE_NAME (COL1, COL2, ... COL_N)
VALUES (EXPRESS1, EXPRESS2, ... EXPRESS_N);

Пример

INSERT INTO CLARK.SYS_USER (USERNAME, EMAIL, IDNO) 
VALUES ('USER_1', '[email protected], '12345');

Оператор вставки при вставке нескольких записей с использованием ключевого слова SELECT:

INSERT INTO SCHEMA_NAME.TABLE_NAME (COL1, COL2, .... COL_N)
SELECT EXPRESS1, EXPRESS2, ... EXPRESS_N
FROM SOURCE_TABLE
[WHERE CONDITIONS];

Пример

INSERT INTO CLARK.SYS_USER (USERNAME, EMAIL, IDNO)
SELECT USERNAME, EMAIL, IDNO
FROM TOMMY.SYS_USER
WHERE USERNAME LIKE '%TOM%';

2. Заявление об обновлении

Описание: мы используем для обновления существующей записи в таблице. Обычно я использую два синтаксиса для запросов на обновление в базе данных Oracle.

Синтаксис

Синтаксис оператора UPDATE при обновлении одной таблицы.

UPDATE SCHEMA_NAME.TABLE_NAME
SET COLUMN1 = EXPRESS1,
    COLUMN2 = EXPRESS2,
    COLUMN3 = EXPRESS3
[WHERE conditions];

Пример

UPDATE CLARK.SYS_USER
SET IDNO = 'FAMILY'
WHERE AGE < 18;

Когда мы обновляем данные, одна таблица с данными из другой таблицы:

UPDATE SCHEMA_NAME.TABLE_NAME
SET COLUMN1 = (SELECT EXPRESS1 
               FROM SCHEMA_NAME.TABLE_NAME2 
               WHERE condition)
[WHERE conditions];

Пример

UPDATE CLARK.SYS_USER
SET IDNO = (SELECT IDNO 
            FROM TOMMY.SYS_USER 
            WHERE AGE > 18);

3. УДАЛИТЬ заявление

Описание: Используем для удаления существующей записи в таблице.

Синтаксис

DELETE FROM SCHEMA_NAME.TABLE_NAME
[WHERE conditions];

ГДЕ условия Необязательно

Условия, которые должны быть выполнены для удаления записей. Если условия не указаны, то все записи из таблицы будут удалены;

Пример

DELETE FROM CLARK.SYS_USER
WHERE USERNAME = 'david_1208';

ЗАМЕТКА:

Убедитесь, что вы отметили номер, который будет удален. Использование оператора COUNT (1) перед удалением. Подтвердите несколько раз перед удалением, чтобы убедиться в правильности логики.

SELECT COUNT(1) 
FROM CLARK.SYS_USER
WHERE USERNAME = 'david_1208';

> Value return is 1. 
> After review everything is appropriate, I will execute DELETE statement.

4. Заявление TRUNCATE

Описание: используется для удаления всех записей в таблицах. Записи, удаленные таким образом, не могут быть восстановлены при откате. Оператор Truncate не может указывать на предложение WHERE.

Синтаксис

TRUNCATE TABLE SCHEMA_NAME.TABLE_NAME;

Пример

TRUNCATE TABLE CLARK.SYS_USER;

Ключевое слово SQL, связанное с производительностью

  1. Индекс

Описания: индексы - это специальные таблицы поиска, которые поисковая машина по базам данных использует для поиска данных. Вы можете взять Меню в книгах как иллюстрацию Указателя в базе данных.

Синтаксис

CREATE [UNIQUE] INDEX INDEX_NAME
ON SCHEMA_NAME.TABLE_NAME (COL1, COL2, ... COLN)
[COMPUTE STATISTICS];

ВЫЧИСЛИТЕЛЬНАЯ СТАТИСТИКА: должно быть оператором, он инструктирует базу данных Oracle собирать статистику во время создания индекса. Затем статистика используется оптимизатором для выбора наилучшего плана при выполнении операторов SQL.

Пример:

CREATE UNIQUE INDEX USER_USERNAME_INDEX
ON CLARK.SYS_USER (USERNAME)
COMPUTE STATISTICS;

В некоторых случаях индекс недействителен, нам нужно перестроить индекс, используя синтаксис ниже.

ALTER INDEX INDEX_NAME
REBUILD COMPUTE STATISTICS;

Пример

ALTER INDEX USER_USERNAME_INDEX
REBUILD COMPUTE STATISTICS;

2. Таблица с NOLOGGING

Описание: LOGGING / NOLOGGING помогает управлять созданием журналов REDO и UNDO. Это один из нескольких способов контролировать восстанавливаемость и производительность хрупкого баланса. Для получения дополнительной информации журналы REDO и UNDO.

В некоторых случаях у нас есть дневная таблица или временная таблица, используемая для расчета, и они удаляются каждый раз при запуске. Для увеличения производительности нам не нужно делать записи в журнал REDO.

Синтаксис

ALTER TABLE SCHEMA_NAME.TABLE_NAME NOLOGGING;

Пример

ALTER TABLE CLARK.COMMISSION_DAILY NOLOGGING;

3. Таблица с РАЗДЕЛАМИ

Описание. Разделение на разделы дает огромное преимущество широкому спектру приложений, улучшая производительность, управляемость и доступность. Использование разделов помогает приложению повысить производительность при выполнении определенных запросов.

Регулярно использую разделы в исторических данных. Исторические данные имеют гигантский объем данных (терабайт), я уже работал с данными размером до 1 миллиарда строк. Разделы очень эффективны для получения данных, определенных в базе данных.

Более подробно Parition Concept по прикрепленной ссылке.

Подробнее Создать раздел в Oracle.

4. Схема со статистикой

Описание: это набор данных, который описывает базу данных и объект в базе данных. Oracle использует статистику, чтобы выбрать наиболее оптимизированный план для каждого оператора SQL.

Для получения более подробной информации Статистика оптимизатора.

Синтаксис:

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS('SCHEM_NAME', DBMS_STATS.AUTO_SAMPLE_SIZE);

Пример:

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS('CLARK', DBMS_STATS.AUTO_SAMPLE_SIZE);

5. Использование представления материалов

Описание: Материальное представление (MV) в Oracle - это объект базы данных, содержащий результаты запроса. Данные хранилища MV, основанные на удаленных таблицах, также известны как моментальные снимки. MV может запрашивать таблицы, представления и другие материализованные представления. Хранение данных в MV доступно только для чтения. При изменении исходной таблицы мы должны обновлять данные в MV, обновлять новые данные в MV.

У вас сложный SQL-запрос при выполнении, это занимает несколько минут. Чтобы повысить производительность, мы создаем представление материала, а затем отправляем сложные SQL-запросы в MV. Данные будут кэшироваться в объекте базы данных. После этого данные могут быть легко извлечены из представления материала.

Синтаксис:

Создать нормальный вид материала

CREATE MATERIALIZED VIEW MV_NAME
REFRESH COMPLETE
AS [SELECT STATEMENT];

Пример:

CREATE MATERIALIZED VIEW MV_USER_AUDIT
REFRESH COMPLETE
AS SELECT * FROM CLARK.SYS_USER CSU JOIN TOMMY.SYS_USER TSU ON CSU.USERNAME = TSU.USERNAME;

Синтаксис:

Создание представления материалов для удаленной базы данных моментальных снимков

CREATE MATERIALIZED VIEW MV_NAME
REFRESH COMPLETE
WITH PRIMARY KEY
AS SELECT * FROM SCHEMA_NAME.TABLE_NAME@REMOTE_DB;

Пример:

CREATE MATERIALIZED VIEW MV_EMPLOYEE
REFRESH COMPLETE
AS SELECT * FROM CLARK.EMPLOYEE@APP_DB_LINK;

ПОЛОЖЕНИЕ ОБ ОБНОВЛЕНИИ

Существует 3 метода обновления режима: FAST, COMPLETE, FORCE.

  1. Метод БЫСТРОГО обновления:

FAST-обновления используют журналы материализованного представления для отправки строк, которые изменились из основных таблиц в материализованное представление.

Вы должны создать материализованный журнал представления для основных таблиц, если вы укажете предложение REFRESH FAST.

2. ПОЛНЫЙ метод обновления:

Полное обновление воссоздает все материализованное представление. Если вы запрашиваете полное обновление, Oracle выполняет полное обновление, даже если быстрое обновление возможно.

3. Метод принудительного обновления:

Когда вы указываете предложение FORCE, Oracle выполнит быстрое обновление, если оно возможно, или полное обновление в противном случае. Если вы не укажете метод обновления (FAST, COMPLETE или FORCE), по умолчанию будет использоваться FORCE.

SQL-скрипт, связанный с базой данных Oracle

  1. Синоним

Описание: синоним - это альтернативное имя для таких объектов, как таблицы, представления, последовательности, хранимые процедуры и другие объекты базы данных.

Обычно вы используете синонимы, когда предоставляете доступ к объекту из другой схемы и не хотите, чтобы пользователям приходилось беспокоиться о том, какая схема владеет объектом.

Мы часто используем синоним для повторного использования источников данных из других схем в базе данных. Для разработчиков нам не важен источник схемы, мы просто запрашиваем по синониму. Несмотря на изменение исходной схемы, имя синонима остается неизменным, DBadmin переключит исходную схему внутри синонима.

Синтаксис

CREATE OR REPLACE SYNONYM SCHEMA_NAME.SYNONYM_NAME 
FOR SCHEMA_NAME.OBJECT_NAME[@DBLINK];

Пример

CREATE OR REPLACE SYNONYM CLARK.TOM_USER FOR TOMMY.SYS_USER;

2. Убить сеанс

Описание: когда в сеансе возникла дилемма или выполнение процедуры сохранения заблокировано. Нам нужно убить сеансы заблокированным владельцем. Завершение сеанса предотвращает допуск производительности, освобождает неиспользуемый ресурс и снижает нагрузку на рабочий процесс на сервере базы данных.

Синтаксис

BEGIN
  FOR r IN (select sid,serial# from v$session where username = 'SCHEMA_NAME')
  LOOP
      EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid  || ',' 
        || r.serial# || ''' immediate';
  END LOOP;
END;

Пример

BEGIN
  FOR r IN (select sid,serial# from v$session where username = 'CLARK')
  LOOP
      EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid  || ',' 
        || r.serial# || ''' immediate';
  END LOOP;
END;

3. Прикрепите журнал к сохранению процедуры / функции

Описание: Маленькие подсказки по мониторингу процедуры / функции хранилища - это создание журнала. Мы создаем таблицу в схеме для вставки сообщений, дату и время, чтобы отметить, где выполняется ваш код.

Шаг 1: создайте таблицу для ведения журнала.

CREATE TABLE CLARK.STORE_LOG (
   STORE_NAME VARCHAR2(100) NOT NULL,
   MESSAGES VARCHAR2(100),
   RUN_TIME TIMESTAMP(8)
);

Шаг 2. Создайте хранимую процедуру для журнала отслеживания.

CREATE OR REPLACE PROCEDURE LOG_STORE_SP 
(
    P_STORE_NAME VARCHAR2,
    P_MESSAGES VARCHAR2
)
AS
BEGIN
    INSERT INTO STORE_LOG (STORE_NAME, MESSAGES, RUN_TIME)
    VALUES (P_STORE_NAME, P_MESSAGES, SYSDATE);
    COMMIT;
END;

Шаг 3. Передача отслеживания журнала в другую процедуру или функцию магазина.

CREATE OR REPLACE PROCEDURE OTHER_STORE_PROCEDURE 
AS
BEGIN
    -- THE OTHER CODE
    LOG_STORE_SP('OTHER_STORE_PROCEDURE', 'PRINT LOG HERE');
    -- THE OTHER CODE
END;

Шаг 4: проверьте журнал

SELECT * 
FROM CLARK.STORE_LOG
ORDER BY RUN_TIME DESC;

4. Отображение времени в SYSDATE

Описание: по умолчанию sysdate показывает только дату. Но в некоторых случаях вы должны знать точное время, когда ваши данные встраиваются в базу данных. Oracle Database также позволяет клиентам получить дополнительную информацию с помощью следующего сценария:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY MM DD HH24:MI:SS';

После запуска сценария SQL вы снова выполняете свой запрос. Столбец, содержащий данные, относящиеся к sysdate, будет отображать больше даты и времени.

Онлайн-курсы для изучения SQL

  1. Бесплатно и легко начать CodeCademy Go
  2. Другой сайт - Udemy: здесь вы можете найти небольшие курсы по SQL.
  3. Онлайн скорость 20 часов, вы узнаете понятие база данных Oracle

Резюме

Знания о базах данных очень обширны по определению, а также обширны с широким спектром точек зрения. Чтобы хорошо разбираться в этой области, нужно расколоть орешек и участвовать в реальном проекте, чтобы развить свои собственные навыки. В своем кратком рассказе я посвящаю себя обобщению примитивных знаний для начинающих.