Команди в MySQL

Конзолата на MySQL позволява да се въвеждат както SQL инструкции, така и служебни MySQL команди, предназначени за администриране и използване на таблици в базата данни на MySQL. Към основните команди се отнасят SHOW, USE и CREATE. Ще разгледаме всяка по отделно.


SHOW

Тази команда е предназначена за преглед на достъпните база данни и таблици. За предглед на списъка от база данни е необходимо да се въведе следната команда:

SHOW DATABASES;

Ако например съществуват две база данни - mysql и test (тези две бази по принцип се създават автоматично при инсталацията на сървъра), то MySQL ще отговори примерно така:

+----------+
| Database |
+----------+
| mysql |
| test |
+----------+


За преглед на списъка с таблиците се използва същата команда в следния вид:

SHOW TABLES;

Тази команда извежда списък на таблиците в текущата база данни:

+-----------------+
| Tables in mysql |
+-----------------+
| test |
| mysql |
+-----------------+


Забележка: можете да работите само с една база данни едновременно, затова в приведения по-горе пример няма нужда да се указва името на базата данни, търсенето на таблици се извършва в активната за дадения момент база.

CREATE

Тази команда позволява да се създават нови бази данни. Както беше казано по-горе, по подразбиране сървърът създава две бази данни mysql и test. За удобство може да създаваме нова база данни за всяка отделна задача, защото е по лесно да се работи с набор от таблици, които са свързани по между си (дори ако тази връзка е само смислова). Създаваме нова база данни с помощта на тази команда:

CREATE DATABASE staff

След тази операция ще бъде създадена нова база данни не съдържаща никакви таблици, а командата SHOW DATABASES извежда следното:

+----------+
| Database |
+----------+
| mysql |
| test |
| staff |
+----------+



USE

Както беше казано, в един и същи момент само една база данни може да бъде активна. Командата USE служи за избор на активна база данни. За преход към друга база данни е необходимо да изпълним следната операция:

USE staff

Следва да отбележим, че при създаването на нова база данни (виж по-горе), новата база не става активна автоматично - за нейното използване трябва да я направим активна!


SQL

Следва да ви запознаем с методите за извличане и внасяне на данни в таблици с помощта на езика SQL

Преглед на данни

Най простата команда се явява следната:

SELECT * FROM mysql;

От тази команда следва да разбираме, че в активната база данни съществува таблица mysql, от която се извличат всички данни и се извеждат на екрана

Забележка: В SQL-командите има едно ограничение, което няма отношение към командите за MySQL - инструкциите за SQL задължително трябва да завършват с точка и запетайка. Това позволява да се въвеждат многоредови запитвания към базата данни, това не се налага при използване на MySQL-команди, които са много по лаконични и кратки.

Както може би вече сте рабрали, командата SELECT служи за преглед на данните в таблиците. Нейният опростен синтаксис е такъв:

SELECT <списъък с полета> FROM <списък с имена на таблиците> [WHERE <списък с условия>] [ORDER BY <списък на полета>];

В списъка с полета може да има един или няколко елемента; освен това е възможно и да се указава символа "*" (), който означава, че трябва да се покажат всички полета на таблиците. Частта WHERE ... се явява незадължителна и позволява да се избере от таблицата запис, удовлетворяващ определено условие. Разделът ORDER BY ... служи за сортиране на получените данни от определени полета.

Ето един пример за по-сложно запитване, демонстриращо показаното по горе. Да предположим, че таблицата staff съдържа информация за сътрудниците на някаква организация. Това запитване намира записи за тези от тях, които работят повече от две години и които не се казват Иван.

SELECT name, project, works_since
FROM staff
WHERE
name > 'Иван' AND
works_since '2002-04-26';

Да разгледаме този пример. Първият ред иска от MySQL да покаже съдържанието само на полето name и works_since. Вторият ред ни насочва към таблицата в която следва да търсим тези данни. Останалата част от запитването указва критерия за избор - името не трябва да бъде 'Иван', а датата да бъде по ранна от 26 април 2002 година. Ето пример за резултата след такава операция:

+----------+--------------+-------------+
| name | project | works_since |
+----------+--------------+-------------+
| Fred | Secret data | 1997-01-01 |
| Jonathan | Blue apples | 1997-06-01 |
+----------+--------------+-------------+


За показване на данни от едно поле може да използва такова запитване:

SELECT project FROM staff ORDER BY project;



+-------------+
| project |
+-------------+
| Blue apples |
| Blue apples |
| Cornichons |
| Secret data |
| Secret data |
| Secret data |
+-------------+



Както виждате, това запитване просто избира значенията от нужното поле за всеки запис и ги извежда сортирани по полето project, затова в резултата има повторения. За отстраняването им се използва инструкцията DISTINCT:

SELECT DISTINCT project FROM staff ORDER BY project;



+-------------+
| project |
+-------------+
| Blue apples |
| Cornichons |
| Secret data |
+-------------+



SQL позволява да се извършват някои изчисления и да се получава определена описателна информация с помощта на агрегатните функции. Тези функции са - COUNT, SUM, MAX, MIN и AVG.

COUNT - изчислява количеството намерени записи
SUM - намира сумите в намерените записи
MAX - намира най-големите стойности сред означенията
MIN - намира най-малките стойности сред означенията
AVG - намира средни стойности сред означенията

Тези функции се изплзват като елементи от списъка с таблиците в запитванията с аргументи. Ето няколко примера

SELECT COUNT (project) FROM staff;
SELECT MAX (projects_done) FROM staff;
SELECT AVG (project_done) FROM staff

Тези запитвания намират количеството изпълними проекти, най-голямото количество проекти, изпълнявани от един човек и средното количество на тези проекти, в които участват съответните работници.

SQL разполага със средства за работа с регулярни изрази. За сравнение на значенията с регулярните значения използваме оператора LIKE, а за конструиране на прости извеждания - символите '_' (произволен символ) и '%' (произволно количество произволни символи).
Пример. Това запитване намира всички имена, които започват с 'Jo':
SELECT name FROM staff
WHERE name LIKE 'Jo%n';



+----------+
| name |
+----------+
| Jonathan |
| John |
+----------+



MySQL също позволява да се изпълняват много по- развити сравнения със шаблони с помощта на оператора REGRXP


SELECT name, project FROM staff
WHERE project REGEXP "[bB]";

Това запитване извежда всички записи, в които името на проекта съдържа буквата 'b' бе текст з зависимост от регистъра

И последно по ред, но не и по значение - е използването на повече от една таблица. Особеността е в това, че използваните таблици могат да имат общи полета, с които те са свързани. За да може да се указва точно за кое поле от таблицата става дума, се използва запис от типа staff.project, където пред точката стои името на таблицата, а след нея - името на полето. Вторият вариант - назначение на псевдоними за таблиците за поголямо удобство. За това в списъка на таблиците имената на всяка таблица се указват заедно с псевдоними - например: stuff x, projects y.

SELECT x.name, x.project, x.description
FROM staff x, projects x
WHERE
x.project = x.project_name;

В този пример се обединяват таблиците staff и projects, при което се извежда името на сътрудника, проекта над който работи и описание на този проект

+----------+-------------+------------------------------+
| name | project | description |
+----------+-------------+------------------------------|
| Jonathan | Blue apples | Worldwide apple distribution |
| Fred | Secret data | Secret data |
| John | Secret data | Secret data |
+----------+-------------+------------------------------+


Обединявайки всичко това в едно запитване ще получим следното:

SELECT DISTINCT y.project_name, y.description, COUNT(x.name), FROM staff x, projects yWHERE
y.project_name = x.project AND
y.project_name > 'Secret data' AND
y.project_name LIKE "Wo__d%"
ORDER BY
project_name;



+--------------+--------------------------+-------------+
| project_name | description | COUNT(name) |
+--------------+--------------------------+-------------+
| Blue apples | Worldwide apple delivery | 3 |
+--------------+--------------------------+-------------+


Това запитване показва имената на проектите, техните описания и броя на сътрудниците, които са заети в тези проекти, които не са секретни и описанията, на които започват с 'Wo', след което има още два символа, после има - 'd' и нататък продължава с какво да е, и сортира значението по лето project_name.

Редактиране на данни

Редактиране на данни - това е добавяне, премахване и промяна на данни. За изпълнението на тези операции се използват командите INSERT, DELETE и UPDATE

Командата INSERT служи за поствяне на записи в таблиците. Ето как можве да изглежда такова запитване:

INSERT INTO staff VALUES ("Robert", "1980-05-07", "2000-04-26",
"$100", "Secret data");

Възможно е също да се поставят и отделни значения. В такъв случай е необходимо да се укаже, в кои полета трябва да се въведат данните, при което оставените полета няма да бъдат запълнени - при изпълнение на запитването SELECT те ще бъдат представени като NULL - специално значение, означаващо че данни няма.

INSERT INTO staff(name, date_of_birth) VALUES ("Jack", "1977-07-29");

SELECT * FROM staff
WHERE name = "Jack";



+------+---------------+-------------+---------+---------+
| name | date_of_birth | works_since | project | sallary |
+------+---------------+-------------+---------+---------+
| Jack | 1997-07-29 | NULL | NULL | NULL |
+------+---------------+-------------+---------+---------+


Премахването на данни се извършва с командата DELETE. За това е нужно да се укаже таблицата и (незадължително) условията, които трябва да удовлетворят записите , които следва да се изтрият. Ако условията са пропуснати, тази команда, както и при SELECT, ще извърши тази операция с всички записи - т.е. ще изчисти таблицата.

DELETE FROM staff
WHERE
name = "Jack";

Промяната на данни се извършва с помощта на командата UPDATE. Трябва да се укаже кои полета ще се променят, а също (незадължително) условията, които трябва да удовлетворят записите , които следва да се променят.

UPDATE staff
SET
works_since = "2000-04-26"
sallary = "$200"
project = "Secret data"
WHERE
name = "Jack";

Това запитване установява датата на започване на работа, заплатата, и имената на всички проекти на Jack, които се намират в базата данни.

Това е една малка част от езика SQL, необходим за работа с MySQL, в частност при Web програмирането. За по подробна информация се обърнете към официалната документация за SQL или за MySQL


Урока е изготвен от www.transcode.org

/ Трябва да сте регистриран за да напишете коментар /