==== Зміна структури таблиць. Режими взаємодії клієнта з сервером==== **Команда ALTER TABLE**\\ Добавлення нового стовпця: ALTER TABLE <Ім’я таблиці> ADD <Ім’я стовпця> <Тип стовпця> [<Властивості стовпця>] [FIRST або AFTER <Ім’я попереднього стовпця>]; Новий стовпець записується останнім у списку стовпців. Але його місце можна задати опцією:\\ FIRST – новий стовпець буде першим \\ AFTER – буде розміщений після вказаного попереднього стовпця.\\ Добавлення в таблицю типу MyISAM повнотекстового індексу командою: ALTER TABLE <Ім’я таблиці> ADD FULLTEXT [<Ім’я индексу>] (<Список стовпців>); Зміна властивостей таблиці:\\ Зміна (або задання) опціональних властивостей таблиці ALTER TABLE <Ім’я таблиці> <властивість таблиці>; ALTER TABLE <Ім’я таблиці> ENGINE <Новий тип таблиці>; Зміна кодування і правила порівняння символьних стовпців, які будуть створені після цієї команди ALTER TABLE <Ім’я таблиці> CHARACTER SET <Ім’я кодування> [COLLATE <Ім’я правила порівняння>]; Нове кодування для вже існуючих символьних стовпців таблиці ALTER TABLE <Ім’я таблиці> CONVERT TO CHARACTER SET <Ім’я кодування> [COLLATE <Ім’я правила порівняння>]; **Зміна властивостей стовпців**\\ Повна зміна опису стовпця: ALTER TABLE <Ім’я таблиці> CHANGE <Ім’я стовпця > <Нове ім’я стовпця> <Новий тип > [<Властивості стовпця>] [FIRST або AFTER < Ім’я попереднього стовпця>]; Зміна опису стовпця без перейменування: ALTER TABLE <Ім’я таблиці> MODIFY <Ім’я стовпця> <Новий тип стовпця> [<Властивості стовпця>] [FIRST або AFTER < Ім’я попереднього стовпця>]; Встановлення значення по замовчуванню для стовпця: ALTER TABLE <ім’я таблиці> ALTER <Ім’я стовпця> SET DEFAULT <Значення по замовчуванню>; Видалення значення по замовчуванню: ALTER TABLE <Ім’я таблиці> ALTER <Ім’я стовпця> DROP DEFAULT; Видалення стовпця таблиці: ALTER TABLE <Ім’я таблиці> DROP <Ім’я стовпця>; Крім того, стовпець одночасно видаляється з усіх індексів. \\ Видалення первинного ключа таблиці: ALTER TABLE <Ім’я таблиці> DROP PRIMARY KEY; Видалення зовнішнього ключа таблиці: ALTER TABLE <Ім’я таблиці> DROP FOREIGN KEY <Ім’я зовнішнього ключа>; Якщо при створенні зовнішнього ключа не було задане його ім’я, то воно формується автоматично. Отримати його можна командою SHOW CREATE TABLE. Видалення індексу ALTER TABLE <Ім’я таблиці> DROP INDEX <Ім’я індексу>; <Ім’я індексу> можна отримати за допомогою команди SHOW CREATE TABLE. **Додаткові можливості команди ALTER TABLE** \\ Відключення (тимчасове) індексів ALTER TABLE <Ім’я таблиці> DISABLE KEYS; Відновлення індексів ALTER TABLE <Ім’я таблиці> ENABLE KEYS; Перейменування таблиці ALTER TABLE <Ім’я таблиці> RENAME <Нове ім’я таблиці>; Упорядкування рядків таблиці (нова цікава можливість!!!) ALTER TABLE <Ім’я таблиці> ORDER BY <Ім’я стовпця 1> [ASC або DESC], [<Ім’я стовпця 2> [ASC або DESC],...]; ==Отримання інформації про таблиці== Список таблиць активної БД\\ SHOW TABLES; Характеристики стовпців таблиці\\ DESCRIBE <Ім’я таблиці>; Field – ім’я стовпця; Type – тип стовпця;\\ Null – YES – допускаються значення NULL:, NO – ні; \\ Key – стовпець міститься в ключі або індекси; \\ Default – значення по замовчуванню; Extra – додаткова інформація. \\ SHOW CREATE TABLE <Ім’я таблиці>; Видає повну інформацію про таблицю у вигляді команди CREATE TABLE.\\ Розташування деяких основних компонентів MySQL C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe C:\ProgramData\MySQL\MySQL Server 5.7\my.ini ===Режими взаємодії клієнта з сервером MySQL=== * строгий режим * нестрогий режим Режим можна отримати за допомогою команди SHOW VARIABLES LIKE 'sql_mode'; При значенні STRICT_TRANS_TABLES або STRICT_ALL_TABLES сервер працює в строгому режимі, інакше – у нестрогому режимі.\\ Зміна режиму взаємодії для даного з'єднання * Встановлення нестрогого режиму SET SQL_MODE = ''; * Встановлення строгого режиму SET SQL_MODE = 'STRICT_TRANS_TABLES'; або SET SQL_MODE = 'STRICT_ALL_TABLES'; * SET GLOBAL SQL_MODE = '<Режим>'; -- глобальний режим для всіх клієнтських додатків (до моменту перезапуску сервера). **Режими при команді INSERT** INSERT [INTO] <Ім’я таблиці> [(<Список стовпців>)] VALUES (<Список значень 1>), (<Список значень 2>), ... (<Список значень N>); Обробка некоректного значення залежить від режиму взаємодії клієнта з сервером MySQL. Виконання INSERT в обох режимах відміняється, якщо – * в первинний ключ або в унікальний індекс добавляється дублююче значення; * у зовнішній ключ добавляється значення, якого немає у первинному ключі батьківської таблиці. * дробові числа для стовпців цілого типу заокруглюються. У строгому режимі для NOT NULL необхідно задати значення.\\ Виключення: стовпці з TIMESTAMP, ENUM і АUTO_INCREMENT (використовуються такі ж значення, що і в нестрогому режимі). **Виконання INSERT у нестрогому режимі**\\ * некоректна дата заміняється на (0000-00-00 00:00:00); * «зайві» символи відсікаються (Пр. для типу CHAR(3) ‘abcde’ перетвориться у ‘abс’); * велике число, яке не можна розмістити в полі, буде замінено на максимально можливе (!!!); * якщо не задано значення для NOT NULL, то вводиться: для числових стовпців – 0, для AUTO_INCREMENT – наступний порядковий номер; для стовпців з типом дати і часу (0000–0000 00:00:00), для типу TIMESTAMP – системна дата і час; для символьних стовпців – порожній рядок, для стовпця з типом ENUM – перший елемент списку. Операція завершується успішно, але генерується відповідне попередження (див. команду SHOW WARNINGS). **Редагування даних в таблиці** Зміна даних в існуючих рядках таблиці: \\ UPDATE <Ім’я таблиці> SET <Ім’я стовпця 1> = <Значення 1>, ..., <Ім’я стовпця N> = <Значення N> [WHERE <Умова відбору>] ; Зміна існуючих даних або добавлення рядків:\\ REPLACE [INTO] <Ім’я таблиці> [(<Список стовпців>)] VALUES (<Список значень 1>), (<Список значень 2>), ... (<Список значень N>); Якщо в даних, які вставляються в таблицю командою REPLACE, первинний ключ (унікальний індекс) співпадає з одним з вже існуючим значенням, то має місце заміна цього рядка (UPDATE). Інакше команда REPLACE виконується, як INSERT. REPLACE = {INSERT or UPDATE}