Модельный SQL-интерпретатор (1115016), страница 6
Текст из файла (страница 6)
Выбрать всю информацию о студентах, телефоны которых оканчиваются на 45.SELECT * FROM Students WHERE Phone LIKE '%-%-45'Результат выполнения предложения будет такой:First_nameSergeyAlexeySurnameIvanovPetrovAge1820Phone145-45-45343-65-455. Выбрать всю информацию о студентах, телефоны которых содержат 45.SELECT * FROM Students WHERE Phone LIKE '%45%'В результате будет получена следующая таблица:First_nameSergeyAlexeyAndreyAlexandreSurnameIvanovPetrovFedorovZaharovAge18202320Phone145-45-45343-65-45123-45−18450- 33-336. Найти телефон студента Иванова.SELECT Phone FROM Students WHERE Surname = 'Ivanov'Результат:Phone145-45-457. Найти фамилии всех студентов.SELECT Surname FROM Students WHERE ALLРезультат получится таким:SurnameIvanovPetrovFedorovZaharov8.
Найти информацию о студентах, имена которых начинаются на любую из первыхтрех букв латинского алфавита, вторая буква их имен не совпадает с m, n, o, третьябуква — любая, а четвертая — x.26Модельный SQL-интерпретатор. Методическое пособие.SELECT * FROM Students WHERE First_name LIKE '[ABC][^mno]_x%'Ответ на такой запрос будет следующим:First_nameAlexeyAlexandreSurnamePetrovZaharovAge2020Phone343-65-45450- 33-339.
Найти фамилии и телефоны всех студентов старше 19 лет, фамилии которыхначинаются с букв второй половины латинского алфавита.SELECT Surname, Phone FROM Students WHERE (Age > 19) AND (Surname > 'M')В результате получится следующая таблица:SurnamePetrovZaharovPhone343-65-45450-33-3310. Увеличить значение поля «возраст» у всех студентов на 1.UPDATE StudentsSET Age = Age + 1WHERE ALLРезультат выполнения предложения будет таким:First_nameSergeyAlexeyAndreyAlexandreSurnameIvanovPetrovFedorovZaharovAge19212421Phone145-45-45343-65-45123-45−18450- 33-3311. Удалить таблицу Students из базы данных.DROP TABLE StudentsВ результате таблица Students будет удалена из базы данных, а соответствующий ейфайл — из файловой системы.5.
ПРИЛОЖЕНИЕПример реализации объектно-ориентированного интерфейса для работы с сокетамиФайл sock_wrap.h.27Волкова И.А., Головин И.Г., Кузина Л.Н., Мальковский М.Г.#ifndef __SOCK_WRAP_H__#define __SOCK_WRAP_H__#include#include#include#include#include#include#include<string><iostream><io.h><sys/types.h><sys/socket.h><netinet/in.h><netdb.h>namespace ModelSQL {// Exception --- класс исключений, генерируемых библиотекойclass Exception {protected:intm_ErrCode;public:Exception (int errcode ) : m_ErrCode(errcode) {}voidReport ();virtual std::stringGetMessage() = 0;};// SocketException --- класс исключенийclass SocketException : public Exception {static char * m_Message[];public:enum SocketExceptionCode {ESE_SUCCESS,ESE_SOCKCREATE,ESE_SOCKCONN,ESE_SOCKILLEGAL,ESE_SOCKHOSTNAME,ESE_SOCKSEND,ESE_SOCKRECV,ESE_SOCKBIND,ESE_SOCKLISTEN,ESE_SOCKACCEPT,};SocketException (SocketExceptionCode errcode) :Exception(errcode){}std::string GetMessage();};// SocketAddress --- базовый абстрактный класс для представления// сетевых адресовclass SocketAddress {protected:struct sockaddr * m_pAddr;public:SocketAddress () : m_pAddr(NULL) {}virtual~ SocketAddress () {}virtual intGetLength() = 0;virtualSocketAddress * Clone() = 0;operator struct sockaddr * ();};// UnSocketAddress --- представление адреса семейства AF_UNIX28Модельный SQL-интерпретатор.
Методическое пособие.class UnSocketAddress : public SocketAddress {public:UnSocketAddress (const char * SockName);~ UnSocketAddress ();intGetLength ();SocketAddress * Clone();};// InSocketAddress --- представление адреса семейства AF_INETclass InSocketAddress : public SocketAddress {public:InSocketAddress (const char * HostName, short PortNum)~ InSocketAddress ()intGetLength ()SocketAddress * Clone()};// BaseSocket --- базовый класс для сокетовclass BaseSocket {public:explicit BaseSocket (int sd = −1, SocketAddress * pAddr = NULL):m_Socket(sd), m_pAddr(pAddr) {}virtual~ BaseSocket();voidWrite(void * buf, int len);voidPutChar(int c);voidPutString(const char * str);voidPutString(const std::string& s)intRead (void * buf, int len);intGetChar();std::stringGetString();intGetSockDescriptor();protected:intm_Socket;SocketAddress * m_pAddr;voidCheckSocket()};// ClientSocket --- базовый класс для клиентских сокетовclass ClientSocket: public BaseSocket {public:voidConnect();};// ServerSocket --class ServerSocket:public:BaseSocket *protected:voidvoidvirtual void};базовый класс для серверных сокетовpublic BaseSocket {Accept();Bind();Listen(int BackLog);OnAccept (BaseSocket * pConn) {}// UnClientSocket --- представление клиентского сокета семейства// AF_UNIXclass UnClientSocket: public ClientSocket {public:UnClientSocket(const char * Address)};// InClientSocket --- представление клиентского сокета семейства// AF_INET29Волкова И.А., Головин И.Г., Кузина Л.Н., Мальковский М.Г.class InClientSocket: public ClientSocket {public:InClientSocket(const char * HostName, short PortNum);};// UnServerSocket --- представление серверного сокета семейства// AF_UNIXclass UnServerSocket: public ServerSocket {public:UnServerSocket(const char * Address);};// InServerSocket --- представление серверного сокета семейства// AF_INETclass InServerSocket: public ServerSocket {public:InServerSocket(short PortNum) throw (SocketException);};}; // конец namespace ModelSQL#endif30Модельный SQL-интерпретатор.
Методическое пособие.6. ЛИТЕРАТУРА[1]. Б.Страуструп. Язык программирования С++. Специальное издание. — М.; СПб.:«Издательство БИНОМ» — «Невский Диалект», 2001 г.[2]. И.А. Волкова, Т.В. Руденко. Формальные грамматики и языки. Элементы теориитрансляции. — М.: Изд-во МГУ, 1996.[3]. А. Робачевский.
Операционная система UNIX. — СПб.: «БХВ-Петербург», 1997.[4]. К. Дейт. Введение в системы баз данных. — М.: Вильямс, 2001.[5]. М. Грабер. Введение в SQL. — М.: Изд-во ЛОРИ, 1996.31.