ホームページ  >  記事  >  データベース  >  データベースの追加、削除、変更、クエリの基本的なステートメントは何ですか?

データベースの追加、削除、変更、クエリの基本的なステートメントは何ですか?

青灯夜游
青灯夜游オリジナル
2020-11-04 10:03:3567603ブラウズ

データベースの追加、削除、変更、およびクエリの基本的なステートメント: 「INSERT INTO テーブル名フィールド リスト VALUES (値リスト)」、「DELETE FROM テーブル名 WHERE 句」、「UPDATE テーブル名 SET カラム =値 WHERE 句」、「SELECT * FROM テーブル名」。

データベースの追加、削除、変更、クエリの基本的なステートメントは何ですか?

(推奨チュートリアル: mysql ビデオ チュートリアル )

データベース追加の基本的なステートメント、削除、変更、クエリ

データベースへのデータの追加

MySQL では、INSERT INTO ステートメントを使用して 1 つ以上の行を挿入できます。タプル データをデータベース内の既存のテーブルに追加します。

文法形式:

INSERT INTO 表名 ( 列名1, 列名2,...列名N )
                 VALUES
                 ( 值1, 值2,...值N );

データが文字型の場合は、"value" のように一重引用符または二重引用符を使用する必要があります。

  • テーブル名: 操作対象のテーブルの名前を指定します。

  • 列名: データを挿入する必要がある列名を指定します。テーブル内のすべての列にデータを挿入する場合、すべての列名を省略でき、INSERTVALUES(…) を直接使用できます。

  • VALUE 句: この句には、挿入されるデータのリストが含まれます。データ リスト内のデータの順序は、列の順序に対応している必要があります。

例: tb_courses テーブルに新しいレコードを挿入します。course_id 値は 1、course_name 値は「Network」、course_grade 値は 3、info 値は「Computer」です。通信網"。

挿入操作を実行する前に、tb_courses テーブルを確認してください

mysql> SELECT * FROM tb_courses;
Empty set (0.00 sec)

クエリの結果は、現在のテーブルの内容が空でデータがないことを示しています。次に、データの挿入操作を実行します。 SQL文と実行処理は以下のようになります。

mysql> INSERT INTO tb_courses
    -> (course_id,course_name,course_grade,course_info)
    -> VALUES(1,'Network',3,'Computer Network');
Query OK, 1 rows affected (0.08 sec)

mysql> SELECT * FROM tb_courses;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            3 | Computer Network |
+-----------+-------------+--------------+------------------+
1 row in set (0.00 sec)

レコードが正常に挿入されたことがわかります。データを挿入する場合、tb_courses テーブルのすべてのフィールドが指定されるため、フィールドごとに新しい値が挿入されます。

注:

  • INSERT ステートメントの後の列名の順序は、tb_courses テーブルが定義されているとき、つまりデータを挿入するときの順序ではない場合があります。テーブルで定義された順序で挿入する必要はありません。値の順序が列フィールドの順序と同じであることを確認してください。

  • INSERT を使用してデータを挿入する場合、列名リストの column_list を空にすることができます。このとき、値リストではテーブルの各フィールドの値を指定する必要があります。値の順序はデータ テーブル内と同じである必要があり、フィールドは同じ順序で定義されます。

注: INSERT を使用してデータを挿入する場合、挿入されたデータの列名は無視できますが、値に列名が含まれていない場合は、VALUES の後の値がキーワードは完全であるだけでなく、順序もテーブルが定義されたときの列の順序と同じである必要があります。テーブルの構造を変更し、列の追加、削除、位置の変更を行うと、同時にデータの挿入順序も変更されます。列名を指定した場合、テーブル構造の変更による影響を受けません。

データベースの削除

MySQL では、DELETE ステートメントを使用してテーブル内の 1 つ以上のデータ行を削除できます。

構文形式は次のとおりです:

DELETE FROM 表名 [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

指定されたデータを削除します:

DELETE FROM 表名称 WHERE 列名称 = 值

構文の説明は次のとおりです:

  • # #テーブル名: データを削除するテーブル名を指定します。

  • ORDER BY 句: オプション。削除時に、テーブル内の行が句で指定された順序で削除されることを示します。

  • WHERE 句: オプション。削除操作の削除条件を制限することを示します。この句を省略すると、表内のすべての行が削除されます。

  • LIMIT 句: オプション。制御コマンドがクライアントに返される前に削除する最大行数をサーバーに伝えるために使用されます。

注: WHERE 条件を使用しない場合、すべてのデータが削除されます。

例 1: テーブル内のデータをすべて削除する

tb_courses_new テーブル内のデータをすべて削除する 入力した SQL 文と実行結果は以下のとおりです。

mysql> DELETE FROM tb_courses_new;
Query OK, 3 rows affected (0.12 sec)
mysql> SELECT * FROM tb_courses_new;
Empty set (0.00 sec)

例 2: 条件に基づいてテーブル内のデータを削除する

tb_courses_new テーブルで、course_id 4 のレコードを削除します。入力した SQL 文と実行結果は次のとおりです。

mysql> DELETE FROM tb_courses
    -> WHERE course_id=4;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM tb_courses;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            3 | Computer Network |
|         2 | Database    |            3 | MySQL            |
|         3 | Java        |            4 | Java EE          |
+-----------+-------------+--------------+------------------+
3 rows in set (0.00 sec)

実行結果から、course_id 4 のレコードが削除されたことがわかります。

データベース変更データ

MySQL では、UPDATE ステートメントを使用して 1 つ以上のテーブルのデータを変更および更新できます。

構文形式は次のとおりです:

UPDATE 表名 SET 字段=值 [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

例:

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

構文の説明は次のとおりです:

  • テーブル名: used更新テーブル名を指定します。

  • SET 句: テーブル内で変更する列名とその列値を指定するために使用されます。このうち、指定された各列の値は、式または列に対応するデフォルト値になります。デフォルト値が指定されている場合、列の値はキーワード DEFAULT で表すことができます。

  • WHERE 句: オプション。テーブル内の変更する行を制限するために使用されます。指定しない場合、テーブル内のすべての行が変更されます。

  • ORDER BY 句: オプション。テーブル内の行が変更される順序を制限するために使用されます。

  • LIMIT 句: オプション。変更される行数を制限するために使用されます。

注意:修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。

示例1:修改表中的数据

在 tb_courses_new 表中,更新所有行的 course_grade 字段值为 4,输入的 SQL 语句和执行结果如下所示。

mysql> UPDATE tb_courses_new
    -> SET course_grade=4;
Query OK, 3 rows affected (0.11 sec)
Rows matched: 4  Changed: 3  Warnings: 0

mysql> SELECT * FROM tb_courses_new;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            4 | Computer Network |
|         2 | Database    |            4 | MySQL            |
|         3 | Java        |            4 | Java EE          |
|         4 | System      |            4 | Operating System |
+-----------+-------------+--------------+------------------+
4 rows in set (0.00 sec)

示例1:根据条件修改表中的数据

在 tb_courses 表中,更新 course_id 值为 2 的记录,将 course_grade 字段值改为 3.5,将 course_name 字段值改为“DB”,输入的 SQL 语句和执行结果如下所示。

mysql> UPDATE tb_courses_new
    -> SET course_name='DB',course_grade=3.5
    -> WHERE course_id=2;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM tb_courses_new;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info      |
+-----------+-------------+--------------+------------------+
|         1 | Network     |            4 | Computer Network |
|         2 | DB          |          3.5 | MySQL            |
|         3 | Java        |            4 | Java EE          |
|         4 | System      |            4 | Operating System |
+-----------+-------------+--------------+------------------+
4 rows in set (0.00 sec)

注意:保证 UPDATE 以 WHERE 子句结束,通过 WHERE 子句指定被更新的记录所需要满足的条件,如果忽略 WHERE 子句,MySQL 将更新表中所有的行。

数据库查询数据

在 MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。

SELECT 的语法格式如下:

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

其中,各条子句的含义如下:

  • {*|91f4a644069eb08f05815c14fcb8b2df}包含星号通配符的字段列表,表示所要查询字段的名称。

  • 1db5ee5e96c8774919312b86ea1e4ece,e612022ea012f486e2b8f4eb394bb6e0…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。

  • WHERE a8db8f1ba937e93d98acf65ecbbdce13是可选项,如果选择该项,将限定查询数据必须满足该查询条件。

  • GROUP BY628258a999ccbeb31a9b66d6d3301cc9,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。

  • [ORDER BY628258a999ccbeb31a9b66d6d3301cc9],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。

  • [LIMIT[ab76cfca1a1dc7ff1291dcdf873f72ec,]bc984d207842008469e14f06321b6461],该子句告诉 MySQL 每次显示查询出来的数据条数。

下面先介绍一些简单的 SELECT 语句,关于 WHERE、GROUP BY、ORDER BY 和 LIMIT 等限制条件就不细说了。

1、查询表中所有字段

查询所有字段是指查询表中所有字段的数据。MySQL 提供了以下 2 种方式查询表中的所有字段。

SELECT 可以使用“*”查找表中所有字段的数据,语法格式如下:

SELECT * FROM 表名;

使用“*”查询时,只能按照数据表中字段的顺序进行排列,不能改变字段的排列顺序。

示例:从 tb_students_info 表中查询所有字段的数据,SQL 语句和运行结果如下所示。

mysql> use test_db;
Database changed
mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.26 sec)

结果显示,使用“*”通配符时,将返回所有列,数据列按照创建表时的顺序显示。

注意:一般情况下,除非需要使用表中所有的字段数据,否则最好不要使用通配符“*”。虽然使用通配符可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。使用“*”的优势是,当不知道所需列的名称时,可以通过“*”获取它们。

2、查询表中指定的字段

查询表中的某一个字段的语法格式为:

SELECT < 列名 > FROM < 表名 >;

示例:

查询 tb_students_info 表中 name 列所有学生的姓名,SQL 语句和运行结果如下所示。

mysql> SELECT name FROM tb_students_info;
+--------+
| name   |
+--------+
| Dany   |
| Green  |
| Henry  |
| Jane   |
| Jim    |
| John   |
| Lily   |
| Susan  |
| Thomas |
| Tom    |
+--------+
10 rows in set (0.00 sec)

输出结果显示了 tb_students_info 表中 name 字段下的所有数据。

使用 SELECT 声明可以获取多个字段下的数据,只需要在关键字 SELECT 后面指定要查找的字段名称,不同字段名称之间用逗号“,”分隔开,最后一个字段后面不需要加逗号,语法格式如下:

SELECT <字段名1>,<字段名2>,…,<字段名n> FROM <表名>;

示例:

从 tb_students_info 表中获取 id、name 和 height 三列,SQL 语句和运行结果如下所示。

mysql> SELECT id,name,height
    -> FROM tb_students_info;
+----+--------+--------+
| id | name   | height |
+----+--------+--------+
|  1 | Dany   |    160 |
|  2 | Green  |    158 |
|  3 | Henry  |    185 |
|  4 | Jane   |    162 |
|  5 | Jim    |    175 |
|  6 | John   |    172 |
|  7 | Lily   |    165 |
|  8 | Susan  |    170 |
|  9 | Thomas |    178 |
| 10 | Tom    |    165 |
+----+--------+--------+
10 rows in set (0.00 sec)

输出结果显示了 tb_students_info 表中 id、name 和 height 三个字段下的所有数据。

更多编程相关知识,请访问:编程视频!!

以上がデータベースの追加、削除、変更、クエリの基本的なステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。