目次
1. データベースの基本概念
データ: 数字、テキスト、グラフィック、画像、音声、ファイルレコードなど、物事を説明する記号的な記録は、「レコード」の形式で統一された形式で保存されます。
テーブル: さまざまなレコードをまとめて特定のデータを保存します。
データベース: テーブルの集合はデータを格納するための倉庫であり、相互に関連するデータが一定の組織的な方法で格納された集合は、データ構造に従ってデータを整理、格納、管理するための倉庫です。
データベース管理システム(DBMS) : データベースリソースの効率的な編成、管理、アクセスを実現するシステムソフトウェアです。データベース構築・保守機能、データ定義機能、データ操作機能、データベース運用管理機能、通信機能。
データベースシステム: ハードウェア、OS、データベース、DBMS、アプリケーションソフトウェア、データベース利用者から構成されるマンマシンシステムであり、利用者はDBMSやアプリケーションプログラムを通じてデータベースを操作します。
2. データベースの種類と一般的に使用されるデータベース
1. リレーショナルデータベース
リレーショナル データベース システムは、リレーショナル モデルに基づいたデータベース システムです。
リレーショナルモデルのデータ構造は分かりやすい2次元データテーブルを採用
- 各行はレコードと呼ばれ、オブジェクトの情報を記述するために使用されます。
- 各列はフィールドと呼ばれ、オブジェクトのプロパティを記述するために使用されます。
リレーショナル モデルは、単純な「エンティティ関係」(ER) 図で表すことができます。
ER 図には、エンティティ(データ オブジェクト)、関係、属性の3 つの要素が含まれています。
- MySQL (Oracle が買収)
- マリアDB
- オラクル
- SQLサーバー(マイクロソフト)
- DB2(IBM)
- PostgreSQL
2. 非リレーショナルデータベース
非リレーショナル データベースは NoSQL (Not Only SQL) とも呼ばれます。
保存されたデータはリレーショナル モデルに基づいておらず、固定のテーブル形式を必要としません。
非リレーショナル データベースの利点
- データベースは高い同時実行性で読み取りおよび書き込みが可能です
- 効率的なストレージと大量のデータへのアクセス
- 高い拡張性と高可用性を備えたデータベース
キャッシュデータベース Redis、Memcache
インデックス付きデータベース ES (Elasticsearch)
時系列データベース Prometheus
文書データベース MongoDB
3. データベースのデータ型
整数
データの種類 | 意味 |
---|---|
tinyint(m) | 1バイト範囲(-128~127) |
smallint(m) | 2バイト範囲(-32768~32767) |
中整数(m) | 3バイト範囲(-8388608~8388607) |
int(m) | 4バイト範囲(-2147483648~2147483647) |
ビギント(m) | 8バイト範囲(±9.22*10の18乗) |
浮動小数点
弦
一般的なデータ型
- int : 整数型
- float : 単精度浮動小数点 4 バイト 32 ビット
- double : 倍精度浮動小数点 8 バイト 64 ビット
- char : 固定長文字型
- varchar: 可変長文字型
- テキスト : テキスト
- 画像 : 画像
- Decimal(5,2) : 5 つの有効な長さの桁 (小数点の後に 2 桁)
4、SQL文
1 はじめに
SQL ステートメントは、データ クエリ、データ更新、アクセス制御、オブジェクト管理などの機能を含むデータベースの維持および管理に使用されます。
2. 分類
DDL : データ定義言語。ライブラリ、テーブル、インデックスなどのデータベース オブジェクトを作成するために使用されます。
DML : データ操作言語。テーブル内のデータを管理するために使用されます。
DQL : データ テーブルから修飾されたデータ レコードを検索するために使用されるデータクエリ言語。
DCL : データ制御言語。データベース ユーザーまたはロールの権限を設定または変更するために使用されます。
5、SQL文の使用
1. データベースの操作
(1) データベースを作成する
CREATE DATABASE `データベース名`;
(2) データベースを確認する
データベースを表示します。
(3) データベースを利用(入力)する
`データベース名` を使用します。
(4) データベースを削除する
DROP DATABASE `データベース名`;
2. データベーステーブルの操作
(1) データベース内のテーブルを参照する
SHOW TABLES; データベースに入り、すべてのテーブルを表示します
(2) データベーステーブルの作成
CREATE TABLE `テーブル名` (列 1 データ型、フィールド 2 データ型、...);
作成時に、データ型の後に制約を (スペースで区切って) 追加して、制約の効果を実現します。
共通の制約 | 効果 |
---|---|
nullではない | not-null 制約 (値を null にすることはできません) |
主キー | 主キー制約 (非 null の効果を含む主キーとして設定) |
一意のキー | 一意のキー制約(フィールド内で値は一意) |
デフォルトは値を指定します | デフォルト値の制約 (デフォルト値を指定された値に設定します。文字列は「 」で囲む必要があります) |
自動増加 | 自己インクリメント制約 (1 から始まり、レコード エントリの数が増加するにつれて 1 ずつ増加します) |
外部キー | 外部キー制約 (単語フィールドを外部キーとして設定し、サブテーブル内のフィールドに関連付けます) |
ゼロフィル | 桁数が足りない場合は0を埋めてください |
(3) データベーステーブルの構造を確認する
DESC `テーブル名`;
(4) データベーステーブルを削除します。
DROP TABLE `テーブル名`;
(5) データベースのテーブル構造を変更する
ALTER TABLE `古いテーブル名` RENAME `新しいテーブル名`; テーブル名を変更します
ALTER TBALE `テーブル名` ADD フィールド名のデータ型; フィールドを追加
ALTER TABLE `テーブル名` CHANGE 古いフィールド名 新しいフィールド名のデータ型; フィールド名を変更
ALTER TBALE `テーブル名` DROP フィールド名; フィールドを削除
3. テーブル内のデータ操作
(1) レコードの追加
INSERT INTO `TableName` (field1, field2, ...) VALUES (number, 'string');
非 null 制約がない場合、指定されていないフィールドの一部はデフォルトで NULL になります。
フィールドを指定せずに、すべてのフィールドにデータを入力します。つまり、 INSERT INTO table name VALUES (number, 'string');
(2) テーブル内のレコードをクエリする
SELECT * FROM `テーブル名`;テーブル内のすべてのレコードを表示します
SELECT * FROM `テーブル名` 制限数;テーブル内の指定された数のレコードを表示します
SELECT * FROM `テーブル名` 制限番号 1、番号 2;テーブル内の指定された番号 1 の後の番号 2 のレコードを表示します
SELECT フィールド x, フィールド y, ... FROM `テーブル名`;指定されたフィールドレコードをクエリします
SELECT フィールド x, フィールド y, ... FROM `テーブル名` \G クエリされたレコードを垂直方向に表示します (より多くのフィールドに適用可能)
SELECT * FROM `テーブル名` WHERE 条件 1 [AND 条件 2] [OR 条件 3];条件に従ってレコードをクエリします
(3) レコードの削除
DELETE FROM `テーブル名`;テーブル内のすべてのレコードを削除します
DELETE FROM `テーブル名` WHERE 条件 1 [AND 条件 2] [OR 条件 3];テーブル内の指定された条件レコードを削除します
(通常は主キーに基づきます)
(4) 変更履歴
UPDATE `テーブル名` SET フィールド = 値 WHERE 条件 1 [AND 条件 2] [OR 条件 3];指定された条件レコードを変更します
6. データベーステーブルの高度な操作
1.テーブルを作成すると判断した場合
テーブルを作成する前に、テーブルが存在するかどうかを確認し、存在しない場合は作成し、存在する場合は作成しません。
CREATE TABLE IF NOT EXISTS `テーブル名` (フィールド 1 データ型、フィールド 2 データ型、...);
2. テーブルのクローンを作成する
CREATE TABLE `New Table` LIKE `Old Table`; 同様の方法で古いテーブルのテーブル構造をコピー
INSERT INTO `New Table` SELECT * FROM `Old Table`; 古いテーブルでクエリされたデータを新しいテーブルに挿入
3. テーブルの構造と詳細を表示する
SHOW CREATE TABLE `テーブル名`; SQLコマンド形式でテーブル構造を表示し、テーブルに関するその他の情報も表示します
4. テーブルの再構築(フォーマット)
TRUNCATE TABLE `テーブル名`;
テーブルデータの消去との違いは
、テーブル名からの削除で、データレコードを1行ずつ削除するため、削除効率が悪くなりますが、実行後は削除したレコードエントリ数が返され、削除後にデータレコードが挿入されます。元の最大レコードは自動的に増加します。truncate table テーブル名; テーブルを直接再構築することであり、空にする速度は削除よりも速いです。実行後、レコード エントリの数は返されず、データはテーブルがクリアされた後に挿入されます。 auto-increment フィールドは再び 1 からインクリメントされます。
5. 一時テーブルを作成する
CREATE TEMPORARY `TableName` (フィールド 1 データ型、フィールド 2 データ型、...);
一時テーブルは現在の接続でのみ有効であり、通常どおり追加、削除、変更、確認できますが、show tables では表示できず、現在の接続を変更または終了すると、一時テーブルは無効になります。
6. 外部キー結合
外部キーの定義
同じ属性フィールド x がテーブル 1 の主キーであるが、テーブル 2 では主キーではない場合、フィールド x はテーブル 2 の外部キーと呼ばれます。
主キーテーブルと外部キーテーブルの理解
(1) 公開キーを主キーとするテーブルが主キーテーブル(親テーブル、メインテーブル)
(2) 公開キーを外部キーとするテーブルが外部キーテーブル(子テーブル、外部テーブル)となります。
注: 外部キーに関連付けられたメイン テーブルのフィールドは、主キーとして設定する必要があります。スレーブ テーブルは一時テーブルであってはならず、マスター テーブルとスレーブ テーブルのフィールドのデータ型、文字長、制約が同じである必要があります。
例: 2 つのテーブルを作成します。主キー テーブルはサプライヤーの番号と名前、外部キー テーブルは商品テーブル、サプライヤー番号が外部キーとして使用されます。
まず主キーテーブル(サプライヤーテーブル)を作成します。
主キー制約をメインテーブルに追加します (主キー名は「PK_」で始めることをお勧めします)
次に、外部キーテーブル(商品テーブル)を作成します。
スレーブ テーブルに外部キーを追加し、マスター テーブルの pid フィールドとスレーブ テーブルの Providers_id フィールドの間に外部キーの関連付けを確立します (外部キー名は "FK_" で始めることをお勧めします)
データを挿入するときは、最初にマスター、次に外部データを挿入します。
データを削除する場合は、最初に外部、次にプライマリを削除します