Відмінності між версіями «SQL-запити»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Надання прав користувачу засобами SQL)
 
(не показано 7 проміжних версій цього учасника)
Рядок 1: Рядок 1:
== Надання прав користувачу засобами SQL ==
+
== Операції над користувачами та їх правами ==
 +
# ''' CREATE USER 'логін користувача' IDENTIFIED BY 'пароль';''' - створити користувача.
 +
# ''' DROP USER 'логін_користувача' ''' - видалити користувача із СУБД.
 +
# ''' GRANT ALL PRIVILEGES назва_бд.* TO 'логін_користувача' ''' - надати повний доступ до усіх таблиць бази даних уже створеному користувачеві.
 
# '''GRANT ALL PRIVILEGES ON  *.* TO 'логін користувача'@'%' IDENTIFIED BY 'пароль';''' (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць)
 
# '''GRANT ALL PRIVILEGES ON  *.* TO 'логін користувача'@'%' IDENTIFIED BY 'пароль';''' (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць)
 
# '''GRANT ALL PRIVILEGES ON  *.* TO 'логін'@'%' IDENTIFIED BY 'пароль' WITH GRANT OPTION;''' (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць та надати право передавати право доступу до баз даних та таблиць)
 
# '''GRANT ALL PRIVILEGES ON  *.* TO 'логін'@'%' IDENTIFIED BY 'пароль' WITH GRANT OPTION;''' (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць та надати право передавати право доступу до баз даних та таблиць)
Рядок 8: Рядок 11:
 
* '''*.*''' означає будь-яку базу даних та таблицю, тут можна використовувати безпосередньо назви баз даних та таблиць, якщо необхідно створити користувача та надати доступ до конкретної бази даних або таблицю деякої бази.
 
* '''*.*''' означає будь-яку базу даних та таблицю, тут можна використовувати безпосередньо назви баз даних та таблиць, якщо необхідно створити користувача та надати доступ до конкретної бази даних або таблицю деякої бази.
 
* '''%''' означає будь-який мережевий хост. Може бути замінений на мережеву адресу хоста, для прикладу з якого можна використовувати користувача для підключення.
 
* '''%''' означає будь-який мережевий хост. Може бути замінений на мережеву адресу хоста, для прикладу з якого можна використовувати користувача для підключення.
 +
 
== Операції над базами даних ==
 
== Операції над базами даних ==
 
<ol>
 
<ol>
 +
<li>
 +
''' CREATE DATABASE `назва_бд` CHARACTER SET кодування COLLATE кодування_порівнянь; ''' - створити базу даних та вказати кодування за замовченням
 +
<pre>
 +
CREATE DATABASE `db_test` CHARACTER SET utf8 COLLATE utf8_general_ci;
 +
</pre>
 +
</li>
 +
<li>
 +
''' DROP USER 'назва_бази_даних' ''' - видалити базу даних.
 +
</li>
 
<li>
 
<li>
 
''' USE назва_бази_даних ''' - вибрати поточну базу даних для подальшого виконання запитів.
 
''' USE назва_бази_даних ''' - вибрати поточну базу даних для подальшого виконання запитів.
Рядок 15: Рядок 28:
 
</li>
 
</li>
 
</ol>
 
</ol>
 +
 
== Операції з таблицями ==
 
== Операції з таблицями ==
 +
 +
<ol>
 +
<li>
 +
'''CREATE TABLE назва_таблиці (назва_поля тип_поля,...,primary key (назва_поля));''' - створити таблицю у поточній базі даних з перерахованим переліком полів з відповідним форматом, а також із указанням первинного ключа.
 +
 +
<pre>
 +
CREATE TABLE IF NOT EXISTS `tbl_users` (
 +
    id INT NOT NULL AUTO_INCREMENT,
 +
    login VARCHAR(50) NOT NULL,
 +
    comment VARCHAR(100) NOT NULL DEFAULT "",
 +
    when_created DATE_TIME NOT NULL DEFAULT '0000-00-00 00:00:00',
 +
   
 +
    PRIMARY KEY (id)
 +
);
 +
</pre>
 +
</li>
 +
</ol>
 +
 
== Операції із записами таблиці ==  
 
== Операції із записами таблиці ==  
 
<ol>
 
<ol>
 +
<li>
 +
''' SELECT перелік_полів FROM назва_таблиці WHERE умова_відбору ''' - запит-вибірка з таблиці бази даних, результат виконання - таблиця. Перелік полів можна вказувати спеціальним символом '''*''', що означає усі поля таблиці. Якщо необхідно в результаті отримати конкретні поля, їх необхідно перерахувати через кому. Також умову відбору можна не використовувати взагалі, тоді вибірка буде опрацьовувати усі наявні записи у таблиці.
 +
<pre>SELECT * FROM tbl_users WHERE user_id=20;</pre>
 +
</li>
 
<li>  
 
<li>  
 
''' INSERT INTO назва_таблиці (поле_1,...,поле_n) VALUES (значення_1,...,значення_n) ''' - створення нового запису у таблиці. Спочатку вказується перелік полів а потім відповідно до порядку вказання полів вказуються їх значення у новому записі.
 
''' INSERT INTO назва_таблиці (поле_1,...,поле_n) VALUES (значення_1,...,значення_n) ''' - створення нового запису у таблиці. Спочатку вказується перелік полів а потім відповідно до порядку вказання полів вказуються їх значення у новому записі.

Поточна версія на 15:06, 9 квітня 2014

Операції над користувачами та їх правами

  1. CREATE USER 'логін користувача' IDENTIFIED BY 'пароль'; - створити користувача.
  2. DROP USER 'логін_користувача' - видалити користувача із СУБД.
  3. GRANT ALL PRIVILEGES назва_бд.* TO 'логін_користувача' - надати повний доступ до усіх таблиць бази даних уже створеному користувачеві.
  4. GRANT ALL PRIVILEGES ON *.* TO 'логін користувача'@'%' IDENTIFIED BY 'пароль'; (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць)
  5. GRANT ALL PRIVILEGES ON *.* TO 'логін'@'%' IDENTIFIED BY 'пароль' WITH GRANT OPTION; (створити користувача із вказаним логіном та паролем і надати повний доступ до всіх баз даних та таблиць та надати право передавати право доступу до баз даних та таблиць)

Якщо користувача із зазначеним іменем немає, то СУБД його створить, якщо є то права перезапишуться відповідно до встановлених опцій. Під користувачем мається на увазі логін та хост з якого йому можна виконувати запити.

Опис спеціальних символів

  • *.* означає будь-яку базу даних та таблицю, тут можна використовувати безпосередньо назви баз даних та таблиць, якщо необхідно створити користувача та надати доступ до конкретної бази даних або таблицю деякої бази.
  • % означає будь-який мережевий хост. Може бути замінений на мережеву адресу хоста, для прикладу з якого можна використовувати користувача для підключення.

Операції над базами даних

  1. CREATE DATABASE `назва_бд` CHARACTER SET кодування COLLATE кодування_порівнянь; - створити базу даних та вказати кодування за замовченням
    CREATE DATABASE `db_test` CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  2. DROP USER 'назва_бази_даних' - видалити базу даних.
  3. USE назва_бази_даних - вибрати поточну базу даних для подальшого виконання запитів.
    USE test_database;

Операції з таблицями

  1. CREATE TABLE назва_таблиці (назва_поля тип_поля,...,primary key (назва_поля)); - створити таблицю у поточній базі даних з перерахованим переліком полів з відповідним форматом, а також із указанням первинного ключа.
    CREATE TABLE IF NOT EXISTS `tbl_users` (
        id INT NOT NULL AUTO_INCREMENT,
        login VARCHAR(50) NOT NULL,
        comment VARCHAR(100) NOT NULL DEFAULT "",
        when_created DATE_TIME NOT NULL DEFAULT '0000-00-00 00:00:00',
        
        PRIMARY KEY (id)
    );
    

Операції із записами таблиці

  1. SELECT перелік_полів FROM назва_таблиці WHERE умова_відбору - запит-вибірка з таблиці бази даних, результат виконання - таблиця. Перелік полів можна вказувати спеціальним символом *, що означає усі поля таблиці. Якщо необхідно в результаті отримати конкретні поля, їх необхідно перерахувати через кому. Також умову відбору можна не використовувати взагалі, тоді вибірка буде опрацьовувати усі наявні записи у таблиці.
    SELECT * FROM tbl_users WHERE user_id=20;
  2. INSERT INTO назва_таблиці (поле_1,...,поле_n) VALUES (значення_1,...,значення_n) - створення нового запису у таблиці. Спочатку вказується перелік полів а потім відповідно до порядку вказання полів вказуються їх значення у новому записі.
    INSERT INTO tbl_users (login,password,description) VALUES ('test_user_login','test_password','user description');
    
  3. DELETE FROM назва_таблиці WHERE умова - видалення усіх записів, що відповідають заданій умові. Якщо умову не використати, то за замовченням будуть видалені усі записи у заданій таблиці.
    DELETE FROM tbl_users WHERE user_id=10;
    
  4. UPDATE назва_таблиці SET поле_1=значення_1,...,поле_n=значення_n WHERE умова - оновлення записів у таблиці НАЗВА_ТАБЛИЦІ відповідно умови відбору, якщо умова буде відсутня, то оновлення буде виконане над усіма записами таблиці.
    UPDATE tbl_users SET disable_user=0 WHERE user_id=56;
    

Також можна переглянути офіційну інформацію синтаксису SQL-мови для СУБД MySQL версії 5.7. Там також є інформація по іншим версіям СУБД.