Gentoo Way Linux, Gentoo, Kubuntu, Ubuntu, Debian … компилируем всё! Удалить колонку из таблицы sql


Полезные команды MySQL « Gentoo Way

Авторизация на сервере (из консоли), -h при необходимости авторизации на удалённом сервере

mysql -h hostname -u root -p

Создание БД

mysql> create database `databasename`;

Создание БД с указанием необходимой кодировки

mysql> create database `databasename` default character set 'utf8' collate 'utf8_unicode_ci';

Получить список всех БД на сервере
Переключится на БД
Получить список таблиц в базе
Посмотреть структуру таблицы

mysql> describe `table name`;

Ещё один вариант

mysql> show columns from `table name`;

Удалить БД

mysql> drop database `database name`;

Удалить таблицу

mysql> drop table `table name`;

Показать все данные в таблице

mysql> SELECT * FROM `table name`;

Показать строки, где поле `field name` имеет значение "whatever".

mysql> SELECT * FROM `table name` WHERE `field name` = 'whatever';

Показать строки с именем "Bob" и номеном "3444444"

mysql> SELECT * FROM `table name` WHERE name = 'Bob' AND phone_number = 3444444;

Показать строки с номером "3444444" не содержащие имени "Bob" отсортированные по номеру.

mysql> SELECT * FROM `table name` WHERE name != 'Bob' AND phone_number = 3444444 order by phone_number;

Показать записи с именем, начинающимся на "bob" и номером 3444444

mysql> SELECT * FROM `table name` WHERE name like 'Bob%' AND phone_number = 3444444;

Верннуть все данные с именем, начинающемся на "bob" и номером 3444444 ограничить вывод пятью первыми строками

mysql> SELECT * FROM `table name` WHERE name like 'Bob%' AND phone_number = 3444444 limit 0,5;

Используем регулярное выражение. Для регистрозависимого выбора используйте "REGEXP BINARY". Данный запрос найдёт все записи, начинающиеся на "a"

mysql> SELECT * FROM `table name` WHERE rec RLIKE '^a';

Показать уникальные записи

mysql> SELECT DISTINCT `column name` FROM `table name`;

Показать выбранные колонки отсортированные от а до я (ASC) или от я до а (DESC)

mysql> SELECT `col1`,`col2` FROM `table name` ORDER BY `col2` DESC;

Вернуть количество строк в таблице.

mysql> SELECT COUNT(*) FROM `table name`;

Просуммировать все числовые поля таблицы

mysql> SELECT SUM(*) FROM `table name`;

Объединение таблиц. Как работает JOIN (в картинках)

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

Создание пользователя. Вход под root. Переключение на БД mysql. Создание пользователя и обновление привилегий.

mysql> use mysql;mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));mysql> flush privileges;

Смена пароля пользователя из консоли

mysqladmin -u username -h hostname -p password 'new-password'

Смена пароля пользователя из консоли MySQL. Вход как root. Смена пароля. Обновление привелегий.

mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');mysql> flush privileges;

Восстановление пароля root пользователя. Остановить MySQL сервер. Запустить с пониженной безопасностью. Залогинится на MySQL как root. Установить новый пароль. Разлогинится и перезапустить MySQL сервер.

/etc/init.d/mysql stopmysqld_safe --skip-grant-tables &mysql -u root

mysql> use mysql;mysql> update user set password=PASSWORD('newrootpassword') where User='root';mysql> flush privileges;mysql> quit

/etc/init.d/mysql stop/etc/init.d/mysql start

Установка пароля root если он ещё не задавался ранее

mysqladmin -u root password newpassword

Смена пароля root

mysqladmin -u root -p oldpassword newpassword

Разрешить пользователю "Bob" подключаться к серверу c локального адреса с паролем "passwd". Войти как root. Переключиться на БД mysql. Дать привилегии. Обновить привелегии.

mysql> use mysql;mysql> grant usage on *.* to bob@localhost identified by 'passwd';mysql> flush privileges;

Предоставить пользователю привилегии на БД. Авторизоваться как root. Переключиться на БД mysql. Предоставить привилегии. Обновить кеш привилегий.

mysql> use mysql;mysql> INSERT INTO user (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');mysql> flush privileges;

или

mysql> grant all privileges on databasename.* to username@localhost;mysql> flush privileges;

Обновить информацию для существующего пользователя

mysql> use mysql;mysql> UPDATE `user` SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where `User` = 'user';flush privileges;

Удалить строки из таблицы

mysql> DELETE from `table name` where `field_name` = 'whatever';

Обновить кеш привилегий
Удалить колонку из таблицы

mysql> alter table `table name` drop column `column name`;

Добавить колонку в таблицу

mysql> alter table `table name` add column `new column name` varchar (20);

Переименовать колонку

mysql> alter table `table name` change `old column name` `new column name` varchar (50);

Сделать данные в колоке уникальными (если дублирующиеся уже есть - будет ошибка)

mysql> alter table `table name` add unique (`column name`);

Модифицировать колонку

mysql> alter table `table name` modify `column name` VARCHAR(3);

Удалить индекс

mysql> alter table `table name` drop index `colmn name`;

Загрузить данные в БД из CSV файла.

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE `table name` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

Сделать дамп всех БД для бэкапа. Бэкап это файл с SQL командами для воссоздания всех баз.

mysqldump -u root -p --opt > /tmp/alldatabases.sql

Сделать дамп одной базы.

mysqldump -u username -p --databases databasename > /tmp/databasename.sql

Сделать дамп одной таблицы

mysqldump -c -u username -p databasename tablename > /tmp/databasename.tablename.sql

Восстановить БД (или таблицу) из бэкапа

mysql -u username -p databasename < /tmp/databasename.sql

Создание таблицы, пример 1.

mysql> CREATE TABLE `table name` ( `firstname` VARCHAR(20), `middleinitial` VARCHAR(3), `lastname` VARCHAR(35), `suffix` VARCHAR(3), `officeid` VARCHAR(10), `userid` VARCHAR(15), `username` VARCHAR(8), `email` VARCHAR(35), `phone` VARCHAR(25), `groups` VARCHAR(15), `datestamp` DATE, `timestamp` time, `pgpemail` VARCHAR(255));

Создание таблицы, пример 2.

mysql> CREATE TABLE `table name` ( personid int(50) not null auto_increment primary key, firstname VARCHAR(35), middlename VARCHAR(50), lastname VARCHAR(50) default 'bato');

gentooway.ru

Руководство по SQL. Изменение таблицы. – PROSELYTE

Для добавления, удаления либо изменения колонок существующей таблицы, в языке SQL используется команда ALTER TABLE. Данная команда также используется для добавления, либо удаления различных констрейнтов в/из существующих таблиц.

Запрос с использованием команды ALTER TABLE для добавления новой колонки имеет следующий вид:

ALTER TABLE имя_таблицы ADD имя_колонки тип_данных;

Для удаления колонки:

ALTER TABLE имя_таблицы DROP имя_колонки;

Для изменения типа данных:

ALTER TABLE имя_таблицы MODIFY COLUMN имя_колонки тип_данных;

Для добавления констрейнта (например, NOT NULL):

ALTER TABLE имя_таблицы MODIFY имя_колонки тип_данных NOT NULL;

Для удаления констрейнта (например, NOT NULL):

ALTER TABLE имя_таблицы DROP CONSTRAINT someConstraint;

Пример:

Предположим, что у нас есть таблица developers, которая содержит следующие записи:

+----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2500 | | 2 | Peter Romanenko | Java | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 3 | 2500 | | 4 | Konstantin Geiko | C# | 2 | 2000 | | 5 | Asya Suleimanova | UI/UX | 2 | 1800 | | 6 | Kolya Nikolaev | Javascript | 5 | 3400 | | 7 | Ivan Ivanov | C# | 1 | 900 | | 8 | Ludmila Geiko | UI/UX | 2 | 1800 | +----+-------------------+------------+------------+--------+

Допустим, что мы хотим добавить новую колонку AGE (возраст).Для этого нам необходимо использовать следующую команду:

mysql> ALTER TABLE developers ADD AGE INT;

Теперь наша таблица содержит данные такого вида:

+----+-------------------+------------+------------+--------+------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | AGE | +----+-------------------+------------+------------+--------+------+ | 1 | Eugene Suleimanov | Java | 2 | 2500 | NULL | | 2 | Peter Romanenko | Java | 3 | 3500 | NULL | | 3 | Andrei Komarov | JavaScript | 3 | 2500 | NULL | | 4 | Konstantin Geiko | C# | 2 | 2000 | NULL | | 5 | Asya Suleimanova | UI/UX | 2 | 1800 | NULL | | 6 | Kolya Nikolaev | Javascript | 5 | 3400 | NULL | | 7 | Ivan Ivanov | C# | 1 | 900 | NULL | | 8 | Ludmila Geiko | UI/UX | 2 | 1800 | NULL | +----+-------------------+------------+------------+--------+------+

Теперь попробуем удалить колонку AGE.Для этого выполним следующий запрос:

mysql> ALTER TABLE developers DROP AGE;

В результате выполнения данного запроса, наша таблица будет иметь записи следующего вида:

+----+-------------------+------------+------------+--------+ | ID | NAME | SPECIALTY | EXPERIENCE | SALARY | +----+-------------------+------------+------------+--------+ | 1 | Eugene Suleimanov | Java | 2 | 2500 | | 2 | Peter Romanenko | Java | 3 | 3500 | | 3 | Andrei Komarov | JavaScript | 3 | 2500 | | 4 | Konstantin Geiko | C# | 2 | 2000 | | 5 | Asya Suleimanova | UI/UX | 2 | 1800 | | 6 | Kolya Nikolaev | Javascript | 5 | 3400 | | 7 | Ivan Ivanov | C# | 1 | 900 | | 8 | Ludmila Geiko | UI/UX | 2 | 1800 | +----+-------------------+------------+------------+--------+

На этом мы заканчиваем изучения способа изменения структуры таблицы.В следующей статье мы рассмотрим способ удаления всех данных из таблицы.

proselyte.net

Изменение структуры таблицы при помощи Transact-sql

Более сложный способ изменения структуры таблицы предлагает Transact-SQL, в котором для этого предусмотрена специальная команда:

ALTER TABLE table

{[ALTER COLUMN

column_name {new_data_type [(precision [, scale])]

[NULL | NOT NULL]

| {ADD | DROP} ROWGUIDCOL}]

|ADD

{[<column_definition> ]

column_name AS computed_column_expression}[,...n]

[WITH CHECK | WITH NOCHECK] ADD

{<table_contraint>}[...n]

|DROP

[CONSTRAINT] contraint_name | COLUMN column }[....n]

{CHECK | NOCHECK} CONSTRAINT {ALL | constraint_name[,...n]}

{ENABLE | DISABLE} TRIGGER {ALL | trigger_name[....n]}}

Рассмотрим синтаксис данной команды, подробно объяснив назначение всех используемых ключевых слов. С помощью команды ALTER TABLE можно изменить определение уже существующих колонок, удалить любую из них, а также доба­вить в таблицу новые колонки:

Изменение определения колонки.

Данная операция осуществляется с использованием ключевого слова ALTER COLUMN, после которого помещается имя изменяемой колонки (column_name). Вы можете изменить тип данных колонки (new_data_type), размерность (precision) и точность (scale). При желании можно указать, разрешено ли колонке содержать значения NULL. В этом случае обязательно нужно указать тип данных для колонки, даже если вы не хотите его изменять (просто укажите существующий тип данных). Если вы определяете для колонки свойство NOT NULL, необходимо предварительно позаботиться о том, чтобы на момент изменения колонка не содержала ни одного значения NULL.

Добавление в таблицу новой колонки.

Для определения новой колонки необходимо использовать ключевое слово ADD. За ним следует описание колонки, которое имеет такой же формат, как и при создании колонки с помощью команды CREATE TABLE. Здесь же можно наложить на таблицу но­вые ограничения на значения колонок. Определив ключевое слово WITH CHECK, вы предписываете системе при добавлении новых ограничений на значения колонок FOREIGN KEY или CHECK осуществлять проверку данных в таблице на соответствие этим ограничениям. По умолчанию данная про­верка проводится для всех вновь создаваемых ограничений. Когда выпол­нение подобной проверки не требуется, необходимо использовать ключе­вое слово WITH NOCHECK.

Удаление колонок из таблицы.

В случае необходимости можно удалить из таблицы некоторые колонки. Для этого используйте ключевое слово DROP. Вы можете удалить как конкретную колонку (ключевое слово COLUMN), так и определенное ограничение на значение колонки. Однако необходимо помнить, что нельзя удалять следующие колонки:

– колонки, задействованные в индексе;

– колонки, полученные в результате репликации;

– колонки, для которых определены любые ограничения на значения;

– колонки, для которых определены значения по умолчанию;

– колонки, связанные с правилом.

Управление ограничениями на значения колонок.

Иногда бывает необхо­димо отключить ограничения на значения колонок FOREIGN KEY или CHECK. Отключение конкретного ограничения (NOCHECK CONSTRAINT) означает, что при вводе новых строк данные не будут проверяться на соответствие это­му ограничению. Когда снова потребуется сделать ограничение активным, используйте ключевое слово CHECK CONSTRAINT. При необходимости вы мо­жете управлять всеми ограничениями сразу. Для этого необходимо использовать ключевое слово ALL.

Управление триггерами.

При помощи данной команды можно управлять состоянием триггеров, определенных для данной таблицы. Ключевое слово DISABLE TRIGER, отключает триггер. При этом в процессе изменения данных в таблице те действия, которые определены в триггере как реакция системы на эти изменения, не производятся, хотя триггер продолжает существовать. Чтобы активизировать триггер, необходимо использовать команду с ключевым словом ENABLE TRIGGER. Если требуется управлять сразу всеми триггерами, используйте ключевое слово ALL.

Удаление таблиц.

Для удаления таблиц средствами Transact SQL используется команда DROP TABLE. Перед удалением необходимо убедиться, что удаляемая таблица не имеет взаимосвязи с другими таблицами.

Удаление записей из таблиц.

Как бы ни были ценны данные, хранящиеся в ваших таблицах, и сколько бы вре­мени вы ни потратили на их внесение в базу данных, приходит время, когда эти данные устаревают и становятся ненужными. Тогда приходится их удалять, что­бы освободить пространство в таблицах для новых данных. Какова бы ни была причина удаления данных, это наверняка придется делать любому пользовате­лю. Поэтому необходимо иметь представление, как это делается, иначе вместе с действительно ненужными данными могут быть незаметно удалены и актуаль­ные строки.

Удаление данных из таблицы выполняется построчно. За одну операцию можно выполнить удаление как одной строки, так и нескольких тысяч строк. Если необходимо удалить из таблицы все данные, то можно удалить саму табли­цу. Естественно, при этом будут удалены и все данные, хранящиеся в ней. Этот способ следует использовать в самых крайних случаях. Чаще всего для удаления данных используется команда DELETE, удаляющая строки таблицы. Синтаксис команды DELETE следующий:

DELETE

[FROM ]

{ table_name WITH ( <table_hintlimited> [,..n])

| view name

| rowset_function_limited }

[ FROM {<table_source>} [,...n] ]

[WHERE

{ <search_condition>

| { [ CURRENT OF

{ { [ GLOBAL ] cursorname }

| cursor_variable_name }] }]

[OPTION (<query_hint> [,...n])]

При работе с командой DELETE необходимо определить диапазон строк, кото­рый будет уничтожен. Для определения этого диапазона используются обычные запросы, описанные ранее в этой главе. Разделы, используемые в команде DELETE, были описаны в разделе «Выборка данных».

Предварительно можно просмотреть список удаляемых строк, если заменить ключевое слово DELETE на SELECT.

studfiles.net

Удаление записей из базы данных SQL

Удаление записей

Для удаления записей из таблицы применяется оператор 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

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

 

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

 

SELECT *

FROM Customer k INNER JOIN

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

 

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

 

DELETE FROM Product

 

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

Еще записи по теме

www.ikasteko.ru

40 Изменение структуры таблицы средствами T-SQL. Удаление таблиц.

40 Изменение структуры таблицы средствами T-SQL. Удаление таблиц.

Способ изменения структуры таблицы:

ALTER TABLE table

{[ALTER COLUMN

column_name {new_data_type [(precision [, scale])]

[NULL | NOT NULL]

| {ADD | DROP}  ROWGUIDCOL}]

|ADD

{[<column_definition> ]

column_name AS computed_column_expression}[,...n]

[WITH CHECK | WITH NOCHECK] ADD

{<table_contraint>}[...n]

|DROP

[CONSTRAINT] contraint_name |  COLUMN column }[....n]

{CHECK  |  NOCHECK} CONSTRAINT {ALL | constraint_name[,...n]}

{ENABLE  | DISABLE} TRIGGER {ALL | trigger_name[....n]}}

С помощью команды ALTER TABLE можно изменить определение уже существующих колонок, удалить любую из них, а также доба­вить в таблицу новые колонки:

Изменение определения колонки осуществляется с использованием ALTER COLUMN, после которого помещается имя изменяемой колонки. Можно изменить тип данных колонки (new_data_type), размерность (precision) и точность (scale). При желании можно указать, разрешено ли колонке содержать значения NULL. В этом случае обязательно нужно указать тип данных для колонки.

Для определения новой колонки - ADD. За ним следует описание колонки, которое имеет такой же формат, как и при создании колонки с помощью команды CREATE TABLE.

Удаление колонок из таблицы.

В случае необходимости можно удалить из таблицы некоторые колонки - DROP. Вы можете удалить как конкретную колонку (COLUMN), так и определенное ограничение на значение колонки. Однако необходимо помнить, что нельзя удалять следующие колонки:

1   колонки, задействованные в индексе;

2   колонки, полученные в результате репликации;

3   колонки, для которых определены любые ограничения на значения;

4   колонки, для которых определены значения по умолчанию;

Управление триггерами.

При помощи данной команды можно управлять состоянием триггеров, определенных для данной таблицы. DISABLE TRIGER - отключает триггер. Чтобы активизировать триггер - ENABLE TRIGGER. Если требуется управлять сразу всеми триггерами - ALL.

Удаление таблиц.

Для удаления таблиц средствами Transact SQL используется команда DROP TABLE. Перед удалением необходимо убедиться, что удаляемая таблица не имеет взаимосвязи с другими таблицами.

asoi.ucoz.net