Базовое использование SQL
MySQL является реляционной базой данных, когда дело доходит до отношений, они неотделимы от отношений между таблицами и таблицами, и то, что может лучше всего отражать эти отношения, — это главный герой, которого мы должны представить далее.SQL
, полное имя SQLStructure Query Language
, язык структурированных запросов, это язык, предназначенный для ассоциаций таблиц, то есть изучение MySQL и SQL является основой и самым важным. SQL — это не просто язык, специфичный для MySQL, он поддерживается большинством реляционных баз данных.
Давайте изучать этот очень важный язык вместе.
Классификация языка запросов
Прежде чем понять SQL, нам нужно знать следующие понятия.
- Язык определения данных: Аббревиатура
DDL
(язык определения данных), используемый для определения объектов базы данных: баз данных, таблиц, столбцов и т. д.;
- Язык обработки данных: Аббревиатура
DML
(язык манипулирования данными), используемый для обновления записей таблицы в базе данных. Ключевые слова: вставка, обновление, удаление и т. д. - Язык управления данными: Аббревиатура
DCL
(язык управления данными), используемый для определения прав доступа к базе данных и уровней безопасности, создания пользователей и т. д. Ключевые слова: грант и др. - Язык запроса данных: Аббревиатура
DQL
(язык запроса данных), используемый для запроса записей таблицы в базе данных, ключевых слов: выбрать откуда и т. д.
оператор DDL
создать базу данных
Давайте начнем наше путешествие по изучению операторов SQL. Во-первых, вам нужно запустить службу MySQL. У меня здесь компьютер Mac, поэтому я могу запустить его напрямую.
Затем мы используем командную строку для подключения к базе данных, открываемiterm
, введите следующее
MacBook:~ mr.l$ mysql -uroot -p
может подключиться к базе данных
В приведенной выше командеmysql
означает клиентскую команду,- u
Указывает пользователя, которому необходимо подключиться позже,-p
Указывает, что для этого пользователя требуется пароль. После ввода имени пользователя и пароля, если вы успешно вошли в систему, появится экран приветствия (как показано выше) иmysql>
быстрый.
Приветственный интерфейс в основном описывает эти вещи
- Терминатор каждой строки, используемый здесь
;
или\g
чтобы указать конец каждой строки - Your MySQL connection id is 4, это записывает количество подключений службы MySQL на данный момент, каждая новая ссылка будет автоматически увеличиваться на 1, количество подключений, показанное выше, равно 4, что указывает на то, что мы подключались только четыре раза.
- Затем ниже версия MySQL, мы используем 5.7
- пройти через
help
или\h
команда для отображения содержимого справки\c
команда для очистки буфера командной строки.
Тогда что нужно сделать? В конечном счете мы хотим изучить операторы SQL. Операторы SQL должны запрашивать данные и отражать отношения между таблицами через данные. Итак, нам нужны данные, так где же они существуют? Место, где хранятся данные, называется表(table)
, место, где хранится таблица, называется数据库(database)
, поэтому нам нужно сначала построить базу данных, затем построить таблицу, вставить данные и затем выполнить запрос.
Итак, первое, что нам нужно сделать, это создать базу данных.Чтобы создать базу данных, вы можете использовать команду напрямую
CREATE DATABASE dbname;
Создаем, например, создаем базу данных cxuandb
create database cxuandb;
Обратите внимание на последнее;
Конечный синтаксис не должен быть потерян, иначе MySQL подумает, что ваша команда не была выведена, и выведет новую строку сразу после ввода ввода
После завершения создания вам будет предложеноQuery OK, 1 row affected, что означает это предложение? Query OK означает, что запрос завершен, почему это отображается? Поскольку все операции DDL и DML будут запрашиваться после завершения выполнения, также можно понять, что операция выполнена успешно. Следующая **1 затронутая строка ** указывает количество затронутых строк,()
Он показывает время, которое потребовалось вам для выполнения этой команды, что составляет 0,03 секунды.
На картинке выше мы успешно создали базу данных cxuandb. В настоящее время мы также хотим создать базу данных. Мы снова выполняем ту же команду, и результат подсказывает
Подскажите, мы больше не можем создать базу данных, база данных уже существует. На данный момент у меня вопрос, как мне узнать какие там базы данных? Разве я не хочу создать базу данных и сказать, что она уже существует, тогда я могу использоватьshow databases
команда для просмотра существующих баз данных в MySQL
show databases;
Результат после выполнения следующий
Поскольку я использовал эту базу данных раньше, мне нужно объяснить ее здесь, за исключением только что созданного cxuandb,informationn_schema
,performannce_schema
иsys
Это все базы данных, которые поставляются с системой и создаются по умолчанию при установке MySQL. каждый из них представляет
- informationn_schema: в основном хранит некоторую информацию об объектах базы данных, такую как информация о пользовательской таблице, информация о разрешениях, информация о разделах и т. д.
- performance_schema: недавно добавленная база данных после MySQL 5.5, в основном используемая для сбора параметров производительности сервера базы данных.
- sys: база данных, предоставляемая MySQL 5.7.База данных sys содержит ряд хранимых процедур, пользовательских функций и представлений, помогающих нам быстро понять метаданные системы.
Все остальные базы данных создаются самими авторами и могут быть проигнорированы.
После создания базы данных вы можете использовать следующую команду, чтобы выбрать базу данных для работы
use cxuandb
Таким образом, мы успешно перешли на базу данных cxuandb, мы можем создавать таблицы и просматривать основную информацию в этой базе данных.
Например, если вы хотите увидеть, есть ли другие таблицы в нашей вновь созданной базе данных
show tables;
Конечно же, в нашей только что созданной базе данных нет таблиц, но сейчас мы еще не построили таблицу.Давайте сначала разберемся с командами на уровне базы данных, то есть с другими командами DDL.
удалить базу данных
Что, если нам больше не нужна база данных? Не лучше ли просто удалить базу данных? Оператор удаления таблицы
drop database dbname;
Например cxuandb он нам больше не нужен, мы можем использовать
drop database cxuandb;
Удалить мы здесь демонстрировать не будем, потому что позже воспользуемся cxuandb.
Но обратите внимание, он появится после того, как вы успешно удалите базу данных.0 rows affected, это можно проигнорировать, потому что в MySQL результатом операции оператора drop является0 rows affected.
создать таблицу
Теперь мы можем работать с таблицей, мы просто показываем таблицы и обнаруживаем, что таблицы еще нет, поэтому теперь мы создаем оператор таблицы.
CREATE TABLE 表名称
(
列名称1 数据类型 约束,
列名称2 数据类型 约束,
列名称3 数据类型 约束,
....
)
Это очень ясно, имя столбца — это имя столбца, за которым следует имя столбца — это тип данных, а затем ограничение, почему оно разработано именно так? Например, вам будет ясно, например, cxuan был напечатан с этикеткой, как только он родился.
Например, мы создаем таблицу с 5 полями, имя (имя), пол (пол), возраст (возраст), когда нанимать (найм), зарплата (зарплата), и заявление о создании таблицы выглядит следующим образом
create table job(name varchar(20), sex varchar(2), age int(2), hiredate date, wage decimal(10,2));
Факты доказывают, что эта инструкция по построению таблицы по-прежнему не является проблемой, и после того, как таблица построена, ее можно использовать.DESC tablename
Просмотр основной информации о таблице
DESC
Команда просмотрит определение таблицы, но вывод информации будет недостаточно полным, поэтому, если вы хотите просмотреть более полную информацию, вы также можете получить ее, просмотрев SQL оператора создания таблицы.
show create table job \G;
Как видите, кроме определения таблицы, вы также видите ееengine(存储引擎)
это механизм хранения InnoDB,\G
Позволяет располагать записи вертикально, если они не используются\G
, эффект следующий
удалить таблицу
Существует два типа операторов удаления таблицы, один из нихdrop
оператор, оператор SQL выглядит следующим образом
drop table job
одинtruncate
оператор, оператор SQL выглядит следующим образом
truncate table job
Простое понимание разницы между ними заключается в том, что после того, как оператор drop удалит таблицу, вы можете ответить через журнал, в то время как truncate никогда не сможет восстановить таблицу после удаления таблицы, поэтому обычно не используйте truncate для удаления таблицы. . ‘
Изменить таблицу
Для уже созданных таблиц, особенно с большим объемом данных, если вам нужно внести структурные изменения в таблицу, вы можете удалить таблицу, а затем создать ее заново, но такая эффективность потребует дополнительной работы, а данные будут недавно перезагружены. Если в это время есть доступ к службе, это также повлияет на службу для чтения данных в таблице, поэтому в это время нам нужен оператор модификации таблицы, чтобы изменить определение созданного Таблица.
Обычно используется изменение структуры таблицы.alter table
Заявление, следующие часто используемые команды
ALTER TABLE tb MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];
Например, мы хотим изменить имя в таблице заданий наvarchar(20)
изменить наvarchar(25)
, вы можете использовать следующее утверждение
alter table job modify name varchar(25);
Вы также можете изменить структуру таблицы, например, добавить поле
alter table job add home varchar(30);
Удалить поля только что добавленной таблицы
alter table job drop column home;
Вы можете изменить название поля в таблице, например, изменить зарплату на зарплату
alter table job change wage salary decimal(10,2);
Измените порядок полей. Как мы упоминали ранее, синтаксис модификации связан с проблемой порядка. Существует необязательный параметр **first | после **column_name. Этот параметр можно использовать для изменения положения полей в таблице. ADD по умолчанию добавляется как последнее поле в таблице, иCHANGE/MODIFYНе изменяет положение поля. Например
alter table job add birthday after hiredate;
Имя таблицы можно изменить, например, изменить таблицу заданий на рабочую.
alter table job rename worker;
оператор DML
В некоторых местах операторы DML (добавление, удаление и изменение) и операторы DQL (запросы) вместе называются операторами DML, а в некоторых местах мы в настоящее время используем отдельные имена.
вставлять
После того, как таблица создана, мы можем вставить данные в таблицу.Основной синтаксис для вставки записей следующий
INSERT INTO tablename (field1,field2) VALUES(value1,value2);
Например, вставьте следующие записи в
insert into job(name,sex,age,hiredate,birthday,salary) values("cxuan","男",24,"2020-04-27","1995-08-22",8000);
Вы также можете вставлять данные напрямую, не указывая поле для вставки.
insert into job values("cxuan02","男",25,"2020-06-01","1995-04-23",12000);
Здесь есть проблема, что делать, если порядок вставки несовместим?
Для полей с нулевыми полями, ненулевыми полями со значениями по умолчанию и автоинкрементными полями они не должны появляться в списке полей после вставки.После значений вам нужно только написать значение соответствующего имени поля. которые не записаны, могут быть автоматически установлены в NULL, значение по умолчанию или автоматическое увеличение следующего значения, что уменьшает длину и сложность вставляемого оператора SQL.
Например, установим дату найма, возраст может быть нулевым, попробуем
insert into job(name,sex,birthday,salary) values("cxuan03","男","1992-08-23",15000);
Давайте посмотрим на фактически вставленные данные
Мы видим, что есть строка с двумя полями, показывающими NULL. В MySQL оператор вставки также имеет хорошую функцию, то есть за один раз можно вставить несколько записей.
INSERT INTO tablename (field1,field2) VALUES
(value1,value2),
(value1,value2),
(value1,value2),
...;
Видно, что каждая запись отделена запятой.Эта функция позволяет MySQL сэкономить много сетевых ресурсов и значительно повысить эффективность вставки при вставке большого количества записей.
обновить запись
Для данных, которые уже есть в таблице, их можно изменить с помощью команды обновления, синтаксис следующий
UPDATE tablename SET field1 = value1, field2 = value2 ;
Например, чтобы изменить NULL для возраста в cxuan03 в таблице заданий на 26, оператор SQL выглядит следующим образом:
update job set age = 26 where name = 'cxuan03';
В операторе SQL есть условие where. Мы поговорим об условии where позже. Вот краткое понимание его концепции, которая заключается в обновлении в соответствии с какой записью. Если вы не напишете где, вся таблица будет обновлена .
Удалить запись
Если запись больше не нужна, ее можно удалить с помощью команды удаления
DELETE FROM tablename [WHERE CONDITION]
Например, удалите запись с именем cxuan03 в задании
delete from job where name = 'cxuan03';
В MySQL оператор удаления также можно использовать напрямую, без указания условия where.
delete from job
Этот метод удаления эквивалентен операции очистки таблицы, и все записи в таблице будут очищены.
DQL-оператор
Давайте посмотрим на оператор DQL, данные вставляются в MySQL, вы можете использоватьSELECT
команда для запроса, чтобы получить результаты, которые мы хотим.
Оператор запроса SELECT можно назвать самым сложным оператором, здесь мы вводим только основной синтаксис.
Один из самых простых способов — запросить все поля и данные из таблицы, простой и грубый, и использовать их напрямую.SELECT *
SELECT * FROM tablename;
Например, мы проверяем все данные в таблице заданий
select * from job;
Среди них * - запрос всех данных, конечно, вы также можете запросить указанный элемент данных.
select name,sex,age,hiredate,birthday,salary from job;
Приведенный выше оператор SQL иselect * from job
Таблицы эквивалентны, но оператор SQL, который напрямую запрашивает указанные поля, более эффективен.
Выше мы представили основные операторы запросов SQL, но реальные сценарии использования будут намного сложнее, чем простые запросы.Как правило, используются различные функции SQL и условия запроса.Давайте познакомимся с ними вместе.
дедупликация
Одним из очень широко используемых сценариев является去重
, можно использовать дедупликациюdistinct
ключевые слова для реализации
Чтобы продемонстрировать эффект, мы сначала вставляем пакетные данные в базу данных.Структура таблицы после вставки выглядит следующим образом
Давайте использовать отличные, чтобы рассмотреть влияние возраста
Вы обнаружите, что есть только два разных значения, другое и 25 повторяющихся значений отфильтровываются, поэтому мы используем разные для дедупликации.
Условный запрос
Все наши предыдущие примеры запрашивают все записи, что, если мы хотим запрашивать только указанные записи? будет использоваться здесьwhere
Оператор условного запроса, условный запрос может запрашивать указанное поле, например, мы хотим запросить все записи, возраст которых составляет 24 года, следующим образом
select * from job where age = 24;
где за условным оператором будет следовать оператор суждения=
,Кроме=
Помимо сравнения чисел, вы также можете использовать>, =, Равные операторы сравнения, например
select * from job where age >= 24;
Записи, возраст которых больше или равен 24, будут запрашиваться из таблицы заданий.
Кроме того, в запросе условия where может быть несколько параллельных условий запроса, например, мы можем запрашивать записи, возраст которых больше или равен 24 и зарплата которых составляет 8000.
select * from job where age >= 24 and salary > 8000;
Логические операторы, такие как или и и, также могут использоваться для выполнения совместных запросов с несколькими условиями между несколькими условиями.Операторы будут подробно описаны в последующих главах.
Сортировать
У нас часто будет такая потребность в сортировке по определенному полю, которая использует функцию сортировки базы данных, используя ключевые словаorder by
Для достижения синтаксис выглядит следующим образом
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC] , field2 [DESC|ASC],……fieldn [DESC|ASC]]
Среди них DESC и ASC являются ключевыми словами для последовательной сортировки.DESC будет сортироваться по полю в порядке убывания, а ASC будет сортироваться по полю в порядке возрастания.По умолчанию будет использоваться возрастающий порядок, то есть если вы не написатьorder by
Для конкретной сортировки по умолчанию используется возрастающий порядок. За порядком по может следовать несколько полей сортировки, и каждое поле сортировки может иметь свой порядок сортировки.
Чтобы продемонстрировать функцию, мы сначала поместимsalary
Столбец зарплаты изменен, и записи таблицы после модификации выглядят следующим образом
Ниже мы сортируем по зарплате, оператор SQL выглядит следующим образом
select * from job order by salary desc;
Результат после выполнения инструкции выглядит следующим образом
Это результат сортировки по одному полю, также возможна сортировка по нескольким полям, но есть нюанс
Сортировать в соответствии с порядком, названным после order by.Если есть три поля сортировки A, B, C, если значение поля сортировки поля A одинаково, оно будет отсортировано по второму полю и так далее.
Если имеется только одно поле сортировки, записи с одинаковыми полями будут сортироваться не по порядку.
ограничение
Для отсортированных полей или несортированных полей, если вы хотите отобразить только его часть, вы будете использоватьLIMIT
Ключевые слова для достижения, например, мы хотим взять только первые три записи
select * from job limit 3;
Или берем первые три записи для отсортированного поля
select * from job order by salary limit 3;
Указанный выше предел берется с 0-й записи таблицы.Если он начинается с указанной записи, например, со второй записи, берется три записи.SQL выглядит следующим образом
select * from job order by salary desc limit 2,3;
limit часто используется с порядком по синтаксису для реализации запросов с разбивкой на страницы.
Примечание: limit — это синтаксис после того, как MySQL расширяет SQL92, и он не является общим для других баз данных, таких как Oracle Я совершил идиотское поведение, используя оператор запроса limit в Oracle. . .
полимеризация
Рассмотрим операции суммирования записей.К этим операциям в основном относятся
-
汇总函数
, такие как суммирование суммы, статистика подсчета, максимальное максимальное значение, минимальное минимальное значение и т. д. -
group by
, ключевое слово указывает, что поля классификации и агрегации сгруппированы, например, подсчет количества сотрудников по отделу, тогда за группой должен следовать отдел -
with
необязательный синтаксис, указывающий, что агрегированные записи снова агрегируются -
having
Ключевое слово указывает, что условия фильтруются для классифицированных результатов.
Кажется, что where и have имеют схожие значения, но используются по-разному: Where используется перед статистикой для фильтрации записей перед статистикой, а have используется после статистики для фильтрации результатов после агрегирования. То есть, где всегда используется перед наличием, мы должны сначала отфильтровать отфильтрованные записи, а затем отфильтровать сгруппированные записи.
Вы можете сделать статистику по зарплате сотрудников в таблице вакансий и выбрать общую зарплату, максимальную зарплату и минимальную зарплату
select sum(salary) from job;
select max(salary),min(salary) from job;
Например, мы хотим подсчитать количество людей в таблице вакансий.
select count(1) from job;
Результаты после завершения статистики следующие:
Мы можем сделать соответствующую статистику по возрасту в таблице вакансий
select age,count(1) from job group by age;
Необходимо подсчитать как количество людей каждой возрастной группы, так и общее количество людей
select age,count(1) from job group by age with rollup;
Группировать по этому признаку и подсчитывать записи, количество которых больше 1
select age,count(1) from job group by age with rollup having count(1) > 1;
присоединение к таблице
Подключение к столу всегда было болевой точкой для автора, однажды я повесил интервью из-за подключения к столу, а теперь отнесусь к этому серьезно.
Соединения таблиц обычно отражаются в отношениях между таблицами. Когда вам нужно отобразить поля в нескольких таблицах одновременно, вы можете использовать объединение таблиц для достижения этой цели.
Чтобы продемонстрировать функцию соединения таблиц, мы добавляемtype
Поле указывает тип задания, а таблица job_type добавляется для указания конкретного типа задания, как показано ниже.
Давайте начнем нашу демонстрацию
Запросите имя и тип задания, соответствующие типу в таблице заданий и типу в таблице job_type.
select job.name,job_type.name from job,job_type where job.type = job_type.type;
В приведенном выше соединении используется внутреннее соединение, и, кроме того, имеется внешнее соединение. Так в чем же между ними разница?
Внутреннее соединение: выберите записи, которые соответствуют друг другу в двух таблицах;
Внешнее соединение: выбираются не только совпадающие записи, но и несовпадающие;
Существует два типа внешних соединений
- Левое внешнее соединение: отфильтровать записи, содержащие левую таблицу, а в правой таблице нет соответствующих записей.
- Правое внешнее соединение: отфильтровать записи, содержащие правую таблицу, даже если в левой таблице нет соответствующей записи.
Чтобы продемонстрировать эффект, мы добавляем записи в таблицу job и job_type соответственно Две таблицы после добавления выглядят следующим образом
Затем мы выполняем запрос левого внешнего соединения: запрашиваем имя и тип задания, которые соответствуют типу в таблице заданий и типу в таблице job_type.
select job.name,job_type.name from job left join job_type on job.type = job_type.type;
Результаты запроса следующие
Видно, что cxuan06 также был запрошен, и у cxuan06 нет определенного типа задания.
Запрос с использованием правого внешнего соединения
select job.name,job_type.name from job right join job_type on job.type = job_type.type;
Видно, что в таблице job нет ролей официанта и менеджера, но они тоже опрашиваются.
подзапрос
В некоторых случаях условием запроса, которое нам нужно, является результат запроса другого оператора SQL.Этот метод запроса является подзапросом.Подзапрос имеет некоторые ключевые слова, такие какв, не в, =, !=, существует, не существуети т. д., например, мы можем запросить тип работы каждого человека через подзапрос
select job.* from job where type in (select type from job_type);
Если количество самозапросов уникально, вы также можете использовать=
заменитьin
select * from job where type = (select type from job_type);
Это означает, что самозапрос не уникален, мы используем limit, чтобы ограничить количество возвращаемых записей.
select * from job where type = (select type from job_type limit 1,1);
В некоторых случаях подзапросы могут быть преобразованы в соединения таблиц.
совместный запрос
Мы также часто сталкиваемся с таким сценарием.После запроса данных двух таблиц по отдельности результаты объединяются для отображения.На данный момент для достижения такой функции необходимы два ключевых слова UNION и UNION ALL.UNION и UNION ALL Разница между UNION ALL заключается в том, что UNION ALL объединяет наборы результатов напрямую, а UNION должен выполнять результаты после UNION ALL один раз.DISTINCT
Удалите повторяющиеся данные.
Например
select type from job union all select type from job_type;
Его результат следующий
Вышеупомянутый результат - это запрос поля типа в таблице заданий и поля типа в таблице job_type и их суммирование.Можно видеть, что UNION ALL просто перечисляет все результаты.
Оператор SQL с использованием UNION выглядит следующим образом
select type from job union select type from job_type;
Видно, что UNION используется для UNION ALL.distinct
Дедупликация.
Заявление DCL
Операторы DCL в основном используются при управлении разрешениями базы данных.Такие операции обычно используются администраторами баз данных, и разработчики не будут использовать операторы DCL.
Об использовании справочных документов
Обычно мы используем MySQL, чтобы столкнуться с вещами, которые неизвестны или вызывают сомнения, и часто обращаемся к онлайн-информации, и нам может даже понадобиться проверить официальные документы MySQL, что потребует много времени и энергии.
Следующее научит вас операторам, которые могут напрямую запрашивать данные в командной строке MySQL.
Запрос по иерархии
можно использовать? contents
для запроса всех доступных категорий, как показано ниже
? contents;
мы входим
? Account Management
Вы можете запрашивать определенные команды об управлении разрешениями
Например, мы хотим понять тип данных
? Data Types
Тогда мы хотим знатьVARCHAR
Основное определение , можно использовать напрямую
? VARCHAR
Вы можете увидеть подробную информацию о типе данных VARCHAR, а также официальную документацию MySQL внизу для нашей быстрой справки.
Беглый взгляд
В реальном процессе приложения, если вы хотите быстро запросить определенную грамматику, вы можете использовать ключевые слова для быстрого запроса, например, мы используем
? show
Возможность быстрого перечисления некоторых команд
Например, если мы хотим найти информацию в базе данных, используйте
SHOW CREATE DATABASE cxuandb;
Типы данных MySQL
MySQL предоставляет множество типов данных для различения различных констант и переменных.Типы данных в MySQL в основномЧисловые типы, типы даты и времени, строковые типыОчень важно выбрать подходящий тип данных для хранения данных.В реальном процессе разработки выбор подходящего типа данных также может улучшить производительность SQL, поэтому необходимо знать эти типы данных.
Числовой тип
MySQL поддерживает все стандартные типы данных SQL, включая строгие типы данных.严格数值类型
, эти типы данных
- INTEGER
- SMALLINT
- DECIMAL
- ЦИФРОВОЙ.
近似数值数据类型
Не обязательно хранить строго по указанному типу данных, у них есть
- FLOAT
- REAL
- DOUBLE PRECISION
Существуют также расширенные типы данных, которые
- TINYINT
- MEDIUMINT
- BIGINT
- BIT
Где INT — это сокращение от INTEGER, а DEC — это сокращение от DECIMAL.
Ниже приведена сводка всех типов данных.
целое число
В целочисленном типе, в соответствии с различным диапазоном значений и методом хранения, он делится на
![image-20200613091331344](/Users/mr.l/Library/Application Support/typora-user-images/image-20200613091331344.png)
- TINYINT, занимает 1 байт
- SMALLINT, занимает 2 байта
- СРЕДНИЙ, занимает 3 байта
- INT, INTEGER, занимают 4 байта
- BIGINT, занимает 8 байт
Пять типов данных, если операция превышает диапазон типов, появится сообщение об ошибке, поэтому очень важно выбрать соответствующий тип данных.
Помните наше заявление о создании таблицы выше?
Обычно мы добавляем указанную длину к типу данных оператора SQL, чтобы указать допустимый диапазон типа данных, например
int(7)
Указывает, что максимальная длина данных типа int равна 7. Если заполнение не полное, оно будет заполнено автоматически.Если длина данных типа int не указана, по умолчаниюint(11)
.
Давайте создадим таблицу для демонстрации
create table test1(aId int, bId int(5));
/* 然后我们查看一下表结构 */
desc test1;
Общая подгонка целочисленного типаzerofill
Использовать, как следует из названия, означает заполнить 0, то есть место с недостаточным количеством цифр заполнить 0.
Измените два поля в таблице test1 соответственно.
alter table test1 modify aId int zerofill;
alter table test1 modify bId int(5) zerofill;
Затем вставьте две части данных и выполните операцию запроса
Как показано выше, используйтеzerofill
можно использовать перед числами0
заполнить, как будет отображаться, если ширина превышает указанную длину? Давайте поэкспериментируем, вставив числа, превышающие лимит символов, в aId и bId соответственно.
Будет обнаружено, что aId превысил указанный диапазон, тогда мы вставляем данные в допустимом диапазоне в aId
Вы обнаружите, что aId был вставлен, и bId также был вставлен.Почему bId отображает int(5), но может вставить 7-значное значение длины?
Все целые числа имеют необязательный атрибутUNSIGNED(无符号)
, если вам нужно хранить неотрицательные числа в поле или вам нужно большее значение верхнего предела, вы можете использовать эту опцию.Его диапазон значений таков, что нижний предел нормального значения равен 0, а верхний предел в 2 раза больше исходное значение. Если столбец заполнен нулями, атрибут UNSIGNED автоматически добавляется к этому столбцу.
Кроме того, существует еще один тип целых чисел, которыйAUTO_INCREMENT
, вы можете использовать это свойство, когда вам нужно сгенерировать уникальный идентификатор или последовательное значение, это свойство используется только для целых символов. В таблице может быть не более одного атрибута AUTO_INCREMENT, который обычно используется для自增主键
,иNOT NULL
, и являетсяPRIMARY KEY
иUNIQUE
Да, первичный ключ должен быть уникальным и не нулевым.
десятичный
Что говорит десятичная дробь? На самом деле он имеет два типа; один浮点数
тип, один定点数
тип;
Существует два типа чисел с плавающей запятой
- Одинарная точность с плавающей запятой - тип float
- Двойная точность с плавающей запятой - двойная
Есть только одна фиксированная точкаdecimal
. Числа с фиксированной запятой существуют в MySQL в виде строк, которые более точны, чем числа с плавающей запятой, и подходят для представления данных с особенно высокой точностью.
Можно использовать как числа с плавающей запятой, так и числа с фиксированной запятой.(M,D)
способ представить, M представляет, чтоЦелые числа + десятичные разрядыЦифры, D обозначает расположенные.
десятичные дроби после. M также называется точностью, а D называется масштабом.
Ниже приведен пример, демонстрирующий
Сначала создайтеtest2
поверхность
CREATE TABLE test2 (aId float(6,2) default NULL, bId double(6,2) default NULL,cId decimal(6,2) default NULL)
Затем вставьте некоторые данные в таблицу
insert into test2 values(1234.12,1234.12,1234.12);
Данные, отображаемые в это время,
Затем вставьте некоторые данные вне ограничений в таблицу
insert into test2 values(1234.123,1234.123,1234.123);
Обнаружено, что после завершения вставки также отображается, что1234.12
, значение в третьем десятичном разряде округляется.
Теперь мы удаляем всю точность в таблице test2 и вставляем ее снова
alter table test2 modify aId float;
alter table test2 modify bId double;
alter table test2 modify cId decimal;
Сначала проверьте и обнаружите, что cId округляет десятичные разряды.
Затем снова вставьте 1.23, оператор SQL выглядит следующим образом
insert into test2 values(1.23,1.23,1.23);
Результат выглядит следующим образом
В это время можно проверить
- Если точность и масштаб чисел с плавающей запятой не указаны, они будут отображаться в соответствии с фактическим значением точности.
- Если точность и масштаб чисел с фиксированной точкой не указаны, они будут
decimal(10,0)
Для работы, если данные превышают точность и заголовок, MySQL сообщит об ошибке
битовый тип
Для битовых типов, используемых для хранения значений полей,BIT(M)
Его можно использовать для хранения многобитных двоичных чисел.Диапазон M составляет 1–64.Если не записано, по умолчанию используется 1 бит.
Теперь давайте прикроем битовый тип
Создайте новую таблицу test3 только с одним полем битового типа в таблице.
create table test3(id bit(1));
Затем вставьте часть данных по желанию
insert into test3 values(1);
Было обнаружено, что соответствующие результаты не могут быть запрошены.
Затем мы используемhex()
иbin()
функция для запроса
Установлено, что соответствующие результаты могут быть запрошены.
То есть, когда данные вставляются в test3, он сначала преобразует данные в двоичные числа.Если количество цифр разрешено, вставка будет успешной, если количество цифр меньше, чем фактическое количество цифр, вставка не удастся. Если мы вставим данные в таблицу типа 2
insert into test3 values(2);
то выдаст ошибку
Поскольку двоичное представление 210
, а таблица определяетbit(1)
, поэтому его нельзя вставить.
Затем мы модифицируем поля таблицы
Затем вставьте его снова и обнаружите, что его можно вставить
тип даты и времени
Типы даты и времени в MySQL, в основном в том числе:ГОД, ВРЕМЯ, ДАТА, ДАТАВРЕМЯ, ОТМЕТКА ВРЕМЕНИ, каждая версия может отличаться. Эти типы свойств перечислены в следующей таблице.
Давайте представим их отдельно
YEAR
ГОД может быть представлен тремя способами
- Он представлен 4-значным числом или строкой, обе из которых имеют одинаковый эффект, представляя диапазон 1901–2155, и при вставке данных за пределами диапазона будет сообщено об ошибке.
- Выраженный в формате 2-значной строки, диапазон составляет от '00' до '99'. '00'~'69' означает 2000~2069, '70'~'99' означает 1970~1999. И «0», и «00» распознаются как 2000, а данные вне допустимого диапазона также распознаются как 2000.
- В двузначном формате диапазон составляет от 1 до 99. 1~69 означает 2001~2069, 70~99 означает 1970~1999. Но значение 0 будет распознано как 0000, что отличается от двухзначной строки, распознаваемой как 2000.
Давайте продемонстрируем использование YEAR и создадим таблицу test4.
create table test4(id year);
Затем мы смотрим на структуру таблицы test4
Созданный по умолчанию год состоит из 4 цифр.Далее вставляем данные в test4
insert into test4 values(2020),('2020');
Затем сделайте запрос и обнаружите, что представление такое же
Используйте двузначную строку для представления
delete from test4;
insert into test4 values ('0'),('00'),('11'),('88'),('20'),('21');
Используйте две цифры для представления
delete from test4;
insert into test4 values (0),(00),(11),(88),(20),(21);
Отличились только первые два.
TIME
Диапазон, представленный TIME, не соответствует нашим ожиданиям.
Мы изменили test4 на тип TIME, ниже приведен пример TIME.
alter table test4 modify id TIME;
insert into test4 values ('15:11:23'),('20:13'),('2 11:11'),('3 05'),('33');
Результат выглядит следующим образом
DATE
Существует много типов представления DATE, вот несколько примеров DATE.
create table test5 (id date);
Взгляните на таблицу test5
затем вставьте некоторые данные
insert into test5 values ('2020-06-13'),('20200613'),(20200613);
Как правило, существует много представлений DATE, как показано ниже.Все формы DATE
- 'YYYY-MM-DD'
- 'YYYYMMDD'
- YYYYMMDD
- 'YY-MM-DD'
- 'YYMMDD'
- YYMMDD
DATETIME
Тип DATETIME, содержит части даты и времени, может использовать строки или числа в кавычках, а год может состоять из 4 или 2 цифр.
Ниже приведен пример для DATETIME
create table test6 (id datetime);
insert into test4 values ('2020-06-13 11:11:11'),(20200613111111),('20200613111111'),(20200613080808);
TIMESTAMP
Тип TIMESTAMP имеет тот же формат, что и тип DATETIME, хранит 4 байта (меньше, чем DATETIME) и имеет меньший диапазон значений, чем DATETIME.
Поговорим о сценариях использования каждого типа времени
-
обычно выражают
年月日
, обычно сDATE
тип; -
используется для обозначения
时分秒
, обычно сTIME
Выражать; -
年月日时分秒
, обычно сDATETIME
Представлять; -
Если вам нужно вставить текущее время, обычно используйте
TIMESTAMP
чтобы указать, что значение TIMESTAMP возвращается и отображается какYYYY-MM-DD HH:MM:SS
строка формата, -
Если вы представляете только год, вы должны использовать YEAR, который требует меньше места, чем тип DATE.
Каждый тип даты имеет диапазон, за пределами которого по умолчаниюSQLMode
, система выдаст сообщение об ошибке и сохранит нулевое значение.
Давайте объяснимSQLMode
что
Одной из переменных среды в MySQL является sql_mode. sql_mode поддерживает синтаксис MySQL и проверку данных. Мы можем просмотреть sql_mode, используемый текущей базой данных, следующим образом.
select @@sql_mode;
Есть следующие режимы
получено изблог woo woo woo.cn на.com/Zendand/afraid/82…
Тип строки
MySQL предоставляет множество типов строк, ниже приводится сводка типов строк.
Ниже мы даем подробное введение в эти типы данных.
Типы CHAR и VARCHAR
Типы CHAR и VARCHAR очень похожи, из-за чего многие студенты игнорируют разницу между ними.Во-первых, оба типа данных используются для хранения строк.Основное различие между ними заключается в способе хранения. Длина типа CHAR - это то, сколько вы определяете для отображения. Занимает M байт, например, вы объявляетеCHAR(20)
, то каждая строка занимает 20 байт, а диапазон значений M — от 0 до 255.VARCHAR
Это строка переменной длины в диапазоне от 0 до 65535. При извлечении строки CHAR удалит конечные пробелы, а VARCHAR сохранит эти пробелы. Ниже приведен демонстрационный пример
create table vctest1 (vc varchar(6),ch char(6));
insert into vctest1 values("abc ","abc ");
select length(vc),length(ch) from vctest1;
Результат выглядит следующим образом
Видно, что строковый тип vc — varchar и длина равна 5, а строковый тип ch — char и длина равна 3. Можно сделать вывод, что varchar сохранит последний пробел, а char удалит последний пробел.
Типы BINARY и VARBINARY
BINARY и VARBINARY очень похожи на CHAR и VARCHAR, за исключением того, что они содержат двоичные строки вместо недвоичных строк. Максимальная длина BINARY и VARBINARY такая же, как у CHAR и VARCHAR, за исключением того, что они определяют длину байтов, а CHAR и VARCHAR соответствуют длине символов.
Тип BLOB
BLOB — это большой двоичный объект, который может содержать переменный объем данных. Существует 4 типа BLOB: TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB. Разница между ними в том, что они могут вмещать разные диапазоны хранения.
Тип ТЕКСТА
Существует 4 типа ТЕКСТА: МЕЛКИЙ ТЕКСТ, ТЕКСТ, СРЕДНИЙ ТЕКСТ и ДЛИННЫЙ ТЕКСТ. Максимальная длина, которая может быть сохранена, соответствует этим четырем типам BLOB и может быть выбрана в соответствии с реальной ситуацией.
ENUM-тип
ENUM мы часто используем в Java, он представляет тип перечисления. Его диапазон необходимо явно указать при создании таблицы, для перечислений 1 - 255 требуется 1 байт памяти, для перечислений 255 - 65535 требуется 2 байта памяти. ENUM игнорирует регистр и преобразуется в верхний регистр при сохранении.
Тип набора
Между типом SET и типом ENUM есть два различия.
- способ хранения
SET Для каждых 0 - 8 членов, занимать 1 байт соответственно, до 64, занимать 8 байт
- Помимо хранения, основное различие между Set и ENUM заключается в том, что тип Set может выбирать несколько элементов одновременно, тогда как ENUM может выбирать только один.
MySQL операторы
В MySQL есть различные операторы, операторы MySQL классифицируются ниже.
- арифметические операторы
- оператор сравнения
- Логические операторы
- побитовые операторы
Далее мы представим каждый оператор
арифметические операторы
Арифметические операторы, поддерживаемые MySQL, включают сложение, вычитание, умножение, деление и остаток, которые часто используются.
Ниже приведена классификация операторов
оператор | эффект |
---|---|
+ | добавление |
- | вычитание |
* | умножение |
/, DIV | деление, возвратное частное |
%, MOD | деление, возврат остатка |
Использование этих операторов кратко описано ниже.
-
+
для получения суммы одного или нескольких значений -
-
Используется для вычитания одного значения из другого -
*
Используется для умножения двух чисел, чтобы получить произведение двух или более значений. -
/
Разделите одно значение на другое, чтобы получить частное -
%
Используется для деления одного значения на другое, чтобы получить остаток
Одна вещь, на которую следует обратить внимание при делении и остатке: если делитель равен 0, это будет недопустимый делитель, и возвращаемый результат будет NULL.
оператор сравнения
Знакомые с операторами, давайте поговорим об операторах сравнения. При использовании оператора SELECT для запроса MySQL позволяет пользователям сравнивать операнды с обеих сторон выражения. Если результат сравнения верен, возвращается 1. Если результат сравнения ложен, возвращается 0, результат сравнения неопределен и возвращается NULL. Ниже приведены все операторы сравнения
оператор | описывать |
---|---|
= | равный |
или != | не равно |
<=> | NULL-безопасное равно, также известное как NULL-безопасное |
< | меньше, чем |
<= | меньше или равно |
> | больше, чем |
>= | больше или равно |
BETWEEN | в пределах указанного диапазона |
IS NULL | Это НУЛЕВОЕ |
IS NOT NULL | Это НУЛЕВОЕ |
IN | существует в указанной коллекции |
LIKE | совпадение с подстановочным знаком |
REGEXP или RLIKE | соответствие регулярному выражению |
Операторы сравнения можно использовать для сравнения чисел, строк или выражений. Числа сравниваются как числа с плавающей запятой, а строки сравниваются без учета регистра.
- Оператор = используется для сравнения того, равны ли операнды с обеих сторон оператора.Если они равны, вернуть 1. Если они не равны, вернуть 0. Ниже приведен конкретный пример.NULL нельзя использовать для сравнения, и NULL будет возвращен напрямую.
-
<>
знак используется для обозначения не равно, и=
Вместо этого пример выглядит следующим образом
-
<=>
NULL-безопасный оператор равенства, самое большое отличие от знака = заключается в том, что он может сравнивать значения NULL
-
<
Оператор знака возвращает 1, когда левый операнд меньше правого операнда, в противном случае он возвращает 0.
- То же, что и выше, за исключением того, что он возвращает 1, когда выполняется возвращает 0. У меня вот вопрос, почему
select 'a' <= 'b'; /* 返回 1 */
/*而*/
select 'a' >= 'b'; /* 返回 0 呢*/
-
о
>
и>=
то же самое -
BETWEEN
Формат использования оператораa BETWEEN min AND max, когда a больше или равно min и меньше или равно max, возвращает 1, в противном случае возвращает 0. Когда типы операндов различаются, они будут преобразованы в один и тот же тип данных перед обработкой. Например
-
IS NULL
иIS NOT NULL
Указывает, является ли оно NULL, если ISNULL истинно, возвращается 1, в противном случае возвращается 0; то же верно для IS NOT NULL
-
IN
Этот оператор сравнения определяет, находится ли значение в наборе, используя xxx в (значение1, значение2, значение3).
-
LIKE
Формат оператораxxx LIKE %123%
, например, следующим образом
Когда за лайком следует123%
Когда xxx равно 123, он вернет 1, если это 123xxx, он также вернет 1, а если это 12 или 1, он вернет 0. 123 это целое.
-
REGEX
Формат оператораs REGEXP str
, возвращаемое значение равно 1 при совпадении и 0 в противном случае.
Использование регулярного выражения будет подробно описано позже.
Логические операторы
Логические операторы относятся к布尔运算符
, логический оператор означает возврат true и false. MySQL поддерживает четыре логических оператора
оператор | эффект |
---|---|
НЕ ИЛИ! | логическое не |
И или && | логический и |
ИЛИ или || | логический или |
XOR | логическое исключающее ИЛИ |
Давайте представим их отдельно
-
NOT
или!
Представляет логическое отрицание, когда операнд равен 0 (ложь), возвращаемое значение равно 1, в противном случае значение равно 0. За одним исключением, возвращаемое значение NOT NULL равно NULL.
-
AND
и&&
Представляет логику логического И. Когда все операнды отличны от нуля и не NULL, результат равен 1, но если есть 0, он возвращает 0, а если в операнде есть ноль, он возвращает ноль
-
OR
и||
Представляет собой логическое ИЛИ. Когда оба операнда не равны NULL, если один из операндов не равен нулю, результат равен 1, в противном случае результат равен 0.
-
XOR
Представляет логическое XOR. Если какой-либо операнд имеет значение NULL, возвращаемое значение равно NULL. Для операндов, отличных от NULL, результат равен 1, если два логически истинных и ложных значения различны; в противном случае возвращается 0.
побитовые операторы
Как только вы слышите о битовой операции, вы знаете, что это оператор, связанный с двоичным.Битовая операция заключается в преобразовании заданного операнда в двоичный и выполнении определенной логической операции над каждым битом каждого операнда для получения двоичного результата. преобразование в десятичное, говорят, что это результат битовой операции, а ниже приведены все битовые операции.
оператор | эффект |
---|---|
& | немного и |
| | бит или |
^ | бит XOR |
~ | битовая инверсия |
>> | битовый сдвиг вправо |
<< | битовый сдвиг влево |
Эти примеры показаны ниже
-
位与
Это относится к побитовому И, преобразованию обеих сторон & в двоичные числа и последующему выполнению операции &.
Побитовое И — это числовая операция сокращения
-
位或
Это относится к побитовому ИЛИ, преобразованию обеих сторон | в двоичное число и последующему выполнению операции |
бит или операция, которая увеличивает значение
-
位异或
Относится к операции XOR над двоичными битами операнда.
-
位取反
относится к операции двоичных битов операнда.NOT
операндом здесь может быть только один бит, давайте рассмотрим классический пример инверсии: инвертируем бит 1, как показано ниже:
Почему такое явление?Потому что в MySQL константные числа по умолчанию отображаются в 8 байтах, 8 байтов это 64 бита, а двоичное представление константы 1 равно 630
, плюс 11
, после инверсии бита 631
добавить одну0
, после преобразования в двоичный код это 18446744073709551614, мы можем использоватьselect bin()Проверьте это
-
位右移
Это сдвинуть левый операнд вправо на указанное количество цифр, например, 50 >> 3, то есть взять двоичное значение 50 и затем сдвинуть его на три цифры вправо, а слева добавить 0 , Результат преобразования выглядит следующим образом
-
位左移
В отличие от битового сдвига вправо, он сдвигает левый операнд влево на указанное количество битов, например 20
Общие функции MySQL
Давайте взглянем на функции MySQL. Функции MySQL часто используются в нашем ежедневном процессе разработки. Выбор подходящих функций может повысить эффективность нашей разработки. Давайте посмотрим на эти функции вместе.
Строковые функции
Строковая функция является наиболее часто используемой функцией, MySQL также поддерживает многие виды строковых функций, ниже приведена таблица строковых функций, поддерживаемая MySQL.
функция | Функции |
---|---|
LOWER | Преобразование всех символов строки в нижний регистр |
UPPER | Преобразование всех символов строки в верхний регистр |
CONCAT | Выполнить конкатенацию строк |
LEFT | Возвращает крайний левый символ строки |
RIGHT | Возвращает самый правый символ строки |
INSERT | замена строки |
LTRIM | Удалить пробелы слева от строки |
RTRIM | Удалить пробелы справа от строки |
REPEAT | возвращать повторяющиеся результаты |
TRIM | Удалить пробелы в конце строки и в начале строки |
SUBSTRING | Возвращает указанную строку |
LPAD | Дополните крайний левый строкой |
RPAD | Дополнить крайний правый конец строкой |
STRCMP | Сравните строки s1 и s2 |
REPLACE | выполнить замену строки |
Ниже показано использование каждой функции на конкретном примере.
- Функции LOWER(str) и UPPER(str): используются для преобразования регистра
- CONCAT(s1,s2 ... sn) : объединить входящие параметры в строку
положить сверхуc xu an
Конкатенация становится строкой.Еще одна вещь, которую следует отметить, это то, что результатом любой конкатенации строк с NULL является NULL.
- Функции LEFT(str,x) и RIGHT(str,x): возвращают крайние левые x символов и крайние правые x символов строки соответственно. Если второй параметр равен NULL, строка не будет возвращена.
- INSERT(str,x,y,instr): Начните строку str с указанной позиции x и замените строку длины y на instr.
- LTRIM(str) и RTRIM(str) удаляют пробелы слева и справа от строки str соответственно.
- Функция REPEAT(str,x): возвращает результат повторения строки x раз.
- Функция TRIM(str): используется для удаления пробелов из целевой строки.
- Функция SUBSTRING(str,x,y): возвращает строку длиной y символов с позиции x в строке str
- Функции LPAD(str,n,pad) и RPAD(str,n,pad): дополняют левую и правую стороны строки строкой pad до тех пор, пока длина не станет равной n символам.
- STRCMP(s1,s2) сравнивает значения ASCII строк s1 и s2. Возвращает -1, если s1 s2.
- REPLACE(str,a,b): заменяет все вхождения строки a в строке str строкой b
Числовая функция
MySQL поддерживает числовые функции, которые могут обрабатывать множество числовых операций. Давайте посмотрим на числовые функции в MySQL.Ниже приведены все числовые функции.
функция | Функции |
---|---|
ABS | вернуть абсолютное значение |
CEIL | Возвращает наибольшее целочисленное значение, превышающее определенное значение |
MOD | возврат по модулю |
ROUND | округление |
FLOOR | Возвращает наибольшее целочисленное значение, меньшее, чем значение |
TRUNCATE | Возвращает результат усечения числа до десятичных знаков |
RAND | Возвращает случайное значение от 0 до 1 |
Давайте поговорим об этих обычаях на основе практики.
- Функция ABS(x): возвращает абсолютное значение x
- Функция CEIL(x): возвращает целое число больше x
- MOD(x,y), по модулю x и y
- ROUND(x,y) возвращает значение x, округленное до y знаков после запятой; если это целое число, то y цифр равно 0; если y не указано, то y по умолчанию равно 0.
- FLOOR(x): возвращает наибольшее целое число, меньшее x, использование противоположно CEIL.
- TRUNCATE(x,y): Возвращает результат усечения числа x до Y десятичных разрядов.TRUNCATE знает усечение, а не округление.
- RAND(): возвращает случайное значение от 0 до 1.
функции даты и времени
Функции даты и времени также являются очень важной частью MySQL.Давайте рассмотрим эти функции вместе.
функция | Функции |
---|---|
NOW | Возвращает текущую дату и время |
WEEK | Возвращает неделю года |
YEAR | Возвращает год даты |
HOUR | Возвращает значение часа |
MINUTE | Возвращает значение минут |
MONTHNAME | название месяца возврата |
CURDATE | Возвращает текущую дату |
CURTIME | вернуть текущее время |
UNIX_TIMESTAMP | Дата возврата Отметка времени UNIX |
DATE_FORMAT | Возвращает дату в формате строки |
FROM_UNIXTIME | Возвращает значение даты временной метки UNIX. |
DATE_ADD | Возврат даты и времени + предыдущий временной интервал |
DATEDIFF | Возвращает количество дней между временем начала и временем окончания |
Ниже приведен пример, поясняющий использование каждой функции.
- СЕЙЧАС(): возвращает текущую дату и время.
- НЕДЕЛЯ(ДАТА) и ГОД(ДАТА): первый возвращает неделю года, последний возвращает год данной даты
- ЧАС(время) и МИНУТЫ(время): возвращает час заданного времени, последний возвращает минуту заданного времени
- Функция MONTHNAME(дата): возвращает английский месяц даты
- Функция CURDATE(): возвращает текущую дату, включая только год, месяц и день.
- Функция CURTIME(): возвращает текущее время, включая только часы, минуты и секунды.
- UNIX_TIMESTAMP(date): возвращает метку времени UNIX.
- FROM_UNIXTIME(date): возвращает значение даты временной метки UNIXTIME, противоположное UNIX_TIMESTAMP.
- Функция DATE_FORMAT(date,fmt): Форматировать дату в соответствии со строкой fmt и отображать ее в соответствии с указанным форматом даты после форматирования.
Конкретный формат даты может относиться к этой статьеblog.CSDN.net/WeChat_3870…
Давайте продемонстрируем отображение текущей даты какгод месяц деньВ этой форме используется формат даты%M %D %Y.
- Функция DATE_ADD (дата, интервал, тип выражения): возвращает дату, которая отличается от заданной даты интервалом времени.
interval представляет собой ключевое слово типа интервала, expr — это выражение, это выражение соответствует следующему типу, type — это тип интервала, MySQL предоставляет 13 типов интервалов времени
тип выражения | описывать | Формат |
---|---|---|
YEAR | год | YY |
MONTH | Луна | MM |
DAY | день | DD |
HOUR | Час | hh |
MINUTE | Минута | mm |
SECOND | второй | ss |
YEAR_MONTH | год и месяц | YY-MM |
DAY_HOUR | день и час | DD hh |
DAY_MINUTE | день и минута | DD hh : mm |
DAY_SECOND | день и второй | ДД чч:мм:сс |
HOUR_MINUTE | часы и минуты | hh:mm |
HOUR_SECOND | часы и секунды | hh:ss |
MINUTE_SECOND | минуты и секунды | mm:ss |
- DATE_DIFF(date1, date2) используется для вычисления разницы в днях между двумя датами.
Проверьте, сколько дней осталось до 01.01.2021
Функция процесса
Функции процесса также являются очень распространенным типом функций, которые пользователи могут использовать для реализации условного выбора в SQL. Это может повысить эффективность запросов. В следующей таблице перечислены эти функции процесса.
функция | Функции |
---|---|
IF(value,t f) | Возвращает t, если значение истинно; в противном случае возвращает f |
IFNULL(value1,value2) | Возвращает значение1, если значение1 не равно NULL, в противном случае возвращает значение2. |
CASE WHEN[value1] THEN[result1] ...ELSE[default] END | Если значение1 истинно, вернуть результат1, иначе вернуть значение по умолчанию |
CASE[expr] WHEN[value1] THEN [result1]... ELSE[default] END | Если выражение равно значению1, вернуть результат1, иначе вернуть значение по умолчанию |
другие функции
В дополнение к строковым функциям, функциям даты и времени и функциям процесса, которые мы представили, есть некоторые функции, которые не принадлежат к трем вышеперечисленным типам функций.
функция | Функции |
---|---|
VERSION | Возвращает версию текущей базы данных |
DATABASE | Возвращает текущее имя базы данных |
USER | Возвращает текущее имя пользователя для входа |
PASSWORD | Возвращает зашифрованную версию строки |
MD5 | Возвращает значение MD5 |
INET_ATON(IP) | Возвращает числовое представление IP-адреса |
INET_NTOA(num) | Возвращает IP-адрес, представленный числом |
Давайте посмотрим на конкретное использование
- ВЕРСИЯ: возвращает текущую версию базы данных.
- DATABASE: возвращает текущее имя базы данных
- ПОЛЬЗОВАТЕЛЬ : возвращает текущее имя пользователя для входа в систему.
- PASSWORD(str) : возвращает зашифрованную версию строки, например.
- Функция MD5(str): возвращает значение MD5 строки str
- INET_ATON(IP): возвращает сетевую последовательность байтов IP
- Функция INET_NTOA(num): возвращает IP-адрес, представленный сетевой последовательностью байтов, в отличие от INET_ATON.