Запити на зміну за допомогою інструкцій SQL. Приклади SQL запитів до бази даних MySQL Додавання значень таблицю sql

Головна / Захист


Зміст статті
1. Найпростіші MySQL запити
2. Прості SELECT (вибрати) запити
3. Прості INSERT (новий запис) запити
4. Прості UPDATE (перезаписати, дописати) запити
5. Прості DELETE (видалити запис) запити
6. Прості DROP (видалити таблицю) запити
7. Складні MySQL запити
8. MySQL запити та змінні PHP

1. Найпростіші SQL запити

1. Виведе список ВСІХ баз.

SHOW databases;
2. Виведе список ВСІХ таблиць у базі даних base_name.

SHOW tables in base_name;

2. Прості SELECT (вибрати) запити до бази MySQL

SELECT- Запит, який вибирає вже існуючі дані з БД. Ви можете вказати певні параметри вибору. Наприклад, суть запиту російською мовою звучить так - ВИБРАТИ такі колонки З такої таблиці ДЕ параметр такої колонки дорівнює значенню.

1. Вибирає ВСІ дані у таблиці tbl_name.

SELECT * FROM tbl_name;
2. Виведе кількість записів у таблиці tbl_name.

SELECT count(*) FROM tbl_name;
3. Вибирає (SELECT) з (FROM) таблиці tbl_name ліміт (LIMIT) 3 записи, починаючи з 2.

SELECT * FROM tbl_name LIMIT 2,3;
4. Вибирає (SELECT) ВСІ (*) записи з (FROM) таблиці tbl_name та сортує їх (ORDER BY) по полю id по порядку.

SELECT * FROM tbl_name ORDER BY id;
5. Вибирає (SELECT) ВСІ записи з (FROM) таблиці tbl_name і сортує їх (ORDER BY) по полю id в Зворотному порядку.

SELECT * FROM tbl_name ORDER BY id DESC;
6. Вибирає ( SELECT) ВСІ (*) записи з ( FROM) таблиці usersі сортує їх ( ORDER BY) полем idв порядку зростання, ліміт ( LIMIT) перші 5 записів.

SELECT * FROM users ORDER BY id LIMIT 5;
7. Вибирає всі записи з таблиці users, де поле fnameвідповідає значенню Gena.

SELECT * FROM users WHERE fname="Gena";
8. Вибирає всі записи з таблиці users, де значення поля fnameпочинається з Ge.

SELECT * FROM users WHERE fname LIKE "Ge%";
9. Вибирає всі записи з таблиці users, де fnameзакінчується на na, і впорядковує записи у порядку зростання значення id.

SELECT * FROM users WHERE fname LIKE "%na" ORDER BY id;
10. Вибирає всі дані із колонок fname, lnameз таблиці users.

SELECT fname, lname FROM users;

11. Допустимо у Вас у таблиці даних користувача є країна. Так от якщо Ви хочете вивести ТІЛЬКИ список значень, що зустрічаються (щоб, наприклад, Росія не виводилося 20 разів, а тільки один), то використовуємо DISTINCT. Виведе, з маси значень, що повторюються Росія, Україна, Білорусь. Таким чином, з таблиці usersколонки countryбудуть виведені ВСІ УНІКАЛЬНІ значення

SELECT DISTINCT country FROM users;
12. Вибирає всі дані рядків з таблиці usersде ageмає значення 18,19 та 21.

SELECT * FROM users WHERE age IN (18,19,21);
13. Вибирає МАКСИМАЛЬНЕ значення ageв таблиці users. Тобто якщо у Вас у таблиці найбільше значення age(з англ. Вік) дорівнює 55, то результатом запиту буде 55.

SELECT max(age) FROM users;
14. Вибере дані з таблиці usersпо полях nameі ageДЕ ageнабуває найменшого значення.

SELECT name, min(age) FROM users;
15. Вибере дані з таблиці usersполем nameДЕ idНЕ РАВНИЙ 2.

SELECT name FROM users WHERE id!="2";

3. Прості INSERT (новий запис) запити

INSERT– запит, який дозволяє ПЕРШОПОЧАТКОВО вставити запис у БД. Тобто створює НОВИЙ запис (рядок) у БД.

1. Робить новий записв таблиці users, в полі nameвставляє Сергій, а в полі ageвставляє 25. Таким чином, до таблиці дописується новий рядок з даними значеннями. Якщо колонок більше, то вони залишаться або порожніми, або зі встановленими за замовчуванням значеннями.

INSERT INTO users (name, age) VALUES ("Сергій", "25");

4. Прості UPDATE запити до бази даних MySQL

UPDATE– запит, який дозволяє ПЕРЕЗАПИСАТИ значення полів або ДОПИСАТИ щось у вже існуючому рядку БД. Наприклад, є готовий рядок, але в ньому потрібно перезаписати параметр віку, оскільки він змінився з часом.

1. У таблиці users ageстає 18.

UPDATE users SET age = "18" WHERE id = "3";
2. Все те саме, що і в першому запиті, просто показаний синтаксис запиту, де перезаписуються два поля і більше.
В таблиці usersДЕ id дорівнює 3 значення поля ageстає 18, а countryРосія.

UPDATE users SET age = "18", country = "Росія" WHERE id = "3";

5. Прості DELETE (видалити запис) запити до бази даних MySQL

DELETE– запит, який видаляє рядок із таблиці.

1. Видаляє рядок із таблиці usersДЕ idдорівнює 10.

DELETE FROM users WHERE id = "10";

6. Прості DROP (видалити таблицю) запити до бази даних MySQL

DROP- Запит, який видаляє таблицю.

1. Видаляє повністю таблицю tbl_name.

DROP TABLE tbl_name;

7. Складні запити до бази даних MySQL

Цікаві запити, які можуть стати в нагоді навіть досвідченим користувачам

SELECT id,name,country FROM users,admins WHERE TO_DAYS(NOW()) - TO_DAYS(registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Даний складний запит ВИБИРАЄ колонки id,name,countryУ ТАБЛИЦЯХ users,adminsДЕ registration_date(дата) не старше 14 днів І activationНЕ ДОРІВНЮЄ 0 , Сортувати за registration_dateу зворотному порядку (нове на початку).

UPDATE users SET age = "18+" WHERE age = (SELECT age FROM users WHERE male = "man");
Наведений вище приклад так званого запиту у запитіу SQL. Оновити вік серед користувачів на 18+, де стать - чоловіча. Подібних варіантів запиту не рекомендую. З особистого досвіду скажу, краще створити кілька окремих – вони будуть опрацьовуватися швидше.

8. Запити до бази даних MySQL та PHP

У MySQL запити в PHP сторінці можна вставляти змінні як порівнювані і тп значень. Пара прикладів

1. Вибирає всі записи з таблиці users, де поле fnameвідповідає значенню змінної $name.

SELECT * FROM users WHERE fname="$name";
2. У таблиці usersДЕ id дорівнює 3 значення поля ageзмінюється значення змінної $age.

UPDATE users SET age = "$age" WHERE id = "3";

Увага!Якщо Вам цікавий ще якийсь приклад, то пишіть питання в коментарі!

Запити на зміну використовуються для додавання (INSERT INTO), видалення (DELETE) та оновлення (UPDATE) записів у таблицях.

Команда INSERT INTO

Команда INSERT INTO може бути використана для додавання одного або кількох записів до кінця таблиці.

Синтаксис команди INSERT INTO має такий вигляд:
INSERT INTO Назва_Таблиці [(Назва_Полів)] VALUES (Значення_даних);

Наприклад, помістимо в таблицю "Групи" запис, що містить дані (1, БФ-16а, 1, 1) відповідні стовпці (КодГрупи, Назва, Курс, Семестр).

Для цього запит у форматі:
INSERT INTO Групи (КодГрупи, Назва, Курс, Семестр) VALUES (1, БФ-16а, 1, 1);
введемо на бланку запиту, виконавши команду "Конструктор запитів" на вкладці "Створення" у режимі "Режим SQL" з меню Вид.

Зберігаємо запит з ім'ям "Добав_1_записи". В результаті в "Області переходів" з'явиться незв'язаний об'єкт - "Добав_1_записи" (Рис.1.).


Рис. 1.

Після збереження запиту необхідно виконати запит, клацнувши на піктограмі «Виконати». В результаті виконання команди «Добав_1_запису» в порожній таблиці з'явиться перший запис (Мал. 2)



Рис. 2.

Команда UPDATE

Команда UPDATE призначена для зміни вже існуючих записів у стовпцях таблиці, що дозволяє оновлювати значення заданих стовпчиках таблиці.

Синтаксис команди UPDATE має такий вигляд:
UPDATE Назва_Таблиці SET Назва_Стовпця = Нова_Значення WHERE Умова_Відбору;

У пропозиції SET вказуються імена стовпців, дані у яких треба змінити. Оператор WHERE не є обов'язковим, але за його допомогою можна вказати лише ті рядки стовпців (таблиць), які необхідно оновити.

Створимо запит на зміну запису таблиці "Групи" бази даних sql_training_st.mdb.

Наприклад, змінимо вже існуючий запис першого ключового поля id в стовпці "Назва" таблиці "Групи".

Запит у форматі:
UPDATE Групи SET Назва = "БФ-16б" WHERE ID = 1;

Зберігаємо запит з ім'ям "Зміна_запису_1". В результаті в області переходів з'явиться об'єкт - Зміна_запису_1 (Рис. 3.).



Рис. 3.

Після збереження запиту необхідно виконати запит, клацнувши на піктограмі «Виконати». В результаті виконання команди «Зміна_запису_1» з'явиться вікно діалогу, в якому необхідно ввести значення ID=1 і натиснути кнопку ОК. Після цих дій у таблиці "Групи" зміниться запис у полі "Назва" з БФ-16а до БФ-16б (Рис. 4.).



Рис. 4.

Команда DELETE

Команда DELETE призначена видалення записів з таблиці.

Формат запиту на видалення записів:
DELETE FROM Назва_Таблиці WHERE Умова_Відбору;

Створимо запит на зміну запису таблиці "Групи" бази даних sql_training_st.mdb.

Наприклад, видалимо існуючий запис першого ключового поля id у всіх стовпцях (полях) таблиці "Групи".

Для цього запит у форматі:
DELETE FROM Групи WHERE ID=1;
створюємо на бланку запиту, виконавши команду "Конструктор запитів" на вкладці "Створення" у режимі "Режим SQL" з меню Вид.

Зберігаємо запит з ім'ям "Видалення_запису_1". В результаті в області переходів з'явиться об'єкт - Видалення_запису_1 (Мал. 5.).



Рис. 5.

Після збереження запиту необхідно виконати запит, клацнувши на піктограмі «Виконати». В результаті виконання команди «Видалення_запису_1» з'явиться вікно діалогу, в якому необхідно ввести значення ID=1 і натиснути кнопку ОК. Після цього відкриється вікно діалогу "Підтвердіть видалення записів". Після підтвердження таблиці " Групи " буде видалено дані у всіх полях, тобто. видалено запис (Мал. 6.).



Рис. 6.

Слід зазначити, що для видалення даних у конкретних полях таблиці доцільно скористатися командою UPDATE та замінити значення у полях, що потрібні на Null. Якщо необхідно видалити таблицю в цілому, слід використовувати оператор DROP TABLE (синтаксис оператора: DROP TABLE Назва_Таблиці;).

Відновимо перший запис у таблиці "Групи", виконавши команду "Добав_1_запису", в результаті відновимо перший запис (Мал. 7.).



Рис. 7.

Крім інструкції SELECT, яка була розглянута раніше, мова маніпуляції даними DML (Data Manipulation Language) містить три інші інструкції: INSERT, UPDATE та DELETE. Подібно до інструкції SELECT ці три інструкції оперують або таблицями, або уявленнями. Ця стаття розглядає інструкцію INSERT, а дві інші інструкції розглядаються в наступній статті.

Інструкція INSERTвставляє рядки (або частини рядків) до таблиці. Існує дві різні форми цієї інструкції:

INSERT tab_name [(col_list)] DEFAULT VALUES | VALUES (( DEFAULT | NULL | expression ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Угоди щодо синтаксису

Перша форма інструкції дозволяє вставити в таблицю один рядок (або її частина). А друга форма інструкції INSERT дозволяє вставити в таблицю результуючий набір інструкції SELECT або процедури, що зберігається за допомогою інструкції EXECUTE. Процедура, що зберігається, повинна повертати дані для вставки в таблицю. Інструкція SELECT, що застосовується з інструкцією INSERT, може вибирати значення з іншої або тієї ж таблиці, в яку вставляються дані, за умови сумісності типів даних відповідних стовпців.

Для обох форм тип даних кожного значення, що вставляється, повинен бути сумісним з типом даних відповідного стовпця таблиці. Усі строкові та тимчасові дані мають бути укладені у лапки; чисельні значення укладати в лапки не потрібно.

Вставка одного рядка

Для обох форм інструкції INSERT явна вказівка ​​списку стовпців не є обов'язковою. Відсутність списку шпальт рівнозначно вказівкою всіх шпальт таблиці.

Параметр DEFAULT VALUESвставляє стандартні значення для всіх стовпців. У стовпці з типом даних TIMESTAMP або властивістю IDENTITY за замовчуванням вставляються значення автоматично створювані системою. Для стовпців інших типів даних вставляється відповідне ненульове значення за промовчанням, якщо таке є, або NULL у протилежному випадку. Якщо для стовпця значення NULL не дозволено і для нього не визначено значення за промовчанням, виконання інструкції INSERT завершується помилкою та виводиться відповідне повідомлення.

У прикладі нижче показано вставлення рядків у таблицю Employee бази даних SampleDb, демонструючи використання інструкції INSERT для вставки невеликого обсягу даних у базу даних:

USE SampleDb; INSERT INTO Employee VALUES (34990, "Андрій", "Батонов", "D1"); INSERT INTO Employee VALUES (38640, "Олексій", "Васін", "d3");

Існує два різні способи вставки значень у новий рядок. Інструкція INSERT у прикладі нижче явно використовує ключове слово NULL і вставляє значення NULL у відповідний стовпець:

USE SampleDb; INSERT INTO Employee VALUES (34991, "Андрій", "Батонов", NULL);

Щоб вставити значення в деякі (але не всі) стовпці таблиці, зазвичай необхідно явно вказати ці стовпці. Не зазначені стовпці мають або дозволяти значення NULL, або для них має бути визначено значення за промовчанням.

USE SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Андрій", "Батонов");

Попередні два приклади є рівнозначними. У таблиці Employee єдиним стовпцем, що дозволяє значення NULL, є стовпець DepartmentNumber, а для інших стовпців це значення було заборонено пропозицією NOT NULL в інструкції CREATE TABLE.

Порядок значень у пропозиції VALUESІнструкції INSERT можуть відрізнятися від порядку, зазначеного в інструкції CREATE TABLE. У такому разі їхній порядок повинен співпадати з порядком, у якому відповідні стовпці перераховані у списку стовпців. Нижче показаний приклад вставки даних у порядку, що відрізняється від вихідного:

USE SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Батонов", 34993, "Андрій");

Вставка кількох рядків

Друга форма інструкції INSERT вставляє в таблицю один або кілька рядків, вибраних підзапитом. У прикладі нижче показано вставлення рядків у таблицю, використовуючи другу форму інструкції INSERT. У цьому випадку виконується запит щодо вибірки номерів та імен відділів, розташованих у Москві, та завантаження отриманого результуючого набору в нову таблицю, створену раніше.

Нова таблиця MoscowDepartment, що створюється в прикладі вище, має ті ж стовпці, що і існуюча таблиця Department, за винятком відсутнього стовпця Location. Підзапит в інструкції INSERT вибирає у таблиці Department усі рядки, для яких значення стовпця Location дорівнює "Москва", які потім вставляються у створену на початку запиту нову таблицю.

У прикладі нижче показано ще один спосіб вставки рядків у таблицю, використовуючи другу форму інструкції INSERT. В даному випадку виконується запит на вибірку табельних номерів, номерів проектів та дат початку роботи над проектом для всіх співробітників з посадою "Менеджер", які працюють над проектом p2 з наступним завантаженням отриманого результуючого набору до нової таблиці, що створюється на початку запиту:

USE SampleDb; CREATE TABLE ManagerTeam (EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Менеджер";

Перед вставкою рядків за допомогою інструкції INSERT таблиці MoscowDepartment та ManagerTeam (у прикладах вище) були порожніми. Якщо ж таблиця вже існувала і містила рядки з даними, то до неї було додано нові рядки.

Видалення записів

Для видалення записів з таблиці застосовується оператор DELETE:

DELETE FROM имяТаблиці WHERE умова;

Цей оператор видаляє із зазначеної таблиці записи (а не окремі значення стовпців), які відповідають зазначеній умові. Умова – це логічний вираз, різні конструкції якого були розглянуті у попередніх лабораторних заняттях.

Наступний запит видаляє записи з таблиці Customer, де значення стовпця LName дорівнює " Іванів " :

DELETE FROM Customer

WHERE LName = "Іванів"

Якщо таблиця містить відомості про кількох клієнтів із прізвищем Іванов, всі вони будуть видалені.

В операторі WHERE може бути підзапит на вибірку даних (оператор SELECT). Підзапити в операторі DELETE працюють так само, як і в операторі SELECT. Наступний запит видаляє всіх клієнтів із міста Москва, при цьому унікальний ідентифікатор міста повертається за допомогою підзапиту.

DELETE FROM Customer

WHERE IdCity IN (SELECT IdCity FROM City WHERE CityName = "Москва")

Transact-SQL розширює стандартний SQL, дозволяючи використовувати в інструкції DELETE ще одну пропозицію FROM. Це розширення, в якому задається з'єднання, може бути використане замість вкладеного запиту в пропозиції WHERE для вказівки рядків, що видаляються. Воно дозволяє задавати дані з другого FROM та видаляти відповідні рядки з таблиці у першому реченні FROM. Зокрема, попередній запит може бути переписаний таким чином

DELETE FROM Customer

FROM Customer k INNER JOIN

Операція видалення записів з таблиці є небезпечною у тому сенсі, що пов'язана з ризиком незворотних втрат даних у разі семантичних (але не синтаксичних) помилок під час формулювання SQL-виразу. Щоб уникнути неприємностей, перед видаленням записів рекомендується спочатку виконати відповідний запит на вибірку, щоб переглянути, які записи будуть видалені. Так, наприклад, перед виконанням розглянутого раніше запиту видалення не завадить виконати відповідний запит на вибірку.

SELECT *

FROM Customer k INNER JOIN

City c ON k.IdCity = c.IdCity AND c.CityName = "Москва"

Для видалення всіх записів із таблиці достатньо використовувати оператор DELETE без ключового слова WHERE. У цьому сама таблиця з усіма певними у ній стовпцями зберігається готова до вставки нових записів. Наприклад, наступний запит видаляє записи про всі товари.

DELETE FROM Product

Завдання для самостійної роботи:Сформулюйте мовою SQL запит видалення всіх замовлень, які мають у складі жодного товару (тобто. всі порожні замовлення).

Ця ж стаття присвячена наповненню таблиць БД даними, тобто вивчатимемо SQL-команди для вставки нових записів. Слід сказати, що запис до таблиці можна зробити двома способами:

Спосіб №1.
Спробуймо внести запис про нову країну в таблицю countries. Синтаксис додавання буде наступним:
INSERT INTO Назва_таблиці (поле_1, поле_2, …) VALUES (Значення_1, Значення_2, …); Виходячи з нашої структури таблиці, SQL-запит буде таким:
INSERT INTO countries (country_name, acronym_name) VALUES ("Russia", "RU"); Ось так ми внесли до нашої таблиці запис про країну «Росія». Тут має бути все зрозуміло і просто, головне уважно дивитися які поля вказуєте в перших дужках, і в такому порядку прописувати значення в других.

Спосіб №2.
Другий спосіб, на мій погляд, трохи простіше, оскільки ви бачите що і якому полю привласнюєте. Повірте, якщо в таблиці безліч стовпців, то дуже просто переплутати або недоглянути порядок полів у перших, і порядок значень у других дужках. Синтаксис другого методу такий:
INSERT INTO Назва_таблиці SET поле_1 = Значення_1, поле_2 = Значення_2, … ; Давайте на даному прикладі внесемо якусь інформацію до таблички persons, оскільки там більше полів, і відразу відчуватиметься перевага другого способу:
INSERT INTO persons SET first_name="Ivan", last_name="Dulin", registration_date="2012-06-14", country="1"; Тепер у нашій табличці є такі дані:


Ви, мабуть, помітили, що ми не вказали значення для age, а воно виявилося заповненим ... Все правильно - для даного поля ми встановлювали значення за замовчуванням як 25. Отже, тепер наш Ivan Dulin значиться в базі з віком 25 років. Можливо, не найзручніший приклад робити значення за замовчуванням для поля віку, але можна такі властивості встановлювати до таких полів, як, наприклад, рейтинг користувача сайту або кількість переглядів сторінки. Їх спочатку ставиться значення 0.

Слід ще звернути увагу на формат дати MySQL: YYYY-MM-DD. Якщо його не дотримуватися, ваші записи просто не будуть внесені в таблицю.

Як бачимо, поле profession заповнене як NULL, це пусте значення. Для цього поля ми ставили властивість «не обов'язкове до заповнення (NULL)».

Як додаток, розглянемо таку команду:
LOAD DATA LOCAL INFILE "D:\zapros.txt" INTO TABLE persons; Як ви вважаєте, що ми зараз зробили?! А зробили ми таке: додали дані до таблиці personsз файлу zapros.txt, що знаходиться на диску D. Інформація у файлі повинна бути наступною структурою:


Структура даних файлу має відповідати таким вимогам:
  1. Кожен новий запис повинен описуватися з нового рядка
  2. Дані повинні бути вказані для всіх полів. Як ви можете помітити, для поля id ми вказали значення NULL, адже воно у нас є автоінкрементним, так що MySQL сам внесе потрібне значення.
  3. Поля відокремлюються один від одного символом табуляції (клавіша Tab).
  4. Введена інформація повинна відповідати типу даних конкретного поля. Тобто, наприклад, дата у форматі РРРР-ММ-ДД, ціле число для integer і т.д.
Таким чином, ви навчилися вносити нові дані до таблиці своєї БД. Для закріплення вивченого матеріалу внесіть самостійно такі дані:

Таблиця professions:

Таблиця людей:

first_name last_name age registration_date country profession
Leonid Bilak 45 2012-06-20 2 1
Yuri Nazarov 22 2012-06-21 3 1
Alla Savenko 25 2012-06-22 2 3
Irina Nikolaeva 31 2012-06-22 1 3

Обов'язково додайте ці записи, оскільки нам знадобляться для вивчення оператора SELECT (вибору інформації з БД), який ми розглянемо в наступній (четвертій) статті з вивчення SQL-запитів.

© 2022 androidas.ru - Все про Android