初心者のためのデータベースの基本概念
MySQLデータベースの使い方(1) - データベースの追加、削除、変更、クエリ
MySQLデータベースの使い方(2) - テーブルの追加、削除、変更、クエリ
序文
昨日の内容を踏まえた SQL の使い方の続きで、主な内容はテーブルへのコンテンツの追加、削除、変更、表示などの方法と、よく使用されるいくつかの型です。
ステートメント、文章、キーワードは大文字でも小文字でも構いません。標準的な書き方であれば大文字でも問題ありませんが、テーブル名、データベース名、カラム情報は小文字のみです。 。
1. データの種類
データ型は、列にどのようなデータを格納できるか、およびそのデータが実際にどのように格納されるかを定義する基本的なルールです。
データ型は次の目的で使用されます:
データ型を使用すると、列に保存できるデータを制限できます。
データ型を使用すると、データを内部的により効率的に保存できます。
データ型を使用すると、並べ替え順序を変換できます。
したがって、データ型を使用する場合は、システムのパフォーマンスの無駄やコンテンツを書き込めなくなる可能性を避けるために、正しく適切なデータ型の選択に注意を払う必要があることがよくあります。
データ型は、数値型、文字列型、日付型、バイナリ データ型の 4 つのカテゴリに分類されます。
1.1 数値型
数値型
上記の数字をしっかり覚えている人はいないと思いますが、型は比較的重要な項目ではありますが、実際には、どのような状況でどのような数値が使用されるかを知っていれば十分です。振り返ってください。
数値型の列では、コンテンツを追加するときに一重引用符を追加する必要はありません。これは理解できます。
1.2 文字列型
文字列型:(すぐ上)
文字列型には 2 つの重要な点があります。1 つ目は、挿入されたコンテンツを一重引用符で囲む必要があることです。そうしないとデータベースがエラーを報告します。2 つ目は、フィールドの型を設定するときに、コンテンツの長さ情報。それ以外の場合は、エラーの場合にも表示されます。
例:
1.3 日付と時刻の種類
日付と時刻のタイプ:
このタイプは、日付と時刻の値を保存するために特に使用されます。
1.4 バイナリ型
バイナリ データ タイプでは、画像、マルチメディア、ワード プロセッシング ドキュメント、その他の情報など、あらゆるデータ (バイナリ情報を含む) を保存できます。
データベースへのデータの追加の使用法について続けて説明しましょう。
2. コンテンツを追加する
2.1 行の内容を追加する
行の内容をテーブルに追加するには、insert
先頭にステートメントを使用する必要があります。
insert into 表名 values(内容1,内容2);
例:
mysql> create table students(id int,name varchar(30));
Query OK, 0 rows affected (0.19 sec)
mysql> insert into students values(1,'zhangsan');
Query OK, 1 row affected (0.06 sec)
mysql> select * from students;
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
+------+----------+
1 row in set (0.00 sec)
データベース レコードがテーブルに正常に挿入されました。コンテンツを追加し続ける必要がある場合でも、このステートメントを使用できます。
mysql> insert into students values(2,'lisi');
Query OK, 1 row affected (0.00 sec)
mysql> select * from students;
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
| 2 | lisi |
+------+----------+
2 rows in set (0.00 sec)
複数の行を一度に挿入する方法;
mysql> insert into students values(3,'wangwu'),(4,'chenliu'),(5,'wangqi');
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into students values(6,'tangba'),
-> (7,'lijiu');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
一度に並べて書くことも、次の行に切り替えて書くこともできます。一般に、コンテンツが多い場合は、それぞれの後にコンマを追加する限り、新しい行に書くことができます。ライン。
2.2 フィールドのデフォルト値
列のみにコンテンツを追加する
mysql> insert into students(name) values('葫芦娃1号');
Query OK, 1 row affected (0.01 sec)
mysql> select * from students;
+------+---------------+
| id | name |
+------+---------------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
| 4 | chenliu |
| 5 | wangqi |
| 6 | tangba |
| 7 | lijiu |
| NULL | 葫芦娃1号 |
+------+---------------+
8 rows in set (0.00 sec)
NULL という単語が表示されるのはなぜですか? コンテンツはname
以前にフィールドに追加されただけなので、コンテンツは空ではありません。実際、これは Default のデフォルト値が NULL であるためです。
このコンテンツの値を変更することは可能ですか? 結果は間違いなく可能です。id
次にデフォルト値を変更します。id
この列が追加されていない場合に表示されます20
。
mysql> alter table students modify id int(11) default '20';
Query OK, 0 rows affected, 1 warning (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 1
mysql> desc students;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | 20 | |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
id
OK、フィールドのデフォルト値が設定されました。続行しましょう。
mysql> insert into students(name) values('葫芦娃二号');
Query OK, 1 row affected (0.02 sec)
mysql> select * from students;
+------+-----------------+
| id | name |
+------+-----------------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
| 4 | chenliu |
| 5 | wangqi |
| 6 | tangba |
| 7 | lijiu |
| NULL | 葫芦娃1号 |
| 20 | 葫芦娃二号 |
+------+-----------------+
9 rows in set (0.00 sec)
未記入の場合id
、デフォルト値は20となっています。
2.3 NULL 空の値
フィールドを必須にする別の方法があります。つまり、yes null
(null 値) を表示することはできませんが、使用することはできます'not null'
。今回は名前のフィールドを変更して必須フィールドにしましょう。
mysql> alter table students modify name varchar(30) not null;
Query OK, 0 rows affected (0.35 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc students;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | 20 | |
| name | varchar(30) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
変更後null
、フィールド情報の行を再度確認しname
、null
「はい」を「いいえ」に変更して、テストを続行します。
mysql> insert into students(name) values('');
Query OK, 1 row affected (0.00 sec)
mysql> insert into students(name) values('葫芦娃三号');
Query OK, 1 row affected (0.00 sec)
mysql> insert into students(id) values(10);
ERROR 1364 (HY000): Field 'name' doesn't have a default value
mysql> select * from students;
+------+-----------------+
| id | name |
+------+-----------------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
| 4 | chenliu |
| 5 | wangqi |
| 6 | tangba |
| 7 | lijiu |
| NULL | 葫芦娃1号 |
| 20 | 葫芦娃二号 |
| 20 | |
| 20 | 葫芦娃三号 |
+------+-----------------+
11 rows in set (0.00 sec)
これを見ると非常に奇妙です。変更後にコンテンツが空になるわけではありませんがnull(空值)
、1 行に空のコンテンツがあります。
データベース内の空の値は、実際にはnull
フォーム内で空のコンテンツを指します。実際にはまだコンテンツがありますが、表示できません。
2.4 フィールドの制約
実際、主キーを設定してその値を一意にすることができます。King of Glory やその他のゲームをプレイしたことがあると、名前を書くときに他の人の名前と同じになる場合があることを誰もが知っています。名前はすでに存在するため、置き換える必要があります。名前、実際、これは結果を一意にするために主キーを設定するのと同じなので、これを使用する方法を見てみましょう。
新しいテーブルを再作成します。
mysql> create table store(id int not null auto_increment primary key,shop varchar(30) not null);
Query OK, 0 rows affected (0.07 sec)
mysql> desc store;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| shop | varchar(30) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
そこにコンテンツを書き込みます。
mysql> desc store;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| shop | varchar(30) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> insert into store(shop) values('apple');
Query OK, 1 row affected (0.02 sec)
mysql> select * from store;
+----+-------+
| id | shop |
+----+-------+
| 1 | apple |
+----+-------+
1 row in set (0.00 sec)
デフォルトではID値が1として生成されていることがわかりますので、このように書き続けます
mysql> insert into store(shop) values('pear');
Query OK, 1 row affected (0.01 sec)
mysql> insert into store(shop) values('banana');
Query OK, 1 row affected (0.02 sec)
mysql> select * from store;
+----+--------+
| id | shop |
+----+--------+
| 1 | apple |
| 2 | pear |
| 3 | banana |
+----+--------+
3 rows in set (0.00 sec)
結果が常に現在のn+1
方法であることを確認すると、それは常に前の数値に 1 を加えたものになります。4 番目のコンテンツで彼のために 1 を定義し、id
それがその方法に従っているか、私たちの方法に従っているかを確認します。
mysql> insert into store(id,shop) values(10,'orange');
Query OK, 1 row affected (0.00 sec)
mysql> select * from store;
+----+--------+
| id | shop |
+----+--------+
| 1 | apple |
| 2 | pear |
| 3 | banana |
| 10 | orange |
+----+--------+
4 rows in set (0.00 sec)
システム定義よりも手動定義の優先度が高いことがわかります。
この時点でコンテンツを書き続ける場合、id 3 に基づいて書くべきですか、それとも 10 から始めて n+1 まで書き続けるべきですか?
mysql> insert into store(shop) values('Black brin');
Query OK, 1 row affected (0.02 sec)
mysql> select * from store;
+----+------------+
| id | shop |
+----+------------+
| 1 | apple |
| 2 | pear |
| 3 | banana |
| 10 | orange |
| 11 | Black brin |
+----+------------+
5 rows in set (0.00 sec)
結果は明らかで、10を基準に+1し続けます。
テーブル内のレコードが空になった場合、auto_increment
値は下がり続けますかn+1
?
クリアする 2 つの異なる方法を見てみましょう
2.4.1 削除の使用方法
まずdelete
way
ステートメントを見てください
delete from 表名;
例:
mysql> delete from store;
Query OK, 5 rows affected (0.00 sec)
mysql> select * from store;
Empty set (0.00 sec)
mysql> insert into store(shop) values('Codlin');
Query OK, 1 row affected (0.02 sec)
mysql> select * from store;
+----+--------+
| id | shop |
+----+--------+
| 12 | Codlin |
+----+--------+
1 row in set (0.00 sec)
delete
auto_increment
値をクリアする方法はなく、この値は n+1 に重ねられ続けます。
2.4.2 truncate の使用方法
文
truncate table 表名;
例:
mysql> truncate table store;
Query OK, 0 rows affected (0.11 sec)
mysql> desc store;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| shop | varchar(30) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> select * from store;
Empty set (0.01 sec)
mysql> insert into store(shop) values('Cumquat');
Query OK, 1 row affected (0.00 sec)
mysql> select * from store;
+----+---------+
| id | shop |
+----+---------+
| 1 | Cumquat |
+----+---------+
1 row in set (0.00 sec)
情報の行を書き換えると、 id の値の結果は になります1
。値はtruncate
ステートメントを使用してリセットできますauto_increment
。
注: truncate を実行すると、テーブル内のすべてのデータが消去されます。auto_increment 値をゼロにクリアするだけの場合は、このコマンドを使用しないでください。
最初から最後まで、コンテンツを記述するための構文は 1 つだけで、次のコンテンツを表示するための文や単語がたくさんあります。辛抱強く見てください。ディレクトリをさらに分割しようとします。そのため、文章を振り返るときにクエリを実行するのがより便利になります。
3. 行の内容を取得します。
3.1 テーブル内のコンテンツの取得
検索テーブルの内容は使用頻度が高く、特に後の段階では新たに作成するよりもよく使われると思いますので、詳しくお話して、簡単なものから難しいものまで書いていきます。
列の内容を取得します。
mysql> select id from store;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
コンテンツの複数の列を取得します。
mysql> select id,shop from store;
+----+---------+
| id | shop |
+----+---------+
| 1 | Cumquat |
+----+---------+
1 row in set (0.00 sec)
すべての列の内容を取得します
mysql> select * from store;
+----+---------+
| id | shop |
+----+---------+
| 1 | Cumquat |
+----+---------+
1 row in set (0.00 sec)
すべてのコンテンツを表示するにはワイルドカード * を使用します。Linux の一部のコンテンツは mysql にも適用できます。
3.2 異なる行の取得 (重複排除)
上記のselect
ステートメントを使用すると、デフォルトではすべてのコンテンツが表示されます。コンテンツに重複がある場合、または重複行が複数ある場合は、DISTINCT
キーワードを使用して重複を除外できます。
声明
select distinct 字段 from 表名;
例:
mysql> select * from store;
+------+--------+
| id | name |
+------+--------+
| 2 | apache |
| 3 | pear |
| 4 | orange |
| 3 | apple |
| 5 | banana |
| 4 | orange |
+------+--------+
6 rows in set (0.00 sec)
mysql> select distinct id from store ;
+------+
| id |
+------+
| 2 |
| 3 |
| 4 |
| 5 |
+------+
4 rows in set (0.00 sec)
上記内容が重複して1行しか表示されないのですが、フィールド情報が2列ある場合、どのような場合に重複が表示されないのでしょうか。
mysql> select distinct * from store ;
+------+--------+
| id | name |
+------+--------+
| 2 | apache |
| 3 | pear |
| 4 | orange |
| 3 | apple |
| 5 | banana |
+------+--------+
5 rows in set (0.03 sec)
表示されていない行が 1 行あります。上記の情報と比較すると、ID 4 のコンテンツです。重複排除するには、両方の行に同じ重複コンテンツが存在する必要がありますdistinct
。
3.3 表示結果の制限
select
このステートメントは、一致するすべての行を返します。これは、指定されたテーブル内のすべての行である可能性があります。最初の行または最初の数行を返すには、LIMIT 句を使用できます。
select 列 from 表名 LIMIT 显示多少行;
例:
mysql> SELECT * FROM books LIMIT 3;
+-----+-----------------------------+---------+-----------------------------+-------+------------+-----------+------------+
| bId | bName | bTypeId | publishing | price | pubDate | author | ISBN |
+-----+-----------------------------+---------+-----------------------------+-------+------------+-----------+------------+
| 1 | 网站制作直通车 | 2 | 电脑爱好者杂志社 | 34 | 2004-10-01 | 苗壮 | 7505380796 |
| 2 | 黑客与网络安全 | 6 | 航空工业出版社 | 41 | 2002-07-01 | 白立超 | 7121010925 |
| 3 | 网络程序与设计-asp | 2 | 北方交通大学出版社 | 43 | 2005-02-01 | 王玥 | 75053815x |
+-----+-----------------------------+---------+-----------------------------+-------+------------+-----------+------------+
3 rows in set (0.00 sec)
このステートメントはselect
ステートメントを使用してすべての列を取得し、LIMIT 3
MySQL に 3 行以下のコンテンツを返すように指示します。
3 行目から 5 行分の内容を表示したい場合は、LIMIT
単語を使用することも可能です。
mysql> SELECT bid,bName,price FROM books LIMIT 2,5;
+-----+---------------------------------+-------+
| bid | bName | price |
+-----+---------------------------------+-------+
| 3 | 网络程序与设计-asp | 43 |
| 4 | pagemaker 7.0短期培训教程 | 43 |
| 5 | 黑客攻击防范秘笈 | 44 |
| 6 | Dreamweaver 4入门与提高 | 44 |
| 7 | 网页样式设计-CSS | 45 |
+-----+---------------------------------+-------+
5 rows in set (0.00 sec)
2, 5 と入力LIMIT
すると、3 行目から 5 行目の内容が表示されますが、実際に 1 行目に書き込む数値は 0、2 行目に書き込む数値は 1 となるためです。
3.4 完全修飾テーブル名を使用する
完全修飾テーブル名は、テーブル名と列を使用してコンテンツを取得することです。これは完全パスの取得と同等です。ステートメントを一緒に見てみましょう。
SELECT 表名.列名 FROM 数据库名.表名;
mysql> SELECT books.bname FROM book.books LIMIT 3;
+-----------------------------+
| bname |
+-----------------------------+
| 网站制作直通车 |
| 黑客与网络安全 |
| 网络程序与设计-asp |
+-----------------------------+
3 rows in set (0.00 sec)
状況によっては、後で完全修飾名の使用が必要になる場合があるため、その使用法について事前に学習しておくことができます。
3.3 データの並べ替え
設定した方法に従ってデータ テーブルの内容を並べ替えると、order by
この文を使用して、並べ替える必要がある内容に従って対応するデータを取得できます。
SELECT 列名 FROM 表名 ORDER BY 列名;
例:
mysql> SELECT bid,bname FROM books ORDER BY bid LIMIT 3;
+-----+-----------------------------+
| bid | bname |
+-----+-----------------------------+
| 1 | 网站制作直通车 |
| 2 | 黑客与网络安全 |
| 3 | 网络程序与设计-asp |
+-----+-----------------------------+
3 rows in set (0.01 sec)
コンテンツはデフォルトで昇順、つまり小さいものから大きいものへと並べ替えられます。もちろん、追加することもできます。ASC
これは昇順を意味します。
mysql> SELECT bid,bname FROM books ORDER BY bid asc LIMIT 3;
+-----+-----------------------------+
| bid | bname |
+-----+-----------------------------+
| 1 | 网站制作直通车 |
| 2 | 黑客与网络安全 |
| 3 | 网络程序与设计-asp |
+-----+-----------------------------+
3 rows in set (0.02 sec)
降順で並べ替えるには、DESC
このキーワードを使用する必要があります
mysql> SELECT bid,bname FROM books ORDER BY bid DESC LIMIT 3;
+-----+----------------------------------------------------+
| bid | bname |
+-----+----------------------------------------------------+
| 44 | XML 完全探索 |
| 43 | ASP 3初级教程 |
| 42 | SQL Server 7.0数据库系统管理与应用开发 |
+-----+----------------------------------------------------+
3 rows in set (0.00 sec)
複数の列を降順で並べ替える場合は、DESC
各列にキーワードを指定する必要があります。
mysql> SELECT bid,bname,btypeid FROM books ORDER BY bid DESC,btypeid DESC LIMIT 3;
+-----+----------------------------------------------------+---------+
| bid | bname | btypeid |
+-----+----------------------------------------------------+---------+
| 44 | XML 完全探索 | 2 |
| 43 | ASP 3初级教程 | 2 |
| 42 | SQL Server 7.0数据库系统管理与应用开发 | 1 |
+-----+----------------------------------------------------+---------+
3 rows in set (0.00 sec)
3.4 データのフィルタリング
3.4.1 where 句の使用
select
データのフィルタリングは、このステートメントに加えてWHERE
検索条件を指定する単語を使用するのと同じです。
SELECT 列名 FROM 表名 WHERE 列名 操作符 值;
このように見ると、この記述はあまり明確ではないので、例を使用して説明します
。
mysql> SELECT bid,bname FROM books WHERE BID=20;
+-----+-------------------------+
| bid | bname |
+-----+-------------------------+
| 20 | Auto CAD 3D模型大师 |
+-----+-------------------------+
1 row in set (0.00 sec)
BID
20 の内容が表示されます。グラフに示すように、演算子
に加えて、データのフィルタリングに実際には多くの演算子が使用されます。=
オペレーター | 説明する |
---|---|
= | 同等 |
<> | 等しくない |
!= | 等しくない |
< | 未満 |
<= | 以下 |
> | 以上 |
>= | 以上 |
間 | 指定された 2 つの値の間 |
演算子について、where
単語の使用を理解しやすくするために、さらにいくつかの例を挙げてみましょう。
mysql> SELECT bid,bname,btypeid FROM books WHERE btypeid > 3;
+-----+----------------------------------------+---------+
| bid | bname | btypeid |
+-----+----------------------------------------+---------+
| 2 | 黑客与网络安全 | 6 |
| 4 | pagemaker 7.0短期培训教程 | 9 |
| 5 | 黑客攻击防范秘笈 | 6 |
| 8 | Internet操作技术 | 7 |
| 11 | Auto CAD职业技能培训教程 | 10 |
| 13 | 自己动手建立企业局域网 | 8 |
| 16 | Illustrator 10完全手册 | 9 |
| 17 | FreeHand 10基础教程 | 9 |
| 20 | Auto CAD 3D模型大师 | 10 |
| 21 | Linux傻瓜书 | 4 |
| 24 | Auto CAD 2000 应用及实例基集锦 | 10 |
| 27 | Delphi 5程序设计与控件参考 | 5 |
| 28 | 活学活用Delphi5 | 5 |
| 33 | Auto CAD R14 中文版实用教程 | 10 |
| 39 | lllustrator 9宝典 | 9 |
+-----+----------------------------------------+---------+
15 rows in set (0.00 sec)
mysql> SELECT bid,bname,btypeid FROM books WHERE btypeid < 2;
+-----+----------------------------------------------------+---------+
| bid | bname | btypeid |
+-----+----------------------------------------------------+---------+
| 25 | Access 2000应用及实例基集锦 | 1 |
| 41 | SQL Server 2000 从入门到精通 | 1 |
| 42 | SQL Server 7.0数据库系统管理与应用开发 | 1 |
+-----+----------------------------------------------------+---------+
3 rows in set (0.00 sec)
Btypeid
2 を除くコンテンツを表示
mysql> SELECT bid,bname,btypeid FROM books WHERE btypeid <> 2 LIMIT 3;
+-----+---------------------------------+---------+
| bid | bname | btypeid |
+-----+---------------------------------+---------+
| 2 | 黑客与网络安全 | 6 |
| 4 | pagemaker 7.0短期培训教程 | 9 |
| 5 | 黑客攻击防范秘笈 | 6 |
+-----+---------------------------------+---------+
3 rows in set (0.00 sec)
1 から 5 までのコンテンツを表示するなど、コンテンツの範囲を表示するために使用することもできますBid
。
mysql> SELECT bid,bname,btypeid FROM books WHERE bid BETWEEN 1 AND 5;
+-----+---------------------------------+---------+
| bid | bname | btypeid |
+-----+---------------------------------+---------+
| 1 | 网站制作直通车 | 2 |
| 2 | 黑客与网络安全 | 6 |
| 3 | 网络程序与设计-asp | 2 |
| 4 | pagemaker 7.0短期培训教程 | 9 |
| 5 | 黑客攻击防范秘笈 | 6 |
+-----+---------------------------------+---------+
5 rows in set (0.05 sec)
3.4.2 NOT 演算子
この範囲以外の内容を表示するには、BETWEEN
先頭に NOT を追加します。これは、表示される値を反転することと同じです。
mysql> SELECT bid,bname,btypeid FROM books WHERE bid NOT BETWEEN 1 AND 5 LIMIT 3;
+-----+------------------------------+---------+
| bid | bname | btypeid |
+-----+------------------------------+---------+
| 6 | Dreamweaver 4入门与提高 | 2 |
| 7 | 网页样式设计-CSS | 2 |
| 8 | Internet操作技术 | 7 |
+-----+------------------------------+---------+
3 rows in set (0.00 sec)
3.4.3 AND 演算子
同じ使用法、実際には、使用するだけでAND
この効果を実現できます。このステートメントを一緒に見てみましょう。
mysql> SELECT bid,bname,btypeid FROM books WHERE bid >= 1 AND bid <= 5;
+-----+---------------------------------+---------+
| bid | bname | btypeid |
+-----+---------------------------------+---------+
| 1 | 网站制作直通车 | 2 |
| 2 | 黑客与网络安全 | 6 |
| 3 | 网络程序与设计-asp | 2 |
| 4 | pagemaker 7.0短期培训教程 | 9 |
| 5 | 黑客攻击防范秘笈 | 6 |
+-----+---------------------------------+---------+
5 rows in set (0.00 sec)
3.4.4 OR 演算子
or
複数の固定値の内容を表示するには、このキーワードを使用できます; 内容は10、20、30 として
表示されますbid
mysql> SELECT bid,bname,btypeid FROM books WHERE bid = 10 or bid = 20 or bid =30;
+-----+-------------------------------+---------+
| bid | bname | btypeid |
+-----+-------------------------------+---------+
| 10 | 3D MAX 3.0 创作效果百例 | 3 |
| 20 | Auto CAD 3D模型大师 | 10 |
| 30 | 3DS MAX 4横空出世 | 3 |
+-----+-------------------------------+---------+
3 rows in set (0.00 sec)
3.4.5 IN 演算子
上にor
示したように、in
キー センテンスを使用できます。これは使いやすく、等しい値を繰り返し記述する必要がありません。
mysql> SELECT bid,bname,btypeid FROM books WHERE bid IN (10,20,30);
+-----+-------------------------------+---------+
| bid | bname | btypeid |
+-----+-------------------------------+---------+
| 10 | 3D MAX 3.0 创作效果百例 | 3 |
| 20 | Auto CAD 3D模型大师 | 10 |
| 30 | 3DS MAX 4横空出世 | 3 |
+-----+-------------------------------+---------+
3 rows in set (0.00 sec)
3.5 LIKE 演算子の使用
上記で紹介したすべての演算子は、既知の項目についてフィルタリングされます。ただし、値の書き方がわからない場合、または大まかな接頭辞を覚えているだけの場合は、LIKE 演算子を使用して値を取得できます。
3.5.1 % ワイルドカード
このワイルドカードは LIKE と一緒に使用され(%)
、コンテンツを検索するときに、% を使用して任意の文字の出現数を識別できます。
たとえば、ある本に関する本を探したいがLinux
、その完全な名前がわからない場合、それを使用してlike
関連コンテンツを曖昧に検索できます。
mysql> SELECT bid,bname,btypeid FROM books WHERE bname LIKE '%linux%';
+-----+----------------+---------+
| bid | bname | btypeid |
+-----+----------------+---------+
| 21 | Linux傻瓜书 | 4 |
+-----+----------------+---------+
1 row in set (0.00 sec)
3.5.2 _ ワイルドカード
もう 1 つのワイルドカードはアンダースコアです_
。アンダースコアは と同じ目的を果たします%
が、アンダースコアは複数の文字ではなく 1 つの文字にのみ一致します。
mysql> SELECT bid,bname,btypeid FROM books WHERE bname LIKE '____防范秘笈';
+-----+--------------------------+---------+
| bid | bname | btypeid |
+-----+--------------------------+---------+
| 5 | 黑客攻击防范秘笈 | 6 |
+-----+--------------------------+---------+
1 row in set (0.00 sec)
上記では 4 つのアンダースコアが使用されており、_
それ以上でも以下でも 1 文字のみと一致します。
3.6 サブクエリ
もう1つのクエリ方法はサブクエリで、別のテーブルの内容をクエリすることで取得し、先ほどクエリした値を表示することができますので、併せて使用方法を見てみましょう。
mysql> select bid,bname from books where bid=(select btypeid from category where btypename='网络技术');
+-----+--------------------------+
| bid | bname |
+-----+--------------------------+
| 7 | 网页样式设计-CSS |
+-----+--------------------------+
1 row in set (0.00 sec)
4. コンテンツの更新
4.1 UPDATE ステートメントの使用方法
テーブル内のレコード情報が間違って書き込まれた場合、delete ステートメントを実行する必要はなく、直接更新して他の内容に置き換えることができます。一緒に使い方を見てみましょう。
UPDATE 表名 SET 列='要修改的内容' where 第几行;
例:
ID为4
コンテンツを次のように変更しますBryony
mysql> UPDATE store SET name ='Bryony' where id=4;
Query OK, 0 rows affected (0.01 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> desc store;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> select * from store;
+------+--------+
| id | name |
+------+--------+
| 2 | apache |
| 3 | pear |
| 4 | Bryony |
| 3 | apple |
| 5 | banana |
| 4 | Bryony |
+------+--------+
6 rows in set (0.00 sec)
5. 行の内容を削除します
5.1 DELETE ステートメントの使用方法
削除された行の内容は usedelete
ステートメントです。その使用法を見てみましょう。
DELETE FROM 表名 WHERE 删除的行;
例: Apache で行を
削除します。name
mysql> DELETE FROM store WHERE name='apache';
Query OK, 1 row affected (0.02 sec)
mysql> select * from store;
+------+--------+
| id | name |
+------+--------+
| 3 | pear |
| 4 | Bryony |
| 3 | apple |
| 5 | banana |
| 4 | Bryony |
+------+--------+
5 rows in set (0.00 sec)
また、特定の範囲の値を削除したり、4 ~ 5 の値を削除したりするために使用することもできます。
mysql> DELETE FROM store WHERE id BETWEEN 4 and 5;
Query OK, 3 rows affected (0.03 sec)
mysql> select * from store;
+------+-------+
| id | name |
+------+-------+
| 3 | pear |
| 3 | apple |
+------+-------+
2 rows in set (0.00 sec)
要約する
データベース テーブルの行にはまだ多くのコンテンツがありますが、一度に終了してはなりません。データベースは正規表現を使用して、データベース内のフィールド、カーソル、トリガーなどを直接計算することもできます。はい、サポートできます。親指を立てて!