CHAR(n) хранит строки фиксированной длины n. Если строка короче, она дополняется пробелами до указанной длины.n, независимо от фактической длины строки.CREATE TABLE example (
fixed_char CHAR(10)
);
VARCHAR(n) хранит строки переменной длины, где n — это максимальная длина строки. Реальная длина строки определяется по количеству символов в ней.CHAR, так как длина строки не фиксирована и требует дополнительной обработки для управления памятью.CREATE TABLE example (
variable_char VARCHAR(50)
);
| Характеристика |
CHAR | VARCHAR ||-------------------------|-------------------------------------|-----------------------------------------|
| Длина | Фиксированная | Переменная |
| Использование памяти | Фиксированное количество памяти | Использует память по фактической длине |
| Заполнение пробелами | Дополняется пробелами до заданной длины | Нет заполнения пробелами |
| Производительность | Может быть быстрее при фиксированной длине | Может быть менее эффективным |
| Применение | Идентификаторы, коды стран | Имена, адреса, описания |
CREATE TABLE users (
user_id CHAR(10),
username VARCHAR(50)
);
user_id всегда будет занимать 10 символов, даже если идентификатор короче, в то время как username будет занимать только необходимое количество памяти для хранения имени пользователя.Выбор между
CHAR и VARCHAR зависит от характера данных, которые вы хотите хранить. Если данные имеют фиксированную длину, лучше использовать CHAR. Если длина данных варьируется, более подходящим будет использование VARCHAR.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Anonymous Quiz
4%
GET
86%
POST
11%
PUT
0%
DELETE
LEFT JOIN, RIGHT JOIN и INNER JOIN:Описание:
INNER JOIN возвращает только те строки, которые имеют совпадения в обеих таблицах, участвующих в соединении.SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;
id в обеих таблицах совпадают, будут включены в результат.Описание:
LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, результат всё равно будет включать строки из левой таблицы с NULL значениями для столбцов из правой таблицы.SELECT A.*, B.*
FROM TableA A
LEFT JOIN TableB B ON A.id = B.id;
TableA будут включены в результат, даже если нет совпадений в TableB. Столбцы из TableB будут содержать NULL, если совпадений не найдено.RIGHT JOIN (или RIGHT OUTER JOIN)Описание:
RIGHT JOIN возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, результат всё равно будет включать строки из правой таблицы с NULL значениями для столбцов из левой таблицы.SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;
TableB будут включены в результат, даже если нет совпадений в TableA. Столбцы из TableA будут содержать NULL, если совпадений не найдено.| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | NULL | (нет) |
| NULL | 4 | (нет) |
| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | NULL | 3 |
| NULL | 4 | (нет) |
| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| NULL | 3 | 3 |
| NULL | 4 | 4 |
Предположим, у нас есть две таблицы: `Employees` и `Departments`.
Employees:
| emp_id | name | dept_id |
|--------|-----------|---------|
| 1 | Alice | 10 |
| 2 | Bob | 20 |
| 3 | Charlie | 30 |
Departments:
| dept_id | dept_name |
|---------|--------------|
| 10 | HR |
| 20 | IT |
| 40 | Marketing |
INNER JOIN:
SELECT Employees.name, Departments.dept_name
FROM Employees
INNER JOIN Departments ON Employees.dept_id = Departments.dept_id;
| name | dept_name |
|--------|-----------|
| Alice | HR |
| Bob | IT |
SELECT Employees.name, Departments.dept_name
FROM Employees
LEFT JOIN Departments ON Employees.dept_id = Departments.dept_id;
| name | dept_name |
|----------|-----------|
| Alice | HR |
| Bob | IT |
| Charlie | NULL |
SELECT Employees.name, Departments.dept_name
FROM Employees
RIGHT JOIN Departments ON Employees.dept_id = Departments.dept_id;
| name | dept_name |
|----------|--------------|
| Alice | HR |
| Bob | IT |
| NULL | Marketing |
Выбор между этими операторами зависит от ваших потребностей в получении данных и требований к отображению неполных совпадений между таблицами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Anonymous Quiz
3%
MongoDB
1%
Cassandra
1%
Redis
96%
PostgreSQL
🤔5
Описание:
NULL значения. Это ограничение гарантирует, что данные всегда будут присутствовать в этом столбце.CREATE TABLE employees (
emp_id INT,
name VARCHAR(100) NOT NULL
);
Описание:
CREATE TABLE employees (
emp_id INT UNIQUE,
email VARCHAR(100) UNIQUE
);
Описание:
NOT NULL и UNIQUE. Обеспечивает уникальную идентификацию каждой строки в таблице. В таблице может быть только один первичный ключ.CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
Описание:
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100)
);
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
Описание:
CREATE TABLE employees (
emp_id INT,
name VARCHAR(100),
salary DECIMAL(10, 2),
CHECK (salary > 0)
);
Описание:
CREATE TABLE employees (
emp_id INT,
name VARCHAR(100),
hire_date DATE DEFAULT CURRENT_DATE
);
Описание:
CREATE INDEX idx_name ON employees(name);
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
dept_id INT,
salary DECIMAL(10, 2) CHECK (salary > 0),
hire_date DATE DEFAULT CURRENT_DATE,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
Ограничения играют важную роль в управлении целостностью данных и предотвращении ошибок в базе данных. Они помогают гарантировать, что данные в таблицах будут точными, последовательными и соответствующими бизнес-правилам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Anonymous Quiz
4%
Git
45%
Docker
29%
Jenkins
23%
Kubernetes
👍1
Описание:
INNER JOIN возвращает только те строки, которые имеют совпадающие значения в обеих таблицах, участвующих в соединении. Если нет совпадения, строки не включаются в результирующий набор данных.SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;
id в обеих таблицах совпадают.Описание:
RIGHT JOIN возвращает все строки из правой таблицы (TableB) и совпадающие строки из левой таблицы (TableA). Если совпадения нет, строки из правой таблицы все равно включаются в результат с NULL значениями для столбцов из левой таблицы.SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;
TableB и совпадающие строки из TableA. Если нет совпадения, значения столбцов из TableA будут NULL.TableA:| id | name |
|----|-------|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
TableB:| id | dept |
|----|-------|
| 1 | HR |
| 2 | IT |
| 4 | Sales |
SELECT A.id, A.name, B.dept
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;
| id | name | dept |
|----|--------|------|
| 1 | Alice | HR |
| 2 | Bob | IT |
SELECT A.id, A.name, B.dept
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;
| id | name | dept |
|----|---------|------|
| 1 | Alice | HR |
| 2 | Bob | IT |
| 4 | NULL | Sales |
TableB, а строки из TableA включены только там, где есть совпадения. Если совпадений нет, значения столбцов из TableA будут NULL.NULL значениями для столбцов из левой таблицы.Оба типа соединений полезны в разных ситуациях в зависимости от требований к данным и специфики задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Anonymous Quiz
2%
GET
91%
PATCH
7%
POST
0%
DELETE
@Transactional и создает прокси для класса или метода.@Transactional.TransactionInterceptor, который начинает транзакцию через PlatformTransactionManager.commit). Если метод выбросил исключение, транзакция откатывается (rollback).Эта автоматизация позволяет легко управлять транзакциями, обеспечивая целостность данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Anonymous Quiz
2%
Git
15%
Ansible
80%
Prometheus
3%
Maven
Каждый уровень обеспечивает разный баланс между изоляцией и производительностью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Anonymous Quiz
25%
Реляционная база данных
7%
Документная база данных
3%
Графовая база данных
65%
Ключ-значение база данных
😁7
В автомобиле вы управляете рулем, педалями и переключателями передач, не думая о том, как работают двигатель или тормозная система. Это и есть абстракция: вы взаимодействуете с простым интерфейсом, не вникая в сложные внутренние механизмы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
23%
HTTP
2%
FTP
72%
WebSocket
3%
SMTP
🔥1
class Animal {
void eat() {
System.out.println("This animal eats.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("The dog barks.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // Наследованный метод
dog.bark(); // Метод класса Dog
}
}В этом примере
Dog наследует метод eat от Animal, что демонстрирует наследование в действии.Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
96%
Docker
1%
Git
2%
Jenkins
1%
Nginx
Эти виды тестирования помогают обеспечивать качество программного обеспечения, проверяя его на разных уровнях и аспектах, от отдельных модулей до всей системы в целом, от функциональности до производительности и безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Anonymous Quiz
11%
Basic Auth
59%
OAuth
22%
API Key
8%
Session
👍1
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:example="https://example.com/">
<soapenv:Header/>
<soapenv:Body>
<example:getExampleRequest>
<example:parameter1>Value1</example:parameter1>
<example:parameter2>Value2</example:parameter2>
</example:getExampleRequest>
</soapenv:Body>
</soapenv:Envelope>
SOAP является мощным и гибким протоколом для обмена сообщениями в распределённых системах, обеспечивая высокий уровень совместимости и расширяемости. Однако его сложность и накладные расходы делают его менее предпочтительным для простых веб-сервисов, где часто используется более легковесный REST.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Anonymous Quiz
86%
Spring
5%
Flask
3%
Ruby on Rails
6%
Express.js