記事のディレクトリ
序文
- 情報爆発の時代にあって、大量のデータや情報が絶えず生み出されており、それらを安全かつ効果的に保存、検索、管理する方法が付随しています。データの効果的な保存、効率的なアクセス、便利な共有、およびセキュリティ制御は、情報化時代において解決すべき問題になっています。
1.データベースの紹介
1.1データベースを使用する必要性
- データベースはデータを効率的かつ明確に保存できるため、人々はデータをより迅速かつ便利に管理できます。
- データベースには次の特徴があります。
可以结构化存储大量的数据信息,方便用户进行有效的检索和访问;
可以有效地保持数据信息的一致性、完整性,降低数据冗余;
可以满足应用的共享与安全方面的要求
- データベース技術は、コンピュータサイエンスのコア技術の1つであり、完全な理論的基盤を持っています。
1.2データベースの基本概念
1.2.1データ
- シンボルレコード
- 数字、テキスト、グラフィック、画像、音声、ファイルレコードなどを含みます。
- 「レコード」の形式で統一された形式で保存する
1.2.2データシート
- さまざまなレコードをまとめる
- 特定のデータを保存するために使用されます
1.2.3データベース
- テーブルのコレクションは、データを格納するためのウェアハウスです。
- 特定の組織に保存されている関連データのコレクション
1.2.4データベース管理システム(DBMS)
- データベースリソースへの効果的な編成、管理、アクセスを実現するシステムソフトウェアです。
1.2.5データベースシステム
- これは、ハードウェア、OS、データベース、DBMS、アプリケーションソフトウェア、およびデータベースユーザーで構成されるマンマシンシステムです。
- ユーザーはDBMSまたはアプリケーションを介してデータベースを操作できます
1.3データベースシステム開発の歴史
1.3.1第1世代データベース
- 1960年代以降、第1世代のデータベースシステムが登場しました。
- 階層型モデルとネットワークモデルのデータベースシステムです
- データの統合管理と共有を強力にサポートします
1.3.2第2世代データベース
- 1970年代初頭、第2世代のデータベース-リレーショナルデータベースが登場し始めました
- 1980年代初頭、IBMのリレーショナルデータベースシステムDB2が登場し、階層型およびメッシュモデルデータベースに徐々に取って代わり始め、業界の主流になりました。
- これまでのところ、リレーショナルデータベースシステムは依然としてデータベースアプリケーションの主要な位置を占めています
1.3.3第3世代データベース
- 1980年代以降、さまざまな分野に適応した新しいデータベースシステムが登場しています。
- 強力な実用性と幅広い適応性を備えたオブジェクト指向データベースシステム
- 1990年代後半、複数のデータベースシステムが共同でアプリケーションをサポートする状況が形成されました。
- -いくつかの新しい要素が主流のデータベースシステムに追加されました。たとえば、Oracleでサポートされている「relation-object」データベースモデルです。
1.4現在の主流データベースの紹介
-
SQL Server(Microsoft Corporationの製品):
Windowsオペレーティングシステム用。シンプルで使いやすい
-
オラクル(オラクル社の製品):
すべての主流プラットフォーム向け。安全で、完全で、操作が複雑です。
-
DB2(IBMの製品):
すべての主流プラットフォーム用;空の形をした、安全で完全な
-
MySQL(Oracleが買収):
無料、オープンソース、サイズが小さい
1.5リレーショナルデータベース
1.5.1概要
- リレーショナルデータベースシステムは、リレーショナルモデルに基づくデータベースシステムです。
- リレーショナルモデルのデータ構造は、シンプルで理解しやすい2次元データテーブルを使用しています
- リレーショナルモデルは、単純な「実体関連」(ER)図で表すことができます。
- ERダイアグラムには、エンティティ(データオブジェクト)、関係、属性の3つの要素が含まれています。
1.5.2各モジュールの概要
- エンティティ:インスタンスとも呼ばれ、「銀行の顧客、銀行口座など」など、現実の世界の他のオブジェクトと区別できる「イベント」または「モノ」に対応します。
- 属性:エンティティの特定の特性。エンティティは複数の属性を持つことができます。たとえば、銀行の顧客エンティティセットの各エンティティには、名前、住所、電話番号などの属性があります。
- 連絡先:エンティティセット間の対応する関係は連絡先と呼ばれ、関係とも呼ばれます。たとえば、銀行の顧客と銀行口座の間には「貯蓄」関係があります
- すべてのエンティティとその接続のコレクションは、リレーショナルデータベースを構成します
1.5.3リレーショナルデータベースの構造の概要
- リレーショナルデータベースのストレージ構造は2次元テーブルです
- 各2次元テーブルで
は、各行はレコードと呼ばれ、オブジェクトの情報を説明するために使用され、
各列はフィールドと呼ばれ、オブジェクトの属性を説明するために使用されます。
1.5.4リレーショナルデータベースの適用
-
リレーショナルデータベース:
Oracle、MySQL
SQLServer、Sybase
Informix、アクセス
DB2、FoxPRO -
適用例:
12306ユーザー情報システム
タオバオアカウントシステム
チャイナユニコム携帯電話番号情報システム
銀行ユーザーアカウントシステム
ウェブサイトユーザー情報システム
1.6非リレーショナルデータベースの概要
- 非リレーショナルデータベースはNoSQL(sQLだけでなく)とも呼ばれます
- 保存されたデータはリレーショナルモデルに基づいておらず、固定のテーブル形式を必要としません
- 非リレーショナルデータベースの利点:
データベースは
、高い同時読み取りと書き込みが可能であり、大量のデータを効率的に格納およびアクセスできます。
データベースは、高いスケーラビリティと高可用性を備えています。 - 一般的に使用される非リレーショナルデータベース:Redis、mongoDBなど。
2.MySQLサービス基盤
2.1MySQLデータベースの概要
- 人気のあるオープンソースのリレーショナルデータベース
- Oracle製品
- GPL契約に準拠し、無料で使用および変更できます
- 特徴:
優れたパフォーマンス、安定したサービス、
オープンソース、著作権制限なし、低コスト
、マルチスレッド、マルチユーザー、
CIS(クライアント/サーバー)アーキテクチャに基づく、
安全で信頼性の高い
2.2MySQLデータベースをコンパイルしてインストールする
2.2.1準備
- MySQLコンポーネントパッケージを準備する必要があります
- 他のデータベースがインストールされている場合は、最初にそれらをアンインストールします
yum -y remove 数据库名
2.2.2ソースコードのコンパイルとインストール
- 関連ツールをインストールする
yum -y install ncurses ncurses-devel cmake
'//ncurses-devel是字符终端下屏幕控制的基本库'
'//cmake跨平台编译安装工具'
- 実行中のユーザーを作成する
useradd -s /sbin/nologin mysql '//创建不可登录的用户'
- 開梱
tar zxvf mysql-boost-5.7.20.tar.gz '//解包'
cd mysql-5.7.20/
- cmakeのインストールと構成
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
- コンパイルしてインストール
make && make install '//编译安装'
2.3インストール後のその他の調整
- データベースディレクトリに権限を設定する
cd
chown -R mysql:mysql /usr/local/mysql/ '//设置属主和数组'
- 構成ファイル/etc/my.cnfを作成します
rm -rf /etc/my.cnf '//如果原来的/etc/文件夹下有 my.cnf 文件可以删除'
vi /etc/my.cnf
[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server = utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
- 環境変数を設定する
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile '//使配置立即生效'
- データベースを初期化します
mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
2.4システムサービスを追加して開始する
cd /usr/local/mysql/
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl daemon-reload '//守护进程重新加载'
systemctl start mysqld
systemctl enable mysqld
netstat -anpt | grep 3306 '//查看端口信息'
2.5MySQLデータベースへのアクセス
- MySQLサーバーにログインします
mysql -uroot -p '//初始化密码,第一次以空密码登录'
- 設定したログインパスワードを変更することもできます
mysqladmin -uroot -p password 'abc123' //给root账号设置密码为abc123
mysql -uroot -pabc123 //以"abc123"为密码登录数据库
- MySQL操作ステートメントを実行します
mysql> show databases; //查看当前mysql服务器中包含的库
mysql> show tables; //查看当前所在库中包含的表
- 「mysql>」オペレーティング環境を終了します
mysql> exit
Bye
[root@localhost ~]#
3.基本的なデータベース操作コマンド
- SQL言語
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库:包括数据查询、数据更新、访问控制、对象管理等功能
3.1データベースの分類
3.1.1データの分類
- 構造化データ
2次元論理テーブルで表現できるデータは構造化データです - 非構造化データ
2次元論理テーブルの使用に不便なデータは非構造化データです
3.1.2データベースの分類
- リレーショナルデータベースリレーショナルデータベースに
格納されているデータはテーブル形式であるため、データテーブルの行と列に格納されます。データテーブルを相互に関連付けて格納できるため、データの抽出が容易になります。 - 非リレーショナルデータベース非リレーショナルデータベースのデータは
、テーブル形式でのアクセスには適していませんが、大きなブロックにまとめられ、通常はデータセットに格納されます。これは、ドキュメント、画像、その他のデータの格納に便利です。 - mysqlデータベースで一般的に使用されるステートメントの分類
DDL (Data Definition Language,数据定义语言)﹔
用来建立数据库、数据库对象和定义字段,如 CREATE、ALTER、DROP。
DML (Data Manipulation Language,数据操纵语言)∶
用来插入、删除和修改数据库中的数据,如 INSERT、UPDATE、DELETE。
DQL (Data Query Language,数据查询语言):用来查询数据库中的数据,如 SELECT。
DCL (Data Control Language,数据控制语言):
用来控制数据库组件的存取许可、存取权限等,如 COMMIT、ROLLBACK、GRANT、REVOKE。
3.2MySQLの一般的な管理操作
- データベース構造を表示する
- ライブラリとテーブルの作成と削除
- 管理テーブルレコード
3.2.1データベース構造を表示する
查看数据库列表信息的命令
show databases;
查看数据库中的数据表信息
use 数据库名;
show tables;
显示数据表的结构(字段)
describe [数据库名.]表名;
或
use 数据库名;
describe 表名;
3.2.2ライブラリとテーブルの作成と削除
- 新しいライブラリを作成する
create database 数据库名;
刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的空文件夹
- 新しいテーブルを作成する
create table 表名(字段 1 名称 类型,字段 1 名称 类型,...,PRIMARY KEY(主键名))
创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息。
- データテーブルを削除する
DROP TABLE 库名.表名