머리말
"저자 홈페이지" : Sprite Youbai Bubbles
"개인 홈페이지" : Sprite 개인 홈페이지
"추천 칼럼" :
★ Java 원스톱 서비스 ★
★ 입문에서 숙달로 반응 ★
★ 멋진 프런트엔드 코드 공유 ★
★ 0에서 영웅으로, Vue가 신이 되는 길 ★
★ uniapp-구축에서 승진까지 ★
★ 0에서 영웅으로, Vue가 신이 되어가는 길 ★
★ 하나의 컬럼으로 알고리즘을 풀 수 있다 ★
★ 0부터 아키텍처에 대해 이야기하자 ★
★ 정교한 데이터 순환 방식 ★
★ 고급 백엔드로 가는 길 ★
기사 디렉토리
![여기에 이미지 설명 삽입](https://img-blog.csdnimg.cn/b7ba64bd98c949329a68223873542c3f.png)
계속되는 MYSQL 기초 (1) 계속
MySQL의 고급 작업
트랜잭션 처리, 백업 및 복구, 성능 최적화 등 MySQL의 고급 작업을 학습합니다.
자, 다음은 트랜잭션 처리, 백업 복구, 성능 최적화 등에 대한 모든 코드와 개념 설명을 포함하는 MySQL의 고급 작업입니다.
트랜잭션 처리
MySQL에서 트랜잭션은 일련의 작업을 수행할 때 데이터베이스가 완전히 완료되었는지 또는 전혀 완료되지 않았는지 확인할 수 있는 일련의 원자성 SQL 작업입니다.
트랜잭션을 시작하려면 START TRANSACTION 문을 사용하십시오. 예를 들어:
START TRANSACTION;
트랜잭션을 커밋하려면 COMMIT 문을 사용합니다. 예를 들어:
COMMIT;
트랜잭션을 실행 취소하려면 ROLLBACK 문을 사용할 수 있습니다. 예를 들어:
ROLLBACK;
백업 및 복원
MySQL에서는 mysqldump 도구를 사용하여 데이터베이스를 백업하고 복원할 수 있습니다. mysqldump 도구는 데이터베이스의 모든 테이블, 데이터, 인덱스 및 기타 정보를 포함하는 SQL 파일을 생성할 수 있습니다.
지원
데이터베이스를 백업하려면 다음 명령을 사용할 수 있습니다.
mysqldump -u username -p password database_name > backup.sql
안에:
- username: MySQL에 로그인하기 위한 사용자 이름입니다.
- 비밀번호: MySQL에 로그인하기 위한 비밀번호입니다.
- database_name: 백업할 데이터베이스의 이름입니다.
- backup.sql: 백업 파일의 경로와 파일명을 저장합니다.
다시 덮다
데이터베이스를 복원하려면 다음 명령을 사용할 수 있습니다.
mysql -u username -p password database_name < backup.sql
안에:
- username: MySQL에 로그인하기 위한 사용자 이름입니다.
- 비밀번호: MySQL에 로그인하기 위한 비밀번호입니다.
- database_name: 복원할 데이터베이스의 이름입니다.
- backup.sql: 백업 파일의 경로 및 파일 이름입니다.
성능 최적화
MySQL에는 데이터베이스의 성능을 향상시키기 위해 취할 수 있는 여러 조치가 있습니다. 다음은 몇 가지 일반적인 성능 최적화입니다.
1. 인덱스 최적화
MySQL에서 테이블에 인덱스를 추가하면 쿼리 속도가 크게 향상될 수 있습니다. 그러나 인덱스가 너무 많으면 쓰기 속도가 느려지므로 실제 상황에 따라 최적화해야 합니다.
2. 쿼리 최적화
하위 쿼리 대신 JOIN을 사용하는 것이 좋으며 JOIN이 더 효율적이며 동시에 SELECT * 사용을 피하고 필요한 열만 선택해야 합니다.
3. 데이터베이스 파라미터 튜닝
MySQL에서는 일부 데이터베이스 매개변수를 수정하여 성능을 향상시킬 수 있습니다. 예를 들어 캐시 크기를 늘리고 연결 수를 수정하고 동시 스레드를 늘리는 등의 작업을 수행할 수 있습니다.
4. 파티션 테이블
많은 양의 데이터를 처리할 때 분할된 테이블을 사용하여 성능을 최적화하는 것이 좋습니다.
MySQL 개발 애플리케이션
PHP 및 Java와 같은 프로그래밍 언어를 사용한 데이터베이스 프로그래밍과 MySQL을 사용한 웹 애플리케이션 개발을 포함하여 MySQL을 사용하여 애플리케이션을 개발하는 방법을 배웁니다.
자, 다음은 데이터베이스 프로그래밍을 위해 PHP, Java 및 기타 프로그래밍 언어를 사용하고 웹 애플리케이션 개발을 위해 MySQL을 사용하는 모든 코드와 자세한 설명을 포함하여 MySQL의 개발 및 응용입니다.
PHP를 사용한 데이터베이스 프로그래밍
PHP는 MySQL 데이터베이스와 상호 작용할 수 있는 널리 사용되는 서버 측 프로그래밍 언어입니다. 다음은 MySQL에 연결하고 쿼리를 실행하는 방법을 보여주는 간단한 PHP 코드 예제입니다.
<?php
$servername = "localhost";
$username = "root";
$password = "";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 执行查询
$sql = "SELECT * FROM mydatabase.customers";
$result = $conn->query($sql);
// 输出查询结果
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 结果";
}
// 关闭连接
$conn->close();
?>
위의 예에서 먼저 mysqli 클래스를 사용하여 MySQL 연결을 만든 다음 쿼리 문을 실행하고 결과를 브라우저에 출력합니다. 마지막으로 MySQL 연결이 닫힙니다.
Java를 사용한 데이터베이스 프로그래밍
Java는 MySQL 데이터베이스와도 상호 작용할 수 있는 범용 프로그래밍 언어입니다. 다음은 MySQL에 연결하고 쿼리를 실행하는 방법을 보여주는 간단한 Java 코드 예제입니다.
import java.sql.*;
public class MySQLTest {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost/mydatabase";
String username = "root";
String password = "";
try {
Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM customers");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println("id: " + id + " - Name: " + name + " - Email: " + email);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
위의 예에서 먼저 DriverManager 클래스를 사용하여 MySQL 연결을 만든 다음 쿼리 문을 실행하고 결과를 콘솔에 출력합니다. 마지막으로 MySQL 연결이 닫힙니다.
MySQL을 사용한 웹 애플리케이션 개발
MySQL은 Laravel, Spring 등과 같은 다양한 웹 애플리케이션 프레임워크와 통합될 수 있습니다. 웹 애플리케이션 개발에서는 MySQL을 추가, 삭제, 수정 및 쿼리해야 합니다.
다음은 Laravel 프레임워크를 사용하여 구현된 CRUD의 예입니다.
- Laravel에서 Customer라는 모델을 생성합니다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = ['name', 'email'];
}
- 라라벨에서 CustomerController라는 컨트롤러를 생성합니다:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Customer;
class CustomerController extends Controller
{
public function index()
{
$customers = Customer::all();
return view('customer.index', ['customers' => $customers]);
}
public function create()
{
return view('customer.create');
}
public function store(Request $request)
{
$customer = Customer::create([
'name' => $request->input('name'),
'email' => $request->input('email')
]);
return redirect('/customers');
}
public function edit($id)
{
$customer = Customer::find($id);
return view('customer.edit', ['customer' => $customer]);
}
public function update(Request $request, $id)
{
$customer = Customer::find($id);
$customer->name = $request->input('name');
$customer->email = $request->input('email');
$customer->save();
return redirect('/customers');
}
public function destroy($id)
{
$customer = Customer::find($id);
$customer->delete();
return redirect('/customers');
}
}
위의 예에서 CustomerController 컨트롤러는 쿼리, 추가, 편집, 업데이트 및 고객 모델 삭제에 해당하는 여섯 가지 작업인 인덱스, 생성, 저장, 편집, 업데이트 및 삭제를 제공합니다.
- Laravel에서 해당 경로를 만듭니다.
Route::get('/customers', 'CustomerController@index')->name('customer.index');
Route::get('/customers/create', 'CustomerController@create')->name('customer.create');
Route::post('/customers', 'CustomerController@store')->name('customer.store');
Route::get('/customers/{id}/edit', 'CustomerController@edit')->name('customer.edit');
Route::put('/customers/{id}', 'CustomerController@update')->name('customer.update');
Route::delete('/customers/{id}', 'CustomerController@destroy')->name('customer.destroy');
위의 예에서는 위의 6개 작업에 해당하는 6개의 경로가 정의됩니다.
- Laravel에서 해당 뷰 템플릿을 생성합니다.
- index.blade.php
@extends('layout')
@section('content')
<h1>Customers</h1>
<a href="{
{ route('customer.create') }}" class="btn btn-primary">Add New Customer</a>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach ($customers as $customer)
<tr>
<td>{
{ $customer->id }}</td>
<td>{
{ $customer->name }}</td>
<td>{
{ $customer->email }}</td>
<td>
<a href="{
{ route('customer.edit', ['id' => $customer->id]) }}" class="btn btn-primary">Edit</a>
<form action="{
{ route('customer.destroy', ['id' => $customer->id]) }}" method="POST" style="display: inline">
{
{ method_field('DELETE') }}
{
{ csrf_field() }}
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
@endsection
- create.blade.php
@extends('layout')
@section('content')
<h1>Add New Customer</h1>
<form action="{
{ route('customer.store') }}" method="POST">
{
{ csrf_field() }}
<div class="form-group">
<label for="name">Name:</label>
<input type="text" name="name" id="name" class="form-control">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" name="email" id="email" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
@endsection
- edit.blade.php
@extends('layout')
@section('content')
<h1>Edit Customer</h1>
<form action="{
{ route('customer.update', ['id' => $customer->id]) }}" method="POST">
{
{ method_field('PUT') }}
{
{ csrf_field() }}
<div class="form-group">
<label for="name">Name:</label>
<input type="text" name="name" id="name" class="form-control" value="{
{ $customer->name }}">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" name="email" id="email" class="form-control" value="{
{ $customer->email }}">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
@endsection
위의 예에서는 각각 고객 목록 표시, 고객 추가 및 고객 편집에 해당하는 세 개의 보기 템플릿이 정의되어 있습니다.
위는 데이터베이스 프로그래밍을 위해 PHP, Java 및 기타 프로그래밍 언어를 사용하고 웹 응용 프로그램 개발을 위해 MySQL을 사용하는 방법에 대한 모든 코드와 자세한 설명을 포함하여 MySQL을 사용하여 응용 프로그램을 개발하는 예입니다.
데이터베이스 관리
데이터 백업, 복구, 성능 모니터링, 보안 관리 등 데이터베이스를 관리하는 방법을 배웁니다.
데이터베이스 관리는 데이터 백업, 복구, 성능 모니터링, 보안 관리 등 데이터베이스의 유지 관리를 말합니다. 아래에서는 이러한 측면의 개념과 관련 코드 세부 정보를 소개합니다.
1. 데이터 백업
데이터 백업은 원래 데이터가 손상된 경우 복원할 수 있도록 데이터베이스의 데이터를 하나 이상의 위치로 복사하는 것을 말합니다. 일반적인 백업 방법에는 전체 백업, 증분 백업 및 차등 백업이 있습니다.
전체 백업은 전체 데이터베이스를 다른 위치로 백업하는 것입니다. 증분 백업은 마지막 전체 백업 이후 새 데이터 또는 변경된 데이터만 백업합니다. 차등 백업은 마지막 전체 백업 이후 변경된 데이터를 백업합니다.
다음은 SQL Server 데이터베이스의 백업 코드입니다.
-- 完全备份
BACKUP DATABASE MyDatabase
TO DISK = 'C:\MyDatabase.bak'
WITH INIT;
-- 增量备份
BACKUP DATABASE MyDatabase
TO DISK = 'C:\MyDatabase_incremental.bak'
WITH DIFFERENTIAL;
-- 差异备份
BACKUP DATABASE MyDatabase
TO DISK = 'C:\MyDatabase_differential.bak'
WITH DIFFERENTIAL;
2. 데이터 복구
데이터 복구는 손상된 데이터를 복구하기 위해 백업 파일에서 데이터베이스로 데이터를 복원하는 것을 말합니다.
다음은 SQL Server 데이터베이스의 복구 코드입니다.
-- 恢复完全备份
RESTORE DATABASE MyDatabase
FROM DISK = 'C:\MyDatabase.bak';
-- 恢复增量备份
RESTORE DATABASE MyDatabase
FROM DISK = 'C:\MyDatabase_incremental.bak'
WITH NORECOVERY;
-- 恢复差异备份
RESTORE DATABASE MyDatabase
FROM DISK = 'C:\MyDatabase_differential.bak'
WITH NORECOVERY;
3. 성능 모니터링
성능 모니터링은 데이터베이스를 모니터링하고 분석하여 시스템의 성능을 평가하고 가능한 문제를 발견하는 것을 말합니다.
다음은 SQL Server 데이터베이스의 성능 모니터링 코드입니다.
-- 查看当前运行的所有进程
SELECT * FROM sys.sysprocesses;
-- 查看缓存中的查询计划
SELECT * FROM sys.dm_exec_cached_plans;
-- 查看缓存中的查询
SELECT text FROM sys.dm_exec_query_stats
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE execution_count > 1;
4. 보안 관리
보안 관리는 무단 액세스 또는 악의적인 공격으로부터 데이터베이스를 보호하는 것을 말합니다. 일반적인 보안 관리 방법에는 사용자, 역할 및 권한 생성이 포함됩니다.
다음은 SQL Server 데이터베이스의 보안 관리 코드입니다.
-- 创建用户并授予数据库访问权限
CREATE LOGIN NewUser WITH PASSWORD = 'password';
CREATE USER NewUser FOR LOGIN NewUser;
USE MyDatabase;
GRANT SELECT, INSERT, UPDATE, DELETE TO NewUser;
-- 创建角色并向其中添加用户
CREATE ROLE MyRole;
EXEC sp_addrolemember 'MyRole', 'NewUser';
-- 授予对象级别的权限给角色
GRANT SELECT, INSERT, UPDATE, DELETE ON MyTable TO MyRole;