MySQL | MySQLデータベースシステム(2)-SQLステートメントの基本操作

MySQL | MySQLデータベースシステム(2)-SQLステートメントの基本操作

はじめ
に前回の記事では、MySQLデータベースシステムの構築とログインの方法、「MySQL | MySQLデータベースシステム(1)」の記事に精通しています。次に、この記事を通じて、の基本的な操作の使用方法を学習します。 MySQLデータベースシステム。これは、今後の作業でも使用されます。

1.現在のサーバーにあるライブラリの
表示showdatabasesステートメント:現在のMySQLデータベースシステムに含まれているライブラリを表示するために使用されます。

MySQLデータベースを初期化した後、デフォルトで4つのライブラリがあります。


1information_schema
2mysql
3performance_schema
4test
5(mysql库中包含了用户认证的相关表)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

1.1現在使用中のライブラリにあるテーブルを確認します
。Showtablesステートメント:現在使用中のライブラリに含まれているテーブルを確認するために使用されます。

操作の前に、useステートメントを使用して、使用するライブラリに切り替える必要があります。

現在使用しているmysqlライブラリに含まれているテーブルを知りたい場合は、mysqlターゲットライブラリに切り替えて、次のステートメントを実行できます。showtables; mysqlライブラリ内のテーブルを表示します。


mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

1.2クエリテーブルの構造
describeステートメント:テーブルの構造とテーブルを構成するフィールドの情報を表示するために使用されます。

パラメータとして「ライブラリ名、テーブル名」を指定する必要があります。テーブル名を指定する場合は、まずuseステートメントを使用して、使用するライブラリに切り替える必要があります。

テーブル構造をクエリする場合は、次のステートメントを使用してmysqlライブラリのユーザーテーブル構造を表示できます。また、次のステートメントを実行することもできます。describemysql.user; view、出力構造は一貫しています。


mysql> describe user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0       |       |
| plugin                 | char(64)                          | YES  |     |         |       |
| authentication_string  | text                              | YES  |     | NULL    |       |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)

1.3現在のデータベースバージョン
を表示するselectversion();ステートメント:現在のmysqlデータベースバージョンを表示するために使用されます。

mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.22-log |
+------------+
1 row in set (0.02 sec)

1.4現在どのライブラリにあるかを確認
するselectdatabase();ステートメント:現在どのライブラリにあるかを確認するために使用されます。


mysql> select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

1.5
MySQLデータベースに列形式表示し、実行されたSQLステートメントの後に\ Gを追加して、クエリ結果が列に出力されることを示します。

デフォルトでは、MySQLデータベースのクエリ結果は水平方向に出力されます。

最初の行は列ヘッダーを表し、2番目の列はレコードセットを表します。


mysql> select * from db\G
*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
*************************** 2. row ***************************
                 Host: %
                   Db: test\_%
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
2 rows in set (0.00 sec)

2.データベースの
作成createdatabaseステートメント:新しいデータベースの作成に使用されます。パラメーターとして新しいデータベース名を指定する必要があります。

この新しいライブラリのライブラリ名としてauthが使用され、データベースにはテーブルが含まれていません。


mysql> create database auth;
Query OK, 1 row affected (0.45 sec)

新しく作成されたライブラリと同じ名前のフォルダが、新しく作成されたライブラリの/ usr / local / mysql / dataディレクトリに自動的に生成されます。


[root@localhost ~]# cd /usr/local/mysql/data
[root@localhost data]# ls
auth     ib_logfile0  localhost.err  mysql             mysql-bin.000002  mysql-bin.000004  mysql.error.log     test
ibdata1  ib_logfile1  localhost.pid  mysql-bin.000001  mysql-bin.000003  mysql-bin.index   performance_schema

3.テーブルの
作成createtableステートメント:現在の認証ライブラリに新しいテーブルを作成し、データテーブル名をパラメーターとして指定して新しいテーブルを作成し、新しいテーブルの作成に使用するフィールドを定義するために使用します。

テーブルを作成する前に、テーブルの構造、フィールド名、タイプ、および作成するその他の情報を明確にする必要があります。

テーブルを作成するための基本的な構文形式

テーブルテーブル名の作成(フィールド1の名前タイプ、フィールド2の名前タイプ、。。。、PRIMARY KEY(主キー名))

usersテーブルを作成し、フィールド定義部分のdefaultステートメントを使用してデフォルトのパスワード文字を設定し、primaryステートメントを使用して主キーのフィールド名を設定します。


mysql> use auth;
Database changed
mysql> create table users (user_name char(16) not null, user_passwd char(48) default '', primary key (user_name));
Query OK, 0 rows affected (0.66 sec)

4.データテーブルとデータベース
ドロップテーブルステートメントを削除します。データベーステーブルを削除するために使用します。パラメータとして「データベース名、テーブル名」を指定する必要があります。

テーブル名パラメーターを指定するには、最初に「use」ステートメントを実行してターゲットライブラリに切り替えます。

次の操作を実行して、認証ライブラリのユーザーテーブルを削除します。


mysql> drop table auth.users;
Query OK, 0 rows affected (0.09 sec)

データベースステートメントの削除:指定されたライブラリを削除するために使用されます。パラメータとしてライブラリ名を指定する必要があります。

次の操作を実行して、認証ライブラリを削除します。

mysql> drop database auth;
Query OK, 0 rows affected (0.02 sec)

5.テーブル
のデータレコード管理します。前の手順で、ライブラリとテーブルの作成を紹介しました。以下では、認証ライブラリに基づいてテーブル内のデータを管理します。(データベース内のレコードを挿入、照会、変更、および削除します);

データを挿入

insert intoステートメント:ターゲットテーブルに新しいデータを挿入するために使用されます。

基本的な文の形式


insert into 表名(字段 1 ,字段 2 ,···) values(字段 1 的值,字段 2 的值,···)

次の操作は、認証ライブラリのユーザーテーブルにレコードを挿入します。user_name(ユーザー名)は 'jacktian'であり、対応するuser_passwd(パスワード)は '666666'です。

値に挿入される値は、以前に指定されたフィールドに対応している必要があることに注意してください。

mysql> use auth;
Database changed
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| servers        |
| users          |
+----------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO users(user_name,user_passwd) VALUES('jacktian', PASSWORD('666666'));                                                                                                        
Query OK, 1 row affected (0.00 sec)

テーブル構造が正しく確立されているかどうかを確認してください。

mysql> describe users;
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name   | char(16) | NO   | PRI | NULL    |       |
| user_passwd | char(48) | YES  |     |         |       |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

新しいデータレコードを挿入します。このレコードにテーブル内のすべてのフィールドの値が完全に含まれている場合、挿入されたステートメントで指定されたフィールドの一部のフィールドを省略できます。


mysql> insert into users values ('jake' , password('888888'));
Query OK, 1 row affected (0.01 sec)

データを見る

selectステートメント:現在指定されているテーブルの条件を満たすデータレコードを表示するために使用されます。

基本的な文の形式


select 字段名 1,字段名 2,··· from 表名 where 条件表达式

すべてのフィールドにクエリを実行する場合は、ワイルドカード「*」を使用してすべてのデータレコードを表示でき、where条件は省略されます。以下の操作を行うと、認証ライブラリのusersテーブルのすべてのデータを表示できるようになります。user_passwd文字列は暗号化されているため、実際のパスワードの内容は表示されません。


mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake      | *DA28842831B3C40F4BC1D3C76CF9AD8CBFDAE1CB |
+-----------+-------------------------------------------+
2 rows in set (0.07 sec)

指定した条件に基づいてデータをクエリする必要がある場合は、where条件を使用してクエリを実行できます。たとえば、authデータベースのusersテーブルのuser_name(ユーザー名)が「jacktian」であり、表示されるデータにユーザー名とパスワードのフィールド情報が含まれているレコードのみをクエリする必要があります。

mysql> select user_name,user_passwd from auth.users where user_name='jacktian';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.01 sec)

データを変更する

updateステートメント:ターゲットテーブルのデータを変更および更新するために使用されます。

基本的な文の形式


update 表名 set 字段名 1=字段值 1[,字段名 2=字段值 2] where 条件表达式

次の操作を使用して、usersテーブルのユーザー名「jake」レコードを変更し、パスワードをnull値に設定し、ユーザー名jakeのパスワードがnull値に変更されたことをレコードが検出するかどうかを確認します。

mysql> update auth.users set user_passwd=password ('') where user_name = 'jake';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake      |                                           |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

通常、MySQLデータベースでは、データベースへのアクセスに使用するさまざまなユーザー情報がmysqlライブラリのuserテーブルに格納され、データを直接変更できます。

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| user                      |
+---------------------------+
23 rows in set (0.06 sec)

このとき、データベースユーザーrootのパスワードを「666666」に設定できます。MySQLデータベースに再度アクセスする場合は、「mysql -u root -p」を使用してMySQLデータベースシステムにアクセスする必要があり、このパスワードは次のようにする必要があります。認証に使用されます。それ以外の場合は、MySQLデータベースシステムにログインできません。

データベースのユーザーパスワードは、データのセキュリティを確保するために、より複雑に設定できることに注意してください。

mysql> update mysql.user set password=password ('666666') where user= 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
mysql> FLUSH PRIVILEGES; // 刷新用户授权信息

Linuxシステムのコマンドラインターミナルを使用している場合は、mysqladminツールを使用してパスワードを設定することもできます。


[root@localhost data]# mysqladmin -u root -p password '666666'
Enter password: 

データを削除する

deleteステートメント:テーブル内の指定されたデータを削除するために使用されます。

基本的な文の形式

delete from 表名 where 条件表达式

authライブラリのusersテーブルにあるuser_nameユーザー名 'jake'のデータを削除する場合は、次のステートメントを実行して操作を実行し、データコンテンツがのデータを削除したことが判明したかどうかを確認できます。ユーザージェイク。


mysql> delete from auth.users where user_name = 'jake';
Query OK, 1 row affected (0.03 sec)

mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jacktian  | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)

MySQLデータベースシステムでは、このマシンからデータベースにアクセスする空のユーザーがデフォルトで追加されます。次のユーザーフィールドとパスワードフィールドはすべて空の値です。データベースのセキュリティを考慮するために、これらの空のユーザーを直接削除できます。whereの後の条件式は、ユーザーフィールドが空のユーザーをフィルタリングし、空のユーザーのデータが削除されているかどうかを確認します。

mysql> select user,host,password from mysql.user where user = '';
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
|      | localhost |          |
+------+-----------+----------+
1 row in set (0.00 sec)

mysql> delete from mysql.user where user = '';
Query OK, 1 row affected (0.04 sec)

mysql> select user,host,password from mysql.user where user = '';
Empty set (0.00 sec)

おすすめ

転載: blog.51cto.com/15067236/2606194