序文
「作者のホームページ」:Sprite Youbai Bubbles
「個人サイト」:スプライトの個人サイト
「おすすめコラム」:
★ Java ワンストップ サービス ★
★ 入門から習熟まで対応★
★クールなフロントエンド コード共有 ★
★ 0 からヒーロー、Vue が神になるまでの道★
★ uniapp-構築からプロモーションまで★
★ 0 からヒーロー、 Vueが神になる道★
★ アルゴリズムは1カラムで解ける★
★ 0からアーキテクチャを語ろう★
★データの循環の絶妙なやり方★
★先進的なバックエンドへの道★
記事ディレクトリ
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を使用したWebアプリケーション開発など、MySQLを使用したアプリケーション開発を学びます。
さて、以下は MySQL の開発と応用です。これには、データベース プログラミングに PHP、Java、およびその他のプログラミング言語を使用する方法と、Web アプリケーション開発に 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を使用したWebアプリケーション開発
MySQL は、Laravel、Spring などのさまざまな Web アプリケーション フレームワークと統合できます。Webアプリケーション開発では、MySQLの追加、削除、変更、クエリを行う必要があります。
以下は、Laravel フレームワークを使用して実装された CRUD の例です。
- Laravel で Customer というモデルを作成します。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = ['name', 'email'];
}
- Laravel で 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 コントローラーは、Customer モデルのクエリ、追加、編集、更新、削除に対応する、インデックス、作成、保存、編集、更新、および破棄の 6 つのアクションを提供します。
- 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 で対応するビュー テンプレートを作成します。
- インデックス.ブレード.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
- 作成.ブレード.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
上記の例では、顧客リストの表示、顧客の追加、顧客の編集にそれぞれ対応する 3 つのビュー テンプレートが定義されています。
上記は、MySQL を使用してアプリケーションを開発する例であり、データベース プログラミングに PHP、Java などのプログラミング言語を使用したり、Web アプリケーション開発に MySQL を使用したりするすべてのコードと詳細な説明が含まれています。
データベース管理
データのバックアップ、リカバリ、パフォーマンス監視、セキュリティ管理などのデータベース管理を実行する方法を学びます。
データベース管理とは、データのバックアップ、リカバリ、パフォーマンス監視、セキュリティ管理など、データベースの維持管理を指します。以下に、これらの側面の概念と関連するコードの詳細を紹介します。
1. データのバックアップ
データ バックアップとは、元のデータが破損した場合に復元できるように、データベース内のデータを 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;