06 2 билет 8 (775943)

Файл №775943 06 2 билет 8 (Ответы на все вопросы по теме электроника или типа того)06 2 билет 8 (775943)2017-06-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

6. Язык структурированных запросов SQL. Выбор и модификация данных, группировка таблиц, агрегатные функции, использование подзапросов

SQL – Structured Query Language. Язык манипулирования данными во всех современных СУБД. Включает операторы трех типов: определения объектов, манипулирования данными, защиты и управления данными.

Операторы манипулирования: SELECT – выборка, INSERT – добавление данных, UPDATE – изменение данных, DELETE – удаление данных.

Результат выполнения операторы SELECT – таблица.





INSERT INTO

СИНТАКСИС:

INSERT INTO table [(column_name, ...)] VALUES (expression,...) ||
INSERT INTO table [(column_name, ...)] SELECT ...

ОПИСАНИЕ:

Вставляет данные в таблицу.

  • В выражении можно использовать любое предыдущее поле в списке column_name (или таблицу, если список имен столбцов не задан).

  • При использовании SELECT вы не можете указать ORDER BY.

  • Вы можете использовать функцию C API mysql_info для получения строки:

@result{Records: 220 Duplicates: 1 Warnings: 1}

    • Records показывает число записей, возвращенных SELECT'ом.

    • Duplicates = число строк, которые не могли быть вставлены из-за дублирования ключей.

    • Warnings = счетчик числа столбцов в запросе SELECT, которые равны NULL, но были объявлены как NOT NULL для таблицы, в которую Вы вставляете результаты. Столбцы получат значение по умолчанию (помните: в MySQL все NOT NULL столбцы имеют значение по умолчанию!). Если Вы не объявляли при создании таблицы это самое значение, оно будет автоматически назначено, основанным на типе поля.

    • Если Вы желаете вставить NULL в данное значение, Вы должны сделать это, не определяя значение для поля, в которое Вы желаете вставить NULL.

ПРИМЕР:

INSERT INTO Customer(customer_name,customer_contact) VALUES("Joes Wholesale","Joe Smith")

Этот запрос создаст новую запись в таблице Customer, которая будет содержать автоматически сгенерированный customer_id, и значения, определенные в запросе. Все другие поля будут пустыми (NULL).

Вы также можете использовать SELECT для копирования элементов из одной таблицы в другую. MySQL поддерживает ограниченную форму запросов sub, для выполнения этой возможности.

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

UPDATE

СИНТАКСИС:

UPDATE table SET column=expression,... WHERE where_definition

Здесь where_definition:

where_definition:

where_expr or where_expr [AND | OR] where_expr

Здесь where where_expr имеет формат:

where_expr:

column_name [> | >= | = | <> | <= | < ]

column_name_or_constant or

column_name LIKE column_name_or_constant or

column_name IS NULL or column_name IS NOT NULL or (where_definition)

ОПИСАНИЕ:

Обновляет одно или несколько полей в таблице MySQL.

  • Все обновления выполняются слева направо.

  • Внутри UPDATE на одной таблице все операции атомарные. Напримерe, Вы можете увеличивать счетчик внутри таблицы, просто прибавляя 1 к соответствующей переменной.

ПРИМЕРЫ:

UPDATE Widget_Table SET widgets_on_hand=widgets_on_hand - 300 where widget_id=3;

Этот запрос вычтет 300 из значения widgets_on_hand для widget = 3.

DELETE FROM Purchase_Order_Item WHERE purchase_order = 456

Этот запрос удалит все записи из Purchase_Order_Item, которые имеют значение 456 для purchase_order. Обратите внимание, что вообще Вы НИКОГДА не должны бы удалять данные из этого сорта базы данных. Вы создаете базы данных, чтобы следить за информацией, и даже плохая информация могла бы стать полезной в некотором случае. Гораздо лучше иметь некоторый тип кода состояния, который Вы используете, когда данные стали недопустимыми по каким-либо причинам.

Вы также хотели бы удалять запись в Purchase_Order для purchase_order 456. Важно убедиться, что, когда Вы удаляете информацию, Вы избавляетесь от всех ссылок к этой информации. Иначе Вы закончите с разрушенной базой данных.

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

  • DELETE

СИНТАКСИС:

DELETE FROM table_name WHERE where_definition

Здесь where_definition имеет формат:

where_definition:

where_expr or where_expr [AND | OR] where_expr

where_expr имеет формат:

where_expr:

column_name [> | >= | = | <> | <= | < ]

column_name_or_constant or

column_name LIKE column_name_or_constant or

column_name IS NULL or column_name IS NOT NULL or (where_definition)

ОПИСАНИЕ:

Удаляет записи из таблицы.

    • Возвращает количество обработанных записей.

    • Если вызван DELETE без WHERE, то таблица будет очищена. В этом случае DELETE вернет 0 для числа обработанных записей.

Замечания:

    • Все строки сравниваются без учета регистра (ISO_8859_1). Если Вы должны сделать чувствительный к регистру поиск, то используйте REGEXP в предложении HAVING.

    • LIKE применим на числовых столбцах.

    • Сравнение с явным NULL (столбец == NULL) эквивалентно условию IS NULL, то есть использованию (столбец IS NULL). Это было сделано, для совместимости с mSQL.

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

  • SELECT

СИНТАКСИС:

SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression,...

[FROM tables... [WHERE where_definition] [GROUP BY column,...]

[ORDER BY column [ASC | DESC], ...] HAVING full_where_definition

[LIMIT [offset,] rows] [PROCEDURE procedure_name]]

[INTO OUTFILE 'file_name'... ]

Здесь where_definition:

where_definition:

where_expr or where_expr [AND | OR] where_expr

where_expr имеет формат:

where_expr:

column_name [> | >= | = | <> | <= | <]

column_name_or_constant or column_name LIKE column_name_or_constant or

column_name IS NULL or column_name IS NOT NULL or (where_definition)

ОПИСАНИЕ:

Оператор SELECT является краеугольным камнем всего языка SQL. Он используется, чтобы выполнить запросы к базе данных. Это действительно основа языка SQL. Для хорошего общего учебника о том, как работает SELECT, посмотрите http://w3.one.net/~jhoffman/sqltut.htm#Basics of the SELECT Statement.

В MySQL версии меньше 3.21.x предложение WHERE очень ограничено. HAVING будет работать там, где предложение WHERE ничего не делает. Некоторые примеры, которые не работают в предложении WHERE - REGEXP и операторе !. В основном, Вы не можете использовать функции с WHERE, но Вы можете использовать функции с HAVING.

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

Вы должны иметь права select для использования SELECT.

Функции

select_expression может содержать следующие функции и операторы:

+ - * /

Арифметические действия.

%

Остаток от деления (как в C)

| &

Битовые функции (используется 48 бит).

-

Смена знака числа.

( )

Скобки.

BETWEEN(A,B,C)

(A >= B) AND (A <= C).

BIT_COUNT()

Количество бит.

ELT(N,a,b,c,d)

Возвращает a, если N == 1, b, если N == 2 и т. д. a,b,c,d строки.

ПРИМЕР:

ELT(3,"First","Second","Third","Fourth")
вернет "Third".

FIELD(Z,a,b,c)

Возвращает a, если Z == a, b, если Z == b и т. д. a,b,c,d строки.

ПРИМЕР:

FIELD("Second","First","Second","Third","Fourth")
вернет "Second".

IF(A,B,C)

Если A истина (!= 0 and != NULL), то вернет B, иначе вернет C.

IFNULL(A,B)

Если A не null, вернет A, иначе вернет B.

ISNULL(A)

Вернет 1, если A == NULL, иначе вернет 0. Эквивалент ('A == NULL').

NOT !

NOT, вернет TRUE (1) или FALSE (0).

OR, AND

Вернет TRUE (1) или FALSE (0).

SIGN()

Вернет -1, 0 или 1 (знак аргумента).

SUM()

Сумма столбца.

= <> <= = >

Вернет TRUE (1) или FALSE (0).

expr LIKE expr

Вернет TRUE (1) или FALSE (0).

expr NOT LIKE expr

Вернет TRUE (1) или FALSE (0).

expr REGEXP expr

Проверяет строку на соответствие регулярному выражению expr.

expr NOT REGEXP expr

Проверяет строку на соответствие регулярному выражению expr.

select_expression может также содержать один или большее количество следующих математических функций.

ABS()

Абсолютное значение (модуль числа).

CEILING()

()

EXP()

Экспонента.

FORMAT(nr,NUM)

Форматирует число в формат '#,###,###.##' с NUM десятичных цифр.

LOG()

Логарифм.

LOG10()

Логарифм по основанию 10.

MIN(),MAX()

Минимум или максимум соответственно. Должна иметь при вызове два или более аргументов, иначе рассматривается как групповая функция.

MOD()

Остаток от деления (аналог %).

POW()

Степень.

ROUND()

Округление до ближайшего целого числа.

RAND([integer_expr])

Случайное число типа float, 0 <= x <= 1.0, используется integer_expr как значение для запуска генератора.

SQRT()

Квадратный корень.

select_expression может также содержать одну или больше следующих строковых функций.

CONCAT()

Объединение строк.

INTERVAL(A,a,b,c,d)

Возвращает 1, если A == a, 2, если A == b... Если совпадений нет, вернет 0. A,a,b,c,d... строки.

INSERT(org,strt,len,new)

Заменяет подстроку org[strt...len(gth)] на new. Первая позиция строки=1.

LCASE(A)

Приводит A к нижнему регистру.

LEFT()

Возвращает строку символов, отсчитывая слева.

LENGTH()

Длина строки.

LOCATE(A,B)

Позиция подстроки B в строке A.

LOCATE(A,B,C)

Позиция подстроки B в строке A, начиная с позиции C.

LTRIM(str)

Удаляет все начальные пробелы из строки str.

REPLACE(A,B,C)

Заменяет все подстроки B в строке A на подстроку C.

RIGHT()

Get string counting from right.

RTRIM(str)

Удаляет хвостовые пробелы из строки str.

STRCMP()

Возвращает 0, если строки одинаковые.

SUBSTRING(A,B,C)

Возвращает подстроку из A, с позиции B до позиции C.

UCASE(A)

Переводит A в верхний регистр.

И наконец несколько просто полезных функций, которые тоже можно применить в select_expression.

CURDATE()

Текущая дата.

DATABASE()

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

FROM_DAYS()

Меняет день на DATE.

NOW()

Текущее время в форматах YYYYMMDDHHMMSS или "YYYY-MM-DD HH:MM:SS". Формат зависит от того в каком контексте используется NOW(): числовом или строковом.

PASSWORD()

Шифрует строку.

PERIOD_ADD(P:N)

Добавить N месяцев к периоду P (в формате YYMM).

PERIOD_DIFF(A,B)

Возвращает месяцы между A и B. Обратите внимание, что PERIOD_DIFF работает только с датами в форме YYMM или YYYMM.

TO_DAYS()

Меняет DATE (YYMMDD) на номер дня.

UNIX_TIMESTAMP([date])

Возвращает метку времени unix, если вызвана без date (секунды, начиная с GMT 1970.01.01 00:00:00). При вызове со столбцом TIMESTAMP вернет TIMESTAMP.

date может быть также строкой DATE, DATETIME или числом в формате YYMMDD (или YYYMMDD).

USER()

Возвращает логин текущего пользователя.

WEEKDAY()

Возвращает день недели (0 = понедельник, 1 = вторник, ...).

Групповые функции в операторе select:

Следующие функции могут быть использованы в предложении GROUP:

AVG()

Среднее для группы GROUP.

SUM()

Сумма элементов GROUP.

COUNT()

Число элементов в GROUP.

MIN()

Минимальный элемент в GROUP.

MAX()

Максимальный элемент в GROUP.

Здесь MIN() и MAX() могут принимать строку или число в качестве аргумента. Эти функции не могут использоваться в выражении, хотя их параметр может быть выражением:

ПРИМЕР: "SUM(value/10)" нормально, но вот "SUM(value)/10" уже нет!

  • Строки автоматически конвертируются в числа и наоборот по мере необходимости (прямо как в perl). При использовании операторов = <> = как в инструкции WHERE, левая сторона определяет, выполняется ли тест с числами или со строками. Все сравнения строк независимы от регистра (ISO8859-1).

ПРИМЕР:

"a" < "b" ; Сравнение строк

"a" < 0 ; Сравнение строк

0 < "a" ; Сравнение чисел

a < 5 ; Если поле имеет тип CHAR, то сравниваются строки,

; иначе сравниваются числа.


Если надо учитывать регистр, используйте REGEXP в HAVING.

  • Имя столбца не должно иметь префикса таблицы, если данное имя столбца уникально.

  • В LIKE выражения % и _ могут предваряться символом \ для получения символьного выражения.

  • DATE является строкой с одним из синтаксисов:

    • YYMMDD (Год считается 2000, если YY < 70)

    • YYYYMMDD

    • YY.MM.DD Здесь '.' может быть любым нецифровым разделителем

    • YYYY.MM.DD Здесь '.' может быть любым нецифровым разделителем

  • IFNULL() и IF() возвращает число или строку в зависимости от ситуации, в которой использованы.

  • Order и group столбец может быть именем столбца, его псевдонимом или номером в операторе SELECT.

  • HAVING может принимать в качестве аргумента любые поля или псевдонимы в select_expression. Он применяется последним перед передачей данных клиенту без какой-либо оптимизации. Не используйте его для элементов из предложения WHERE.

Замечание: Вы не можете написать:
SELECT user,MAX(salary) FROM users GROUP BY users HAVING max(salary)>10
Вместо этого, используйте нечто вроде следующего (это хороший пример использования псевдонимов столбцов):
SELECT user,MAX(salary) AS sum FROM users GROUP BY users HAVING sum > 10

  • LIMIT принимает один или два аргумента. Один аргумент задает максимальное число строк в результате. В случае двух аргументов этот максимум задает второй аргумент, а первый указывает смещение первой строки.

  • INTO OUTFILE 'filename' пишет результаты в файл. Файл не должен существовать на момент выполнения этой команды. См. раздел LOAD DATA INFILE для более подробной информации. Это может быть весьма опасной командой, если daemon запущен от имени root. Самое лучшее предоставить право доступа file только когда это абсолютно необходимо.

  • Вы можете использовать числовое значение в предложении ORDER BY для определения столбца, который Вас интересует. ТО ЕСТЬ, если Вы желаете провести сортировку второго столбца, определенного в вашем запросе SELECT, следует написать "ORDER BY 2;". Это также полезно, когда Вы использовали функцию в вашем SELECT.

ПРИМЕР:

SELECT Widget_Table.widget_id, Widget_Table.widget_name,

Purchase_Order_Item.widget_id, sum(Purchase_Order_Item.quantity)

FROM Widget_Table, Purchase_Order_Item

WHERE Widget_Table.widget_id = Purchase_Order_Item.widget_id

GROUP BY Widget_Table.widge t_name ORDER BY 4;

Присоединения

Свойство объединения SQL дает способность определить связи между таблицами и отыскивать) информацию, основанную на этих связях.

Связи перечисляются в предложении FROM запроса SELECT. Каждая связь отделяется запятой.

ПРИМЕР:

$ mysql mysql

Welcome to the mysql monitor. Commands ends with ; or \g.

Type 'help' for help.

mysql> SELECT db.user, db.delete_priv, user.user, user.delete_priv

-> FROM db,user WHERE db.user = user.user;


Этот запрос соединит таблицы db и user посредством поля user. Это распечатает что-то вроде следующего:

+------+-------------+------+-------------+

| user | delete_priv | user | delete_priv |

+------+-------------+------+-------------+

|mke | N | mke | N |

+------+-------------+------+-------------+

Первые два поля фактические db.user и db.delete_priv , последние два user.user и user.delete_priv.

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

Вы можете объединить до пятнадцати таблиц в одном объединении.

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

Псевдонимы могут также использоваться для имен столбца. См. детали в следующем разделе.

Псевдонимы

СУБД MySQL поддерживает концепцию псевдонимов для таблиц и полей.

Псевдонимы для таблиц являются стандартной частью языка SQL.

ПРИМЕР:

SELECT A.user,A.select_priv,A.insert_priv,A.update_priv FROM user A

В этом примере использован псевдоним таблицы, чтобы сократить ваш запрос, объявляя псевдоним, который короче имени таблицы. Вы используете псевдоним в первой части выбора, и определяете это в FROM, определяя реальное имя таблицы, пробел и псевдоним. Если Вы имеете больше чем одну таблицу, для которой Вы желаете создать псевдоним, просто добавьте запятую после каждой пары имя/псевдоним таблицы.

Если Вы используете псевдонимы с запросом, который будет иметь предложение WHERE, Вы должны использовать псевдоним в предложении WHERE вместо реального имени таблицы.

Псевдонимы для полей таблицы - специфическое для MySQL расширение.

ПРИМЕР:

SELECT user.user AS "User Name", user.delete_priv AS "Delete" FROM user;
Одно хорошее дело, которое делают псевдонимы поля - это то, что они позволяют Вам определять более дружественные метки для вашего вывода. Результат вышеупомянутого запроса мог бы окончательно выглядеть примерно так:

+-----------+--------+

| User Name | Delete |

+-----------+--------+

| root | Y |

| mke | N |

| dummy | N |

| admin | N |

+-----------+--------+

Хороший совет - брать псевдонимы в кавычки, в данном примере "Delete" вызвало бы ошибку синтаксического анализа при применение без кавычек. (Это потому, что DELETE является ключевым словом SQL.

12

Характеристики

Тип файла
Документ
Размер
32,6 Kb
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее