Какой тип данных следует использовать для хранения телефонных номеров в SQL Server 2005? (10)
SQL Server 2005 довольно хорошо оптимизирован для запросов подстроки для текста в индексированных полях varchar. В 2005 году они ввели новую статистику в сводку строк для полей индекса. Это значительно помогает при полнотекстовом поиске.
Мне нужно сохранить номера телефонов в таблице. Укажите, какой тип данных следует использовать? Подождите. Пожалуйста, прочитайте, прежде чем вы получите ответ ..
Это поле необходимо индексировать в большой степени, так как Sales Reps могут использовать это поле для поиска (в том числе для поиска диких символов).
На данный момент мы ожидаем, что номера телефонов появятся в нескольких форматах (из файла XML). Должен ли я писать парсер для преобразования в единый формат? Могут быть миллионы данных (с дубликатами), и я не хочу связывать ресурсы сервера (в таких мероприятиях, как предварительная обработка слишком много) каждый раз, когда поступают некоторые исходные данные.
Любые предложения приветствуются.
Обновление: у меня нет контроля над исходными данными. Просто структура XML-файла является стандартной. Хотелось бы свести синтаксический анализ xml до минимума. Как только он находится в базе данных, поиск должен быть быстрым. Одно сумасшедшее предложение, которое здесь происходит, заключается в том, что оно должно работать даже с функцией Ajax AutoComplete (так что представители отдела продаж сразу могут увидеть соответствующие им). О, МОЙ БОГ!!
nvarchar с предварительной обработкой, чтобы стандартизировать их как можно больше. Вероятно, вы захотите извлечь расширения и сохранить их в другом поле.
Включает ли это следующее:
- Международные номера?
- Расширения?
- Другая информация, кроме фактического числа (например, «попросить о бобби»)?
Если все это нет, я бы использовал поле 10 символов и вычеркнул все нечисловые данные. Если первый — это да, а два других — нет, я бы использовал два поля varchar (50), один для исходного ввода и один со всеми нечисловыми данными, чередующимися и используемыми для индексирования. Если 2 или 3 — да, я думаю, что я бы сделал два поля и какой-то сумасшедший парсер, чтобы определить, что такое расширение или другие данные, и справиться с ним соответствующим образом. Конечно, вы могли бы избежать второго столбца, сделав что-то с индексом, где он выделяет лишние символы при создании индекса, но я бы просто сделал второй столбец и, вероятно, сделаю снятие символов с помощью триггера.
Обновление: для решения проблемы AJAX это может быть не так плохо, как вы думаете. Если это реалистично, то главное, что-либо делается для таблицы, сохраните только цифры во втором столбце, как я сказал, а затем сделайте индекс для этого столбца кластеризованным.
Для обозначения расширений довольно часто использовать «x» или «ext», поэтому допускайте 15 символов (для полной международной поддержки) плюс 3 (для «ext») плюс 4 (для самого расширения), давая в общей сложности 22 символа , Это должно держать вас в безопасности.
Альтернативно, нормализуйтесь на входе, поэтому любой «ext» переводится на «x», давая максимум 20.
Используйте CHAR (10), если вы храните только номера телефонов США. Удалите все, кроме цифр.
Используйте SSIS для извлечения и обработки информации. Таким образом, вы будете обрабатывать файлы XML, отделенные от SQL Server. При необходимости вы также можете преобразовывать SSIS на отдельный сервер. Сохраните номера телефонов в стандартном формате с помощью VARCHAR. NVARCHAR был бы лишним, так как мы говорим о числах и, возможно, о двух других символах, таких как «+», «», «(», «)» и «-».
Мы используем varchar (15) и, конечно, индекс в этом поле.
Причина в том, что международные стандарты могут поддерживать до 15 цифр
Если вы поддерживаете международные номера, я рекомендую отдельное хранилище кода зоны мира или кода страны, чтобы лучше фильтровать запросы, чтобы вы не анализировали и не проверяли длину полей номера телефона, чтобы ограничить возвращаемые вызовы в США для пример
Нормализовать данные, затем сохранить как varchar. Нормализация может быть сложной.
Это должно быть одноразовым ударом. Затем, когда приходит новая запись, вы сравниваете ее с нормализованными данными. Должно быть очень быстро.
Я бы использовал varchar (22). Достаточно большой, чтобы держать номер телефона в Северной Америке с расширением. Вы хотели бы удалить все неприятные символы (‘,’) ‘,’ — ‘или просто проанализировать их все в одном формате.
Я понимаю, что эта ветка устарела, но стоит упомянуть о преимуществе хранения в качестве числового типа для целей форматирования, особенно в .NET framework.
Типы данных Access
Типы данных Access разделяются на следующие группы:
- Текстовый – максимально 255 байтов.
- Мемо — до 64000 байтов.
-
Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:
- байт — целые числа от -0 до 255, занимает при хранении 1 байт
- целое — целые числа от -32768 до 32767, занимает 2 байта
- длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
- с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
- с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт
- Дата-время — 8 байтов
- Денежный — 8 байтов, данные о денежных суммах, хранящиеся с 4 знаками после запятой.
- Счетчик — уникальное длинное целое, генерируемое Access при создании каждой новой записи — 4 байта.
- Логический — логические данные 1бит.
- Поле объекта OLE — до 1 гигабайта, картинки, диаграммы и другие объекты OLE из приложений Windows. Объекты OLE могут быть связанными или внедренными.
- Гиперссылки — поле, в котором хранятся гиперссылки. Гиперссылка может быть либо типа UNC (стандартный формат для указания пути с включением сетевого сервера файлов), либо URL(адрес объекта, документа, страницы или объекта другого типа в Интернете или Интранете. Адрес URL определяет протокол для доступа и конечный адрес).
- Мастер подстановок — поле, позволяющее выбрать значение из другой таблицы Accesss или из списка значений, используя поле со списком. Чаще всего используется для ключевых полей. Имеет тот же размер, что и первичный ключ, являющийся также и полем подстановок, обычно 4 байта. (Первичный ключ – одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице Accesss. Не допускает неопределенных .Null. значений, всегда должен иметь уникальный индекс. Служит для связывания таблицы с вторичными ключами других таблиц).
Мировой код России
После распада Советского Союза все республики перешли на новые префиксы, а +7 остался за Российской Федерацией и Казахстаном. Крым после присоединения также перешел на российский префикс. Номер Казахстана имеют после +7 географические о мобильные коды в диапазоне 600-799. Также к данному международному коду относятся номера Абхазии и Южной Осетии.
7 — международный код России, огромная территория которой идентифицируется по следующим трем цифрам:
Для набора российского стационарного номера в международном формате с мобильного телефона необходимо набрать:
Несмотря на то, что зоновый код и местный номер могут иметь разное количество цифр, общая длина российского номера не может составлять более 12 символов (вместе с +7).
Чтобы позвонить из-за границы в Россию с мобильного телефона, нужно набрать обычный сотовый номер абонента, только не с 8, как мы делаем это внутри страны, а с международным кодом +7.
Чтобы позвонить абоненту в России со стационарного телефона, находящегося за границей, сначала необходимо выйти на международную линию.
Например, в России для выхода на международное соединение нужно набрать 8-10, в США 011, во многих других странах 00. Далее набирается префикс оператора (код города) и номер абонента.
Отметим, что в России также запланирован переход на новую систему набора номера. Ожидается, что к 2025 году вместо привычной “восьмерки”, в начале номера перед кодом города или оператора необходимо будет набирать “ноль”, а при звонках в другие страны со стационарных российских телефонов вместо 8-10 — 00.
В таблицу Город необходимо добавить сведения о регионе и изменить тип поля Код_Города на CHAR(5). Отметьте правильные ответы:
-
(Правильный ответ)
ALTER TABLE Город ADD Регион VARCHAR(50)ALTER TABLE Город ALTER COLUMN Код_Города VARCHAR(5) NOT NULL -
(Правильный ответ)
ALTER TABLE Город ADD Регион VARCHAR(50)ALTER TABLE Город ALTER COLUMN Код_Города CHAR(5) NOT NULL - ALTER TABLE Город ADD COLUMN Регион VARCHAR(50) NOT NULLALTER TABLE Город DROP Код_ГородаALTER TABLE Город ADD COLUMN Код_Города VARCHAR(5)
- ALTER TABLE Город ADD Регион VARCHAR(50) NOT NULLALTER TABLE Город ALTER Код_Города CHAR(5) NOT NULL
В таблице Город значения поля Тариф ограничить диапазоном от 0.1 руб. до 7.8. Руб.
-
(Правильный ответ)
ALTER TABLE Город ADD CHECK(Тариф>=0.1 AND Тариф<=7.8) - ALTER TABLE Город ALTER Тариф MONEY CHECK(Тариф >=0.1 AND Тариф<=7.8)
- ALTER TABLE Город ADD CHECK(Тариф <=0.1 AND >=7.8)
-
(Правильный ответ)
ALTER TABLE Город ADD CONSTRAINT ch1 CHECK(Тариф Between 0.1 and 7.8)
Точность с типов плавающей запятой
Рассмотрим дробь 1/3. Десятичное представление этого числа – 0,33333333333333… с тройками, уходящими в бесконечность. Если бы вы писали это число на листе бумаги, ваша рука в какой-то момент устала бы, и вы, в конце концов, прекратили бы писать. И число, которое у вас осталось, будет близко к 0,3333333333…. (где 3-ки уходят в бесконечность), но не совсем.
На компьютере число бесконечной длины потребует для хранения бесконечной памяти, но обычно у нас есть только 4 или 8 байтов. Эта ограниченная память означает, что числа с плавающей запятой могут хранить только определенное количество значащих цифр – и что любые дополнительные значащие цифры теряются. Фактически сохраненное число будет близко к необходимому, но не точно.
Точность числа с плавающей запятой определяет, сколько значащих цифр оно может представлять без потери информации.
При выводе чисел с плавающей точкой по умолчанию имеет точность 6, то есть предполагает, что все переменные с плавающей точкой имеют только до 6 значащих цифр (минимальная точность с плавающей точкой), и, следовательно, он будет отсекать всё, что идет дальше.
Следующая программа показывает усечение до 6 цифр:
Эта программа выводит:
Обратите внимание, что каждое из напечатанных значений имеет только 6 значащих цифр. Также обратите внимание, что в некоторых случаях переключился на вывод чисел в экспоненциальном представлении
В зависимости от компилятора показатель степени обычно дополняется до минимального количества цифр. Не беспокойтесь, 9.87654e+006 – это то же самое, что 9.87654e6, только с некоторым количеством дополнительных нулей. Минимальное количество отображаемых цифр показателя степени зависит от компилятора (Visual Studio использует 3, некоторые другие в соответствии со стандартом C99 используют 2)
Также обратите внимание, что в некоторых случаях переключился на вывод чисел в экспоненциальном представлении. В зависимости от компилятора показатель степени обычно дополняется до минимального количества цифр
Не беспокойтесь, 9.87654e+006 – это то же самое, что 9.87654e6, только с некоторым количеством дополнительных нулей. Минимальное количество отображаемых цифр показателя степени зависит от компилятора (Visual Studio использует 3, некоторые другие в соответствии со стандартом C99 используют 2).
Число цифр точности переменной с плавающей запятой зависит как от размера (у точность меньше, чем у ), так и от конкретного сохраняемого значения (некоторые значения имеют большую точность, чем другие). Значения имеют точность от 6 до 9 цифр, при этом большинство значений имеют не менее 7 значащих цифр. Значения имеют от 15 до 18 цифр точности, при этом большинство значений имеют не менее 16 значащих цифр. Значения имеет минимальную точность 15, 18 или 33 значащих цифр в зависимости от того, сколько байтов этот тип занимает.
Мы можем переопределить точность по умолчанию, которую показывает , используя функцию манипулятора вывода с именем . Манипуляторы вывода изменяют способ вывода данных и определяются в заголовке iomanip.
Вывод программы:
Поскольку с помощью мы устанавливаем точность в 16 цифр, каждое из приведенных выше чисел печатается с 16 цифрами. Но, как видите, числа определенно неточны до 16 цифр! А поскольку числа менее точны, чем числа , число ошибок у больше.
Проблемы с точностью влияют не только на дробные числа, они влияют на любое число со слишком большим количеством значащих цифр. Рассмотрим большое число:
Вывод программы:
123456792 больше, чем 123456789. Значение 123456789.0 имеет 10 значащих цифр, но значения обычно имеют точность 7 цифр (и результат 123456792 точен только до 7 значащих цифр). Мы потеряли точность! Когда теряется точность из-за того, что число не может быть точно сохранено, это называется ошибкой округления.
Следовательно, нужно быть осторожным при использовании чисел с плавающей запятой, которые требуют большей точности, чем могут содержать переменные.
Лучшая практика
Если нет ограничений по использованию памяти, отдавайте предпочтение использованию вместо , поскольку неточность часто приводит к погрешностям.
Из Википедии — свободной энциклопедии
Телефо́нный но́мер (или абонентский номер) — последовательность цифр (реже также букв ), присвоенная пользователю или абоненту телефонной сети, зная которую, можно ему позвонить. С технической точки зрения телефонный номер — необходимое условие автоматической коммутации вызова, которое определяет маршрут его прохождения и поиска телефонного оборудования вызываемого пользователя для соединения (в рамках сигнализации). Телефонный номер назначается обслуживающим персоналом АТС или коммутатора, так чтобы каждый пользователь сети имел уникальную идентификацию. При подключении к телефонной сети общего пользования абонентский номер (идентификатор, ID) выделяется компанией-оператором связи при заключении договора об оказании услуг телефонной связи. В свою очередь, регулированием и распределением диапазонов (блоков) номеров в глобальной телефонной сети общего пользования между компаниями, также как и стандартизацией и общим контролем за услугами связи занимаются соответствующие государственные и международные организации.
Remarks
Часто ошибочно считают, что в типах данных NCHAR(n) и NVARCHAR(n) число n указывает на количество символов. Однако на самом деле число n в NCHAR(n) и NVARCHAR(n) — это длина строки в парах байтов (0–4000). n никогда не определяет количество хранимых символов. То же самое верно и в отношении типов CHAR(n) и VARCHAR(n).
Заблуждение возникает из-за того, что при использовании символов, определенных в диапазоне Юникода 0–65 535, на каждую пару байтов приходится один хранимый символ. Однако в старших диапазонах Юникода (65 536–1 114 111) один символ может занимать две пары байтов. Например, в столбце, определенном как NCHAR(10), Компонент Database Engine может хранить 10 символов, занимающих одну пару байтов (диапазон Юникода 0–65 535), но меньше 10 символов, занимающих две пары байтов (диапазон Юникода 65 536–1 114 111). Дополнительные сведения о хранении символов Юникода и их диапазонах см. в разделе .
Если значение n в определении данных или в инструкции объявления переменной не указано, то длина по умолчанию равна 1. Когда n не задано функцией CAST, длина по умолчанию равняется 30.
Если вы используете nchar или nvarchar, мы рекомендуем:
- использовать nchar, если размеры записей данных в столбцах одинаковые;
- использовать nvarchar, если размеры записей данных в столбцах существенно отличаются;
- использовать nvarchar(max), если размеры записей данных в столбцах существенно отличаются и длина строки может превышать 4000 пар байтов.
Тип sysname — это предоставляемый системой определяемый пользователем тип данных, который функционально эквивалентен типу nvarchar(128) за исключением того, что он не допускает значения NULL. Тип sysname используется для ссылки на имена объектов баз данных.
Объектам, в которых используются типы данных nchar и nvarchar, назначаются параметры сортировки базы данных по умолчанию, если только иные параметры сортировки не назначены с помощью предложения COLLATE.
Для типов данных nchar и nvarchar параметр SET ANSI_PADDING всегда принимает значение ON. Параметр SET ANSI_PADDING OFF не применяется к типам данных nchar или nvarchar.
Префикс N в строковых константах с символами Юникода указывает на входные данные в кодировке UCS-2 или UTF-16 (в зависимости от того, используются ли параметры сортировки с поддержкой дополнительных символов). Без префикса N строка преобразуется в стандартную кодовую страницу базы данных, и определенные символы могут не распознаваться. Начиная с SQL Server 2019 (15.x) при использовании параметров сортировки с поддержкой UTF-8 стандартная кодовая страница может хранить символы Юникода в кодировке UTF-8.
Примечание
Когда строковая константа имеет префикс N и ее длина не превышает максимальную длину строкового типа данных nvarchar (4000), результатом неявного преобразования будет строка в кодировке UCS-2 или UTF-16. В противном случае результатом неявного преобразования будет большое значение nvarchar(max).
Предупреждение
Каждому ненулевому столбцу varchar(max) и nvarchar(max) необходимо дополнительно выделить 24 байта памяти, которые учитываются в максимальном размере строки в 8060 байт во время операции сортировки. Эти дополнительные байты могут неявно ограничивать число ненулевых столбцов varchar(max) или nvarchar(max) в таблице. При создании таблицы или во время вставки данных не возникает особых ошибок (кроме обычного предупреждения о том, что максимальный размер строки превышает максимально допустимое значение в 8060 байт). Такой большой размер строки может приводить к ошибкам (например, ошибке 512), которые пользователи не ожидают во время обычных операций. Примерами операций могут служить обновление ключа кластеризованного индекса или сортировка полного набора столбцов.
В базе данных basa_user зарегистрировано три пользователя UserA, UserB и UserC. Какие действия предпримет система?
Basa_userАдминистраторUserAUserBUserC
1
2
3
4
5
6
7
8CREATE TABLE tab
(id_t INT,
nam_t CHAR(8))
sp_addrole ‘role1’
sp_addrolemember
‘role1′,’UserA’
sp_addrolemember
‘role1′,’UserB’
GRANT INSERT ON
tab TO role1
GRANT INSERT ON
tab TO UserA
WITH GRANT
OPTIONREVOKE INSERT ON
tab
TO UserA CASCADE
GRANT INSERT ON
tab TO UserC9INSERT INTO tab
values(1,’aa’)INSERT INTO tab
values (2,’bb’)INSERT INTO tab
values (3,’cc’)INSERT INTO tab
values (4,’dd’)10????
(Правильный ответ)10
ВыполненоВыполненоВыполненоОтклонено
10
ВыполненоОтклоненоВыполненоОтклонено
10
ВыполненоОтклоненоВыполненоВыполнено
10
ОтклоненоВыполненоОтклоненоВыполнено
Пусть дана таблица Город с полями
Код_Города
CHAR(5)
Название
VARCHAR(20)
Тариф
MONEY
Регион
VARCHAR(30)
Найти регионы, стоимость минуты телефонного разговора с которыми не меньше 10 руб., но не больше 100 руб.
- SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф Between 10 OR 100
-
(Правильный ответ)
SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф>=10 And Тариф<=100 - SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф>10 OR Тариф<100
-
(Правильный ответ)
SELECT DISTINCT Регион, ТарифFROM ГородWHERE Тариф Between 10 And 100
Даны таблицы Рейс и Билет.
CREATE TABLE Рейс(Номер_рейса INT, Конечный_пункт VARCHAR(30), Продолжительность_маршрута INT) CREATE TABLE БИЛЕТ(Номер_места CHAR(3), Номер_рейса CHAR(6), Фамилия_пассажира VARCHAR(20))
Определить самый продолжительный рейс.
- SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута= Max(Рейс.Продолжительность_маршрута)
- SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута= (Max(SELECT Рейс.Продолжительность_маршрута FROM Рейс))
-
(Правильный ответ)
SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута>=ALL (SELECT Рейс.Продолжительность_маршрута FROM Рейс) -
(Правильный ответ)
SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрутаFROM РейсWHERE Рейс.Продолжительность_маршрута= (SELECT Max(Рейс.Продолжительность_маршрута) FROM Рейс)
Даны таблицы Автор и Книга.
CREATE TABLE Автор( Код_Автора INT , Фамилия VARCHAR(50)) CREATE TABLE Книга( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)
Определить авторов, чьи какие-либо книги проданы в наименьшем количестве.
-
(Правильный ответ)
SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество <=ALL(SELECT Книга.Количество FROM Книга) -
(Правильный ответ)
SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество=(SELECT Min(Книга.Количество) FROM Книга) - SELECT Автор.Фамилия, Книга.КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество = Min(Книга. Количество)
- SELECT Автор.Фамилия, Книга. КоличествоFROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_АвтораWHERE Книга.Количество =Min(SELECT Книга.Количество FROM Книга)
4 ответов
ну, учитывая, что нет никакой разницы между varchar(30) и varchar(100), если вы храните только 20 символов в каждом, ошибитесь на стороне осторожности и просто сделайте это 50. предполагая, что вы не храните такие вещи, как ‘+’, ‘()’, ‘-‘, пространства и то, что у вас есть (и почему бы вам, это презентационные проблемы, которые будут варьироваться в зависимости от местных обычаев и сетевых распределений в любом случае), рекомендация ITU-T Е
164 для международной телефонной сети (через которую подключается большинство национальных сетей) указывает, что весь номер (включая код страны, но не включая префиксы, такие как международные звонки префикс необходимо для набора номера, который варьируется от страны к стране, ни включая суффиксы, такие как добавочные номера АТС) не более 15 символов
предполагая, что вы не храните такие вещи, как ‘+’, ‘()’, ‘-‘, пространства и то, что у вас есть (и почему бы вам, это презентационные проблемы, которые будут варьироваться в зависимости от местных обычаев и сетевых распределений в любом случае), рекомендация ITU-T Е. 164 для международной телефонной сети (через которую подключается большинство национальных сетей) указывает, что весь номер (включая код страны, но не включая префиксы, такие как международные звонки префикс необходимо для набора номера, который варьируется от страны к стране, ни включая суффиксы, такие как добавочные номера АТС) не более 15 символов.
префиксы вызова зависят от вызывающего абонента, а не вызываемого абонента, и поэтому не должны (во многих случаях) храниться с номером телефона. Если база данных хранит данные для личной адресной книги (в этом случае имеет смысл хранить префикс международного вызова), самые длинные международные префиксы вам придется иметь дело с (согласно Википедии) в настоящее время 5 цифр, в Финляндии.
Что касается суффиксов, некоторые УАТС поддерживают до 11-значные расширения (опять же,согласно Википедии). Поскольку добавочные номера УАТС являются частью другого плана набора номера (УАТС отделены от телефонных компаний), добавочные номера должны быть отличимы от телефонных номеров либо с символом разделителя, либо путем их хранения в другом столбце.
в спецификации GSM В 3GPP ТС 11.11, есть 10 байт, выделенных в MSISDN EF (6F40) для «набора номера». Поскольку это GSM-представление номера телефона, и его использование заменено на nibble (и всегда есть возможность скобок), 22 символа данных должно быть много.
по моему опыту, есть только один экземпляр открытых/закрытых скобок, это мое рассуждение для вышеизложенного.
Это немного хуже, я использую визитную карточку для международных звонков, поэтому ее локальный номер в US + account# (6 цифр) + pin (4 цифры) + «пауза» + то, что вы описали выше.
Я подозреваю, что могут быть и другие случаи
Теория появления международного формата номера
Последовательность набора номера определяется телефонным планом нумерации — унифицированной системой, позволяющей пользователям сети отправлять и принимать звонки, а также определять звонящего (услуга определения номера включена во все тарифные планы сотовых операторов).
В мире существует два плана нумерации: открытый и закрытый. При первом местные вызовы можно совершать без национального номера (кода города), а при втором, то есть закрытом, необходимо набирать полный международный формат номера для звонка любого вида: местного, междугороднего, международного.
В основном страны применяют закрытый план нумерации, Москва сегодня полностью переведена на него. Отметим, что популярный термин “прямой номер” появился до того, как введен закрытый план. “Кривым”, на самом деле, является не номер с городским кодом, а тот, что можно набирать напрямую без кода города/оператора.
По планам Министерства коммуникаций и связи, к 2020 году Россия должна полностью перейти на закрытый план нумерации. Это означает, что в городах нельзя будет набирать короткие 5-7-значные номера для местных вызовов, а всегда будет необходимо использовать полный международный формат номера.
Сейчас у нас есть различие в наборе комбинаций при звонках внутри телефонной зоны, за ее пределы и при междугородних вызовах.
Если говорить о вызовах со стационарных телефонов, то для выхода на межгород нужно набирать 8-ку (в других странах 0).
При закрытом плане нумерации всегда нужно будет набирать расширенный вариант, то есть с +7 и кодом города.
Страны редко меняют план нумерации, но в ближайшем будущем это предстоит россиянам. Большинство абонентов не почувствуют разницы, ведь в телефонной книге смартфона удобно сразу сохранять длинную версию номера, лишь только редким пользователям стационарных телефонов придется всегда набирать длинные номера в международном формате.
Вывести список авторов-женщин, работающих в жанре романа, но не в жанре фантастики.
CREATE TABLE Автор(Код_Автора INT , Фамилия VARCHAR(50), Пол VARCHAR(50) NOT NULL ) CREATE TABLE Книга( Код_Книги INT, Название VARCHAR(50) NOT NULL, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL)
- SELECT Автор.Фамилия, Автор.Код_АвтораFROM Автор,КнигаWHERE Автор.Пол=’ж’ AND Автор.Код_Автора= Книга.Код_Автора ANDКнига.Тематика=’Роман’ AND(Книга.Тематика<>’Фантастика’)
- SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Книга.Тематика=’Роман’ ANDКнига.Тематика=’Фантастика’
-
(Правильный ответ)
SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Автор.Код_Автора IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Роман’) ANDАвтор.Код_Автора NOT IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Фантастика’) - SELECT Автор.Фамилия, Автор.Код_АвтораFROM АвторWHERE Автор.Пол=’ж’ AND Автор.Код_Автора IN (SELECT Книга.Код_АвтораFROM КнигаWHERE Книга.Тематика=’Роман’ ANDКнига.Тематика<>’Фантастика’)
В таблицу Рейс необходимо добавить бортовой номер и увеличить длину поля Конечный_пункт.
- ALTER TABLE Рейс ADD борт INT(5)ALTER TABLE Рейс ALTER ADD Конечный пункт VARCHAR(50)
-
(Правильный ответ)
ALTER TABLE Рейс ADD COLUMN борт CHAR(5)ALTER TABLE Рейс ALTER COLUMN Конечный_пункт VARCHAR(50) - ALTER TABLE Рейс ADD COLUMN борт FLOAT(8,3)ALTER TABLE Рейс ALTER Конечный_пункт VARCHAR(50)
- ALTER TABLE Рейс ADD COLUMN борт VARCHAR(3,1) NOT NULLALTER TABLE Рейс DROP Конечный_пунктALTER TABLE Рейс ADD COLUMN Конечный_пункт VARCHAR(50)
Пусть дана таблица Город.
Код_Города
CHAR(5)
Название
VARCHAR(20)
Тариф
MONEY
Регион
VARCHAR(30)
Вывести регионы и города, стоимость минуты разговора с которыми либо меньше 20 руб., либо больше 100, а название города оканчивается на «-ов» или «-ин».
- SELECT Регион, Название, ТарифFROM ГородWHERE (Название Like ‘%ов’ Or Название Like ‘%ин’) OR (Тариф<20 Or Тариф>100)
- SELECT Регион, Название, ТарифFROM ГородWHERE (Название Like ‘%ов’ AND Название Like ‘%ин’) OR (Тариф<20 AND Тариф>100)
-
(Правильный ответ)
SELECT Регион, Название, ТарифFROM ГородWHERE ((Название Like ‘%ов’ Or Название Like ‘%ин’) AND (Тариф<20 Or Тариф>100))
Пусть дана таблица Автор.
Фамилия
VARCHAR(50)
Пол
CHAR(3)
Дата_рождения
DATETIME
Телефон
CHAR(9)
Количество_трудов
INT
Город
VARCHAR(15)
Вывести в алфавитном порядке фамилии авторов из Самары, в телефонном номере которых на втором или третьем месте стоят цифры 5 или 8, а последними являются цифры 34.
- SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ OR (Телефон Like ‘_%’ AND Телефон Like ‘__%’) OR Телефон Like ‘%’ORDER BY Фамилия
- SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND Телефон Like ‘_%’ Or Телефон Like ‘__%’ And Телефон Like ‘%’ORDER BY Фамилия
- SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND (Телефон Like ‘_%’ AND Телефон Like ‘__%’) And Телефон Like ‘%’ORDER BY Фамилия
-
(Правильный ответ)
SELECT Фамилия, Город, ТелефонFROM АвторWHERE Город=’Самара’ AND (Телефон Like ‘_%’ Or Телефон Like ‘__%’) And Телефон Like ‘%’ORDER BY Фамилия
Пусть дана таблица Город.
Код_Города
CHAR(5)
Название
VARCHAR(20)
Тариф
MONEY
Регион
VARCHAR(30)
Вывести в алфавитном порядке список городов Поволжского региона, в коде которых встречается цифра 9.
- SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9%’ OR Регион=’Поволжье’ORDER BY Название
- SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9_’ OR Регион=’Поволжье’ORDER BY Название
- SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘_9_’ AND Регион=’Поволжье’ORDER BY Название
-
(Правильный ответ)
SELECT Название, Код_Города, РегионFROM ГородWHERE Код_Города Like ‘%9%’ AND Регион=’Поволжье’ORDER BY Название
Пусть дана таблица Блюдо с полями
Название_блюда
VARCHAR(20)
Время_приготовления
DATETIME
Калорийность
INT
Повар
VARCHAR(20)
Стоимость
MONEY
Определить повара, стоимость блюд которого не превышает 100 руб., а калорийность – 400 ккал.
- SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность>400 OR Стоимость<100
- SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Between(Калорийность<400 AND Стоимость<100)
-
(Правильный ответ)
SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность<=400 AND Стоимость<=100 - SELECT Повар, Калорийность, СтоимостьFROM БлюдоWHERE Калорийность<=400 OR Стоимость<=100