Заметки о sql и реляционной алгебре

SQL Справочник

SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL ОператорыSQL Типы данныхSQL Краткий справочник

SQL Server INTERSECT Examples

If we want to find out which people exist in both the customer table and the
manager table and get a distinct list back we can issue the following command:

SELECT FIRSTNAME, 
       LASTNAME, 
       ADDRESSLINE1, 
       CITY, 
       STATEPROVINCECODE, 
       POSTALCODE 
FROM   MANAGER 
INTERSECT  
SELECT FIRSTNAME, 
       LASTNAME, 
       ADDRESSLINE1, 
       CITY, 
       STATEPROVINCECODE, 
       POSTALCODE 
FROM   CUSTOMER 

Here is the result set:

To do this same thing with a regular T-SQL command we would have to write the
following:

SELECT   M.FIRSTNAME, 
         M.LASTNAME, 
         M.ADDRESSLINE1, 
         M.CITY, 
         M.STATEPROVINCECODE, 
         M.POSTALCODE 
FROM     MANAGER M 
         INNER JOIN CUSTOMER C 
           ON M.FIRSTNAME = C.FIRSTNAME 
              AND M.LASTNAME = C.LASTNAME 
              AND M.ADDRESSLINE1 = C.ADDRESSLINE1 
              AND M.CITY = C.CITY 
              AND M.POSTALCODE = C.POSTALCODE 
GROUP BY M.FIRSTNAME,M.LASTNAME,M.ADDRESSLINE1,M.CITY, 
         M.STATEPROVINCECODE,M.POSTALCODE 

SQL Учебник

SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии

RemarksRemarks

Указания по соединению задаются в запросе в предложении FROM.Join hints are specified in the FROM clause of a query. Указания по соединению принудительно активируют стратегию соединения между двумя таблицами.Join hints enforce a join strategy between two tables. При задании указаний соединений для любых двух таблиц оптимизатор запросов принудительно автоматически активирует порядок соединения для всех соединенных таблиц в запросе, основанном на положении ключевого слова ON.If a join hint is specified for any two tables, the query optimizer automatically enforces the join order for all joined tables in the query, based on the position of the ON keywords. При использовании CROSS JOIN без предложения ON для определения порядка соединения могут использоваться скобки.When a CROSS JOIN is used without the ON clause, parentheses can be used to indicate the join order.

АргументыArguments

LOOP | HASH | MERGELOOP | HASH | MERGEЗадает использование циклов, хэша и операций объединения при соединении в запросе.Specifies that the join in the query should use looping, hashing, or merging. Использование LOOP | HASH | MERGE JOIN автоматически создает соединение между двумя таблицами.Using LOOP |HASH | MERGE JOIN enforces a particular join between two tables. Аргумент LOOP не может указываться вместе с параметрами RIGHT или FULL в качестве типа соединения.LOOP cannot be specified together with RIGHT or FULL as a join type. Дополнительные сведения см. в статье о соединениях.For more information, see Joins.

REMOTEREMOTEЗадает, что операция соединения проводится на сайте в таблице, расположенной справа.Specifies that the join operation is performed on the site of the right table. Данный аргумент удобно использовать в случае, когда таблица, расположенная слева, является локальной, а справа располагается удаленная таблица.This is useful when the left table is a local table and the right table is a remote table. Аргумент REMOTE может использоваться в случае, когда в таблице слева содержится меньшее количество строк, чем в таблице справа.REMOTE should be used only when the left table has fewer rows than the right table.

Если таблица, расположенная справа, является локальной, то операция соединения также проводится локально.If the right table is local, the join is performed locally. Если обе таблицы являются удаленными, но расположены в различных источниках данных, то при задании аргумента REMOTE операция соединения проводится на сайте в таблице, расположенной справа.If both tables are remote but from different data sources, REMOTE causes the join to be performed on the site of the right table. Если обе таблицы являются удаленными таблицами в одном источнике данных, то аргумент REMOTE не требуется.If both tables are remote tables from the same data source, REMOTE is not required.

Аргумент REMOTE не может быть использован для сравнения в предикате соединения значений, одно из которых приведено к другим параметрам сортировки с помощью предложения COLLATE.REMOTE cannot be used when one of the values being compared in the join predicate is cast to a different collation using the COLLATE clause.

Аргумент REMOTE может быть использован только при операциях INNER JOIN.REMOTE can be used only for INNER JOIN operations.

Пример

Пример процедуры, в которой используется исключительная ситуация определенная программистом:

Oracle PL/SQL

CREATE OR REPLACE PROCEDURE add_new_order
(order_id_in IN NUMBER, sales_in IN NUMBER)
IS
no_sales EXCEPTION;
BEGIN
IF sales_in = 0 THEN
RAISE no_sales;
ELSE
INSERT INTO orders (order_id, total_sales )
VALUES ( order_id_in, sales_in );
END IF;
EXCEPTION
WHEN no_sales THEN
raise_application_error (-20001,’У вас должны быть продажи по заказу, для закрытия заказа.’);
WHEN OTHERS THEN
raise_application_error (-20002,’Произошла ошибка при добавлении заказа.’);
END;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

CREATEORREPLACEPROCEDUREadd_new_order

(order_id_inINNUMBER,sales_inINNUMBER)
IS

no_salesEXCEPTION;
BEGIN

IFsales_in=0THEN

RAISEno_sales;

ELSE

INSERTINTOorders(order_id,total_sales)

VALUES(order_id_in,sales_in);

ENDIF;
EXCEPTION

WHENno_salesTHEN

raise_application_error(-20001,’У вас должны быть продажи по заказу, для закрытия заказа.’);

WHENOTHERSTHEN

raise_application_error(-20002,’Произошла ошибка при добавлении заказа.’);

END;

В этом примере объявили исключительную ситуацию no_sales объявленную следующим кодом:

no_sales EXCEPTION;

Вызываем исключение в выполняемой части кода:

IF sales_in = 0 THEN RAISE no_sales;

Теперь, если переменная sales_in содержит нуль, то наш выполнение кода перейдет к исключительной ситуации no_sales.

Наконец, мы указываем нашей процедуре, что делать, когда исключительная ситуация no_sales включается в оператор WHEN:

WHEN no_sales THEN raise_application_error (-20001,’У вас должны быть продажи по заказу, для закрытия заказа.’);

Мы также используем оператор WHEN OTHERS для перехвата всех остальных исключений:

WHEN OTHERS THEN raise_application_error (-20002,’Произошла ошибка при добавлении заказа.’);

Типы данных Access

Типы данных Access разделяются на следующие группы:

  • Текстовый – максимально 255 байтов.
  • Мемо — до 64000 байтов.
  • Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:

    • байт — целые числа от -0 до 255, занимает при хранении 1 байт
    • целое — целые числа от -32768 до 32767, занимает 2 байта
    • длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
    • с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
    • с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт
  • Дата-время — 8 байтов
  • Денежный — 8 байтов, данные о денежных суммах, хранящиеся с 4 знаками после запятой.
  • Счетчик — уникальное длинное целое, генерируемое Access при создании каждой новой записи — 4 байта.
  • Логический — логические данные 1бит.
  • Поле объекта OLE — до 1 гигабайта, картинки, диаграммы и другие объекты OLE из приложений Windows. Объекты OLE могут быть связанными или внедренными.
  • Гиперссылки — поле, в котором хранятся гиперссылки. Гиперссылка может быть либо типа UNC (стандартный формат для указания пути с включением сетевого сервера файлов), либо URL(адрес объекта, документа, страницы или объекта другого типа в Интернете или Интранете. Адрес URL определяет протокол для доступа и конечный адрес).
  • Мастер подстановок — поле, позволяющее выбрать значение из другой таблицы Accesss или из списка значений, используя поле со списком.  Чаще всего используется для ключевых полей. Имеет тот же размер, что и первичный ключ, являющийся также и полем подстановок, обычно 4 байта. (Первичный ключ – одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице Accesss. Не допускает неопределенных .Null. значений, всегда должен иметь уникальный индекс. Служит для связывания таблицы с вторичными ключами других таблиц).
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *