По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Поговорим про популярную утилиту IP – АТС Asterisk FOP2 (Flash Operator Panel 2) . Данная панель позволяет видеть и понимать детальную real-time (реального времени) статистику вашей АТС, например, кто с кем разговаривает, продолжительность вызовов, количество вызовов в очереди или на удержании и так далее. Помимо этого, FOP2 предлагает полноценный телефон в браузере, с помощью которого можно осуществлять вызов и прием звонков, трансфер, перевод на мобильный и запись разговора, а для супервизора доступны опции прослушивания (шпионский канал) разговоров операторов в реальном времени и просмотр статистики по звонкам.
/p>
В бесплатной версии приложения вы можете работать максимум с пятнадцатью сущностями (экстеншены, конференц - румы, транки и так далее). В терминологии продукта их называют «кнопками. »Интересный функционал, не правда ли? В статье расскажем про установку и первичную настройку продукта.
Пошаговое видео
Установка
Установку мы производим на операционную систему CentOS 6. Начнем с того, что определим разрядность нашей операционной системы:
Важно! Перед установкой убедитесь, что у вас установлена компонента make. Для этого, дайте команду yum -y install make в консоль сервера.
uname -m
i686 - у вас 32 – х битная система;
x86_64 - у вас 64 – х битная система;
Отлично, теперь необходимо скачать нужный нам дистрибутив. Перейдем в директорию для загрузки файла командой cd /usr/src.
Для 32-х битной системы:
wget http://www.fop2.com/download/centos32 -O fop2.tgz
Для 64-х битной системы:
wget http://www.fop2.com/download/centos64 -O fop2.tgz
Распаковываем скачанный архив и переходим в директорию установки:
tar zxvf fop2.tgz
cd fop2
Запускаем инсталлятор, который установит все необходимые файлы конфигурации, клиентской и серверной части программного комплекса:
make install
Настройка AMI
Один из самых главных файлов конфигурации FOP2 это /usr/local/fop2/fop2.cfg. В нем находятся опции настройки подключения к AMI (Asterisk Management Interface). Для начала, давайте создадим параметры подключения для FOP2. Для этого, откроем файл конфигурации /etc/asterisk/manager.conf:
vim /etc/asterisk/manager.conf
Добавляем пользователя fop2 в конфигурацию следующим образом:
[fop2]
secret = ваш_пароль(устойчивый к взлому)
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
writetimeout = 500
Сохраняем конфигурацию файла и даем следующую команду в консоль (перегружаем AMI):
[root@asterisk ~]# asterisk -rx "manager reload"
Вносим изменения в файл конфигурации FOP2:
vim /usr/local/fop2/fop2.cfg
Меняем значение параметров manager_user и manager_secret на созданные выше. Должно получиться вот так:
Сохраняем изменения. Проверим подключение между FOP2 и AMI. Для этого в консоль сервера дадим следующую команду:
/usr/local/fop2/fop2_server --test
Если все в порядке, то вы увидите следующий вывод:
Запускаем приложение FOP2 командой:
[root@asterisk ~]# service fop2 start
Starting Flash Operator Panel 2: [ OK ]
Установка одной командой
Недавно, разработчики FOP2 разработали специальный скрипт, который последовательно установит панель оператора всего с помощью одной команды:
wget -O - http://download.fop2.com/install_fop2.sh | bash
Скрипт загрузит необходимые файлы, распакует и установит их. После, административный интерфейс будет доступен по ссылке http://ваш_сервер/fop2/admin, а интерфейс пользователя по ссылке http://ваш_сервер/fop2.
Подключение по WEB
Подключаемся к интерфейсу администратора FOP2. Для этого, откройте URL администраторской консоли по адресу http://IP-адрес/fop2/admin/:
Если вы используете FreePBX, то можете указать при входе тот же логин и пароль. Как видно на скриншоте, с нашим сервером FOP2 все хорошо (FOP2 Server Status: OK – Version: 2.31.08):
Создадим пользователя. Для этого, перейдите в раздел Users. В главной консоли будет отображен список текущих сущностей, настроенных в Asterisk. Выберем для редактирования нужную и создадим параметры доступа. Самое важное поле - Secret, которое представляет из себя пароль для доступа пользователя и интерфейс:
Теперь переходим по адресу http://IP-адрес/fop2 для доступ к пользовательской консоли:
Указываем логи и пароль, созданные ранее. Вуаля, мы вошли в операторскую панель :)
Возможные проблемы
Зачастую, при инсталляциях, может появиться проблема с доступом к пользовательской консоли (http://IP-адрес/fop2). Пользователи видят постоянную загрузку с надписью One moment please и счетчиком подключения к серверу.
Для решения этой проблемы воспользуйтесь следующим алгоритмом:
Проверьте, запущен ли сервер FOP2. Дайте команду ps -uax | grep fop2 в консоль
Если сервер вернул значение в выводе команды:
Проверяем наличие записей в iptables. Дайте команду iptables -vnL INPUT:
Вывод команды содержит более 2 записей
→ Добавляем в iptables правило, которое разрешает подключение к порту 4445 по TCP командой sudo iptables -I INPUT -p tcp -m tcp --dport 4445 -j ACCEPT
Вывод команды содержит менее 2 записей
Ваш компьютер и сервер FOP2 находятся в одном сетевом сегменте (в одном LAN)?
Да
→ Скорее всего проблема в Вашем браузере. Рекомендуемый для подключения браузер – Google Chrome. Попробуйте очистить куки браузера.
Нет
→ Проблема на сетевом уровне. Скорее всего в сети имеет место фаервол, которые не пропускает трафик по tcp на порт 4454.
Вывод отсутствует
Проверяем, запущен ли сервис FOP. Дайте команду netstat -lnp | grep 444
Вывод команды присутствует.
→ Дайте команду service fop2 start
Вывод отсутствует.
Попробуйте запустить FOP2 прямо из CLI с помощью команды /usr/local/fop2/fop2_server -X 15 и с помощью service fop2 start
Появляется ошибка FOP2 was unable to find an eth0 interface...
→ Наличие данной ошибки говорит об отсутствии на вашем сервере интерфейса eth0. Если вы используете eth1, то вам необходимо открыть файл /etc/sysconfig/fop2 и добавить туда опцию OPTIONS="-d -i eth1". Соответственно, если у вас иное обозначение NIC, то вместо eth1 укажите его. После этого даем рестарт FOP2 командой service fop2 start
Появляется ошибка Segmentation Fault
→ Вам необходимо установить пакет ssl совместимости с помощью yum. Для этого, дайте команду yum install openssl098e в консоль сервера. После этого, делаем рестарт командой service fop2 start
Сегодня хотим поговорить про модуль «Web Callback» для FreePBX 13. Модуль является платным и стоит $50. Платеж единоразовый. В сравнении с популярными сервисами обратного звонка, покупка модуля окупается в среднем за полгода. Интересно? Тогда читайте ниже: настройка и адаптация стиля под свой сайт.
Процесс настройки
Данный модуль находится в меню Applications. Он позволяет легко и просто добавить HTML “Позвоните Мне” код на ваш веб-сайт. Посетители просто вводят свой телефонный номер для соединения с нужной вам очередью или ринг-группой. Далее, этот модуль позволяет выставить префикс для поступающего номера, что позволит определить, что вызов идет именно с модуля обратного звонка. Так же можно указать правила набора номера, для определения номеров, на которые можно совершить вызов. Как только вы установите направление для вызова и подтвердите настройки модуля, вы получите HTML-код для добавления на вашу страницу.
Итак, пошаговый процесс создания кода для помещения на веб-страницу:
Нажмите на + Add Web Callback
Заполните поля:
Описание полей:
Name – Название коллбэка
CID Prepend – Префикс при определении номера, в данном случае – «CALLBACK»
Number Prepend – Префикс при наборе номера
Dial Matches – Маска, для определения номеров, которые можно набирать
Icon – Выбор иконки из предложенных
Valid Message – Сообщение, которое высвечивается при правильном наборе
Invalid Message – Сообщение, которое высвечивается при неправильном наборе
Error Message – Сообщение, которое высвечивается, если произошла какая-либо ошибка
Destination – Направление вызова, в данном случае – ринг-группа с названием “web callback”
HTML Code – Код, который появится после сохранения настроек
Нажмите Submit
Далее нужно только добавить получившийся код на сайт и пользоваться. Только надо учитывать два момента: первый – данный модуль надо купить у Shmooze и иметь публичный адрес вашей АТС/или пробрасывать порты.
Изменения стиля формы обратного звонка
После того как мы создали форму обратного звонка на сайт, нам необходимо доработать ее внешне, так как встроенные формы имеют не привлекательный дизайн. Открываем файл /etc/schmooze/wcb.html и добавляем в него следующий код:
<style type="text/css">
#frame {
background-image: url('/admin/images/webcallback.png');
background-repeat: no-repeat;
background-size: 200px;
height: 65px;
cursor: pointer;
cursor: hand;
}
#webcallbackinput {
position: relative;
left: 66px;
top: 30px;
width: 125px;
}
</style>
<div id="frame">
<input type="text" name="num" placeholder="Укажите ваш номер" id="webcallbackinput" value="">
<input type="hidden" id="dest" value="http://1.2.3.4:12345/wcb.php">
<input type="hidden" id="i" value="1">
</div>
<div id="link"></div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#frame').click(function(){
if ($('#webcallbackinput').val()) {
var valid_msg = 'Спасибо. Мы уже звоним Вам!';
var invalid_msg = 'Ошибка. Пожалуйста, укажите все параметры согласно требованию полей';
var but = $(this);
$.ajax({
url: $('#dest').val(),
type: 'post',
data: {p: $('#webcallbackinput').val(), i: $('#i').val()},
cache: false,
success: function(data, b, c) {
data = $.parseJSON(data);
switch (data.Response) {
case 'Error':
switch (data.Message) {
case 'Originate failed':
alert(invalid_msg);
break;
default:
alert(data.Message);
break;
}
break;
case 'Success':
alert(valid_msg);
break;
default:
break;
}
},
error: function(a, b, c) {
alert(invalid_msg);
}
})
}
})
});
</script>
Обратите внимание, чтобы форма работала корректно, вам необходимо указать корректное значение параметра value в поле input ниже (это значение было сгенерировано на этапе настройки в поле) и значение параметр id в поле, следующем следом за ним. В нашем примере, id=2:
<input type="hidden" id="dest" value="http://1.2.3.4:12345/wcb.php">
<input type="hidden" id="i" value="1">
В данном примере указано значение http://1.2.3.4:12345/wcb.php , где значение 1.2.3.4 – внешний IP – адрес нашего маршрутизатора, а 12345 – это проброс нестандартного порта в наш Asterisk. Рекомендуем в настройках проброшенного порта указать разрешенные сети (source address), с которых можно подключиться через этот порт. Это необходимо в целях безопасности, если ваш Web – сервер находится не в локальной сети, а например, на хостинге
Так же здесь вы можете настроить сообщения, которые будут показаны пользователю при успешном и неуспешном исходе вызова обратного звонка
var valid_msg = 'Спасибо. Мы уже звоним Вам!';
var invalid_msg = 'Ошибка. Пожалуйста, укажите все параметры согласно требованию полей ';
SQL расшифровывается как Structured Query Language, или структурированный язык запросов. Команды SQL – это инструкции, которые даются базе данных для выполнения задач, функций и запросов с данными.
SQL-командами можно пользоваться для поиска по базе данных и выполнения различных функций: создания и удаления таблиц, добавления данных в таблицы и их редактирования.
Ниже приведен список основных команд (их иногда называют операторами), которые необходимо знать при работе с SQL.
SELECT и FROM
SELECT в запросе определяет, какие столбцы данных отобразить в результатах. Кроме того, в SQL есть возможности отображать данные не из столбца таблицы.
В примере ниже показаны 3 столбца, взятые из таблицы студентов Student (через SELECT и FROM) и один вычисляемый столбец. В базе данных хранятся ID (studentID), имя (FirstName) и фамилия (LastName) студента. Мы можем объединить столбцы с именем и фамилией и создать вычисляемое поле с полным именем (FullName).
SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName
FROM student;
Вывод:
+-----------+-------------------+------------+------------------------+
| studentID | FirstName | LastName | FullName |
+-----------+-------------------+------------+------------------------+
| 1 | Monique | Davis | Monique Davis |
| 2 | Teri | Gutierrez | Teri Gutierrez |
| 3 | Spencer | Pautier | Spencer Pautier |
| 4 | Louis | Ramsey | Louis Ramsey |
| 5 | Alvin | Greene | Alvin Greene |
| 6 | Sophie | Freeman | Sophie Freeman |
| 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd |
| 8 | Donald D. | Chamberlin | Donald D. Chamberlin |
| 9 | Raymond F. | Boyce | Raymond F. Boyce |
+-----------+-------------------+------------+------------------------+
9 rows in set (0.00 sec)
CREATE TABLE
Название CREATE TABLE говорит само за себя – оператор создает таблицу. Вы можете задать название таблицы и настроить, какие столбцы будут присутствовать в таблице.
CREATE TABLE table_name (
column_1 datatype,
column_2 datatype,
column_3 datatype
);
ALTER TABLE
ALTER TABLE изменяет структуру таблицы. Вот так можно добавить столбец в базу данных:
ALTER TABLE table_name
ADD column_name datatype;
CHECK
CHECK ограничивает диапазон значений, которые можно добавить в столбец.
Когда вы настраиваете ограничение CHECK для отдельного столбца, оператор проверяет, что в этом столбце присутствуют строго определенные значения. Если же CHECK настраивается для таблицы, то он может ограничивать значения в отдельных столбцах на основании значений из других столбцов этой строки.
В следующем примере при создании таблицы Persons используется ограничение CHECK для столбца «Возраст» (Age). Таким образом проверяется, что в таблицу не попадают лица младше 18 лет.
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
Следующий синтаксис используется для присвоения названия оператору CHECK и настройки CHECK для нескольких столбцов:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
WHERE (AND, OR, IN, BETWEEN и LIKE)
Оператор WHERE используется для ограничения количества возвращаемых строк.
Сначала, в качестве примере, мы покажем оператор SELECT и его результат без оператора WHERE. Затем добавим оператор WHERE, в котором используются сразу 5 из вышеуказанных квалификаторов.
SELECT studentID, FullName, sat_score, rcd_updated FROM student;
+-----------+------------------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+------------------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
+-----------+------------------------+-----------+---------------------+
9 rows in set (0.00 sec)
Теперь повторим запрос SELECT, но ограничим возвращаемые строки оператором WHERE.
STUDENT studentID, FullName, sat_score, recordUpdated
FROM student
WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8)
AND
sat_score NOT IN (1000, 1400);
+-----------+----------------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+----------------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
5 rows in set (0.00 sec)
UPDATE
Для обновления записи в таблице используется оператор UPDATE.
Условием WHERE можно уточнить, какие именно записи вы бы хотели обновить. Вы можете обновлять по одному или нескольким столбцам сразу. Синтаксис выглядит так:
UPDATE table_name
SET column1 = value1,
column2 = value2, ...
WHERE condition;
В примере ниже обновляется название записи (поле Name) с Id 4:
UPDATE Person
SET Name = “Elton John”
WHERE Id = 4;
Помимо этого, можно обновлять столбцы в таблице значениями из других таблиц. Чтобы получить данные из нескольких таблиц, воспользуйтесь оператором JOIN. Синтаксис выглядит так:
UPDATE table_name1
SET table_name1.column1 = table_name2.columnA
table_name1.column2 = table_name2.columnB
FROM table_name1
JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key
В примере ниже мы обновляем поле «Менеджер» (Manager) для всех записей:
UPDATE Person
SET Person.Manager = Department.Manager
FROM Person
JOIN Department ON Person.DepartmentID = Department.ID
GROUP BY
GROUP BY позволяет объединять строки и агрегировать данные.
Вот так выглядит синтаксис GROUP BY:
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
HAVING
HAVING позволяет сортировать данные, которые собираются через GROUP BY. Таким образом, пользователю показывается лишь ограниченный набор записей.
Вот так выглядит синтаксис HAVING:
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > value;
AVG()
AVG, или среднее, вычисляет среднее значение числового столбца из набора строк, которые возвращает оператор SQL.
Вот так выглядит синтаксис:
SELECT groupingField, AVG(num_field)
FROM table1
GROUP BY groupingField
А вот пример этого оператора для таблицы Student:
SELECT studentID, FullName, AVG(sat_score)
FROM student
GROUP BY studentID, FullName;
AS
AS позволяет переименовать столбец или таблицу с помощью псевдонима.
SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table
И вот так будет выглядеть результат.
+-------------+------------------------+
| AgeOfServer | NonWarrantyPeriod |
+-------------+------------------------+
| 36 | 24 |
| 24 | 12 |
| 61 | 49 |
| 12 | 0 |
| 6 | -6 |
| 0 | -12 |
| 36 | 24 |
| 36 | 24 |
| 24 | 12 |
+-------------+------------------------+
Кроме того, через оператор AS вы можете задать название таблицы – так будет проще обращаться к ней в JOIN.
SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust
JOIN order_table AS ord ON cust.cust_number = ord.cust_number
Результат выглядит так.
+-------------+------------+-----------+-----------------+--------------+
| product | ord_number | price | cust_name | cust_number |
+-------------+------------+-----------+-----------------+--------------+
| RAM | 12345 | 124 | John Smith | 20 |
| CPU | 12346 | 212 | Mia X | 22 |
| USB | 12347 | 49 | Elise Beth | 21 |
| Cable | 12348 | 0 | Paul Fort | 19 |
| Mouse | 12349 | 66 | Nats Back | 15 |
| Laptop | 12350 | 612 | Mel S | 36 |
| Keyboard| 12351 | 24 | George Z | 95 |
| Keyboard| 12352 | 24 | Ally B | 55 |
| Air | 12353 | 12 | Maria Trust | 11 |
+-------------+------------+-----------+-----------------+--------------+
ORDER BY
ORDER BY позволяет сортировать результирующий набор данных по одному или нескольким элементам в разделе SELECT. Ниже дан пример сортировки студентов по имени (FullName) в порядке убывания. Изначально используется стандартная сортировка по возрастанию (ASC), поэтому для сортировки в обратном порядке мы применяем DESC.
SELECT studentID, FullName, sat_score
FROM student
ORDER BY FullName DESC;
COUNT
COUNT вычисляет количество строк и возвращает результирующее значение в столбце.
Ниже приводятся возможные сценарии использования COUNT:
Подсчет всех строк в таблице (не требуется Group by)
Подсчет общего числа подмножеств данных (в операторе обязательно прописывается Group By)
Этот оператор SQL выводит количество всех строк. Кроме того, что вы можете настроить название результирующего столбца COUNT с помощью AS.
SELECT count(*) AS studentCount FROM student;
DELETE
DELETE используется для удаления записи из таблицы.
Будьте внимательны! Вы можете удалить несколько записей в таблице, либо сразу все. С помощью условия WHERE вы указываете, какие записи необходимо удалить. Синтаксис выглядит так:
DELETE FROM table_name
WHERE condition;
Вот так выглядит удаление из таблицы Person записи с Id 3:
DELETE FROM Person
WHERE Id = 3;
INNER JOIN
JOIN, или внутреннее соединение, выбирает записи, соответствующие значениям в двух таблицах.
SELECT * FROM A x JOIN B y ON y.aId = x.Id
LEFT JOIN
LEFT JOIN возвращает все строки из левой таблицы и соответствующие им строки из правой таблицы. Строки из левой таблицы возвращаются даже при пустых значениях в правой таблице. Если для строк из левой таблицы нет соответствия в правой, то в значениях последней будет стоять null.
SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id
RIGHT JOIN
RIGHT JOIN возвращает все строки из правой таблицы и соответствующие им строки из левой. В отличие от левого соединения, здесь возвращаются все строки из правой таблицы, даже если им ничего не соответствует в левой. В таком случае, в значениях столбцов из левой таблицы будет стоять null.
SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id
FULL OUTER JOIN
FULL OUTER JOIN возвращает все строки, соответствующие условиям в любой из таблиц. Если в левой таблице есть строки, которым ничего не соответствует в правой, то они все равно отобразятся в результирующих значениях. То же самое распространяется и на строки из правой таблицы без соответствующих значений в левой.
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName
INSERT
INSERT используется для добавления данных в таблицу.
INSERT INTO table_name (column_1, column_2, column_3)
VALUES (value_1, 'value_2', value_3);
LIKE
LIKE используется в связке с WHERE или HAVING (в составе оператора GROUP BY) и ограничивает выбранные строки по элементам, если в столбце содержится определенный шаблон символов.
Этот SQL запрос выбирает студентов, чье значение в FullName начинается с «Monique» или заканчивается с «Greene».
SELECT studentID, FullName, sat_score, rcd_updated
FROM student
WHERE
FullName LIKE 'Monique%' OR
FullName LIKE '%Greene';
+-----------+---------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+---------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
+-----------+---------------+-----------+---------------------+
2 rows in set (0.00 sec)
Перед LIKE вы можете добавить NOT, и тогда строки, соответствующие условию, будут исключаться, а не добавляться. Этот SQL исключает записи, у которых в столбце FULL NAME содержится «cer Pau» и «Ted».
SELECT studentID, FullName, sat_score, rcd_updated
FROM student
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
+-----------+----------------------+-----------+---------------------+
| studentID | FullName | sat_score | rcd_updated |
+-----------+----------------------+-----------+---------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
+-----------+----------------------+-----------+---------------------+
7 rows in set (0.00 sec)