何千回も読んだこともありますが、自分のノートに記録されていない限り、いつも少し慌ててしまいます!
一般的なデータベース操作
データベースを作成する
mysql> create database test_db;
Query OK, 1 row affected (0.00 sec)
データベースを削除する
mysql> drop database test_db;
Query OK, 0 rows affected (0.03 sec)
データベースを選択
mysql> use test_db;
Database changed
データシートの一般的な操作
データテーブルを作成する
mysql> CREATE TABLE IF NOT EXISTS `runoob_tbl`(
-> `runoob_id` INT UNSIGNED AUTO_INCREMENT,
-> `runoob_title` VARCHAR(100) NOT NULL,
-> `runoob_author` VARCHAR(40) NOT NULL,
-> `submission_date` DATE,
-> PRIMARY KEY ( `runoob_id` )
-> );
Query OK, 0 rows affected (0.01 sec)
# 如果数据库有中文的话最好还是设置字符集编码。
mysql> CREATE TABLE IF NOT EXISTS `runoob_tbl`(
-> `runoob_id` INT UNSIGNED AUTO_INCREMENT,
-> `runoob_title` VARCHAR(100) NOT NULL,
-> `runoob_author` VARCHAR(40) NOT NULL,
-> `submission_date` DATE,
-> PRIMARY KEY ( `runoob_id` )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)
データテーブルを削除する
mysql> drop table runoob_tbl;
Query OK, 0 rows affected (0.02 sec)
データを挿入
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 PHP", "菜鸟教程", NOW());
(runoob_title, runoob_author, submission_date)
VALUES
("JAVA 教程", "RUNOOB.COM", '2016-05-06');Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 MySQL", "菜鸟教程", NOW());
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
Query OK, 1 row affected (0.00 sec)
mysql> select * from runoob_tbl;
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
| 1 | 学习 PHP | 菜鸟教程 | 2020-12-09 |
| 2 | 学习 MySQL | 菜鸟教程 | 2020-12-09 |
| 3 | JAVA 教程 | RUNOOB.COM | 2016-05-06 |
+-----------+--------------+---------------+-----------------+
3 rows in set (0.00 sec)
クエリデータ
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
mysql> SELECT runoob_id, runoob_title, runoob_author, submission_date FROM runoob_tbl;
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
| 1 | 学习 PHP | 菜鸟教程 | 2020-12-09 |
| 2 | 学习 MySQL | 菜鸟教程 | 2020-12-09 |
| 3 | JAVA 教程 | RUNOOB.COM | 2016-05-06 |
+-----------+--------------+---------------+-----------------+
3 rows in set (0.00 sec)
WHEREステートメント
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
mysql> SELECT * from runoob_tbl WHERE runoob_author='RUNOOB.COM';
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
| 3 | JAVA 教程 | RUNOOB.COM | 2016-05-06 |
+-----------+--------------+---------------+-----------------+
1 row in set (0.00 sec)
UPDATEステートメント
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
mysql> UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
DELETEステートメント
DELETE FROM table_name [WHERE Clause]
mysql> DELETE FROM runoob_tbl WHERE runoob_id=3;
Query OK, 1 row affected (0.01 sec)
LIKEステートメント
SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
- %:0文字以上を表します。任意のタイプと長さの文字に一致する可能性があります。中国語の場合は、2パーセント記号(%%)を使用して示してください。
- _:任意の1文字を表します。単一の任意の文字に一致します。これは、式の文字長を制限するためによく使用されます。
- []:括弧内にリストされている文字の1つを表します(正規表現と同様)。文字、文字列、または範囲を指定し、一致するオブジェクトがそれらのいずれかである必要があります。
- [^]:角かっこに含まれていない単一の文字を示します。その値は[]と同じですが、一致するオブジェクトが指定された文字以外の任意の文字である必要があります。
mysql> SELECT * from runoob_tbl WHERE runoob_title LIKE '%SQL';
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
| 2 | 学习 MySQL | 菜鸟教程 | 2020-12-09 |
+-----------+--------------+---------------+-----------------+
1 row in set (0.00 sec)
データテーブルフィールドの一般的な操作
データテーブルのテーブル名を変更します
alter table old_table rename to new_table
mysql> show tables;
+-------------------+
| Tables_in_looking |
+-------------------+
| comm_config |
| runoob_tbl |
| tb_person |
| tb_person_copy |
| test1 |
+-------------------+
5 rows in set (0.00 sec)
mysql> alter table runoob_tbl rename to runoob_tbl_new;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+-------------------+
| Tables_in_looking |
+-------------------+
| comm_config |
| runoob_tbl_new |
| tb_person |
| tb_person_copy |
| test1 |
+-------------------+
5 rows in set (0.00 sec)
元のテーブルと同じ構造のテーブルを作成します
create table new_table like old_table
mysql> show tables;
+-------------------+
| Tables_in_looking |
+-------------------+
| comm_config |
| runoob_tbl_new |
| tb_person |
| tb_person_copy |
| test1 |
+-------------------+
5 rows in set (0.00 sec)
mysql> create table runoob_tbl_new2 like runoob_tbl_new;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+-------------------+
| Tables_in_looking |
+-------------------+
| comm_config |
| runoob_tbl_new |
| runoob_tbl_new2 |
| tb_person |
| tb_person_copy |
| test1 |
+-------------------+
6 rows in set (0.00 sec)
テーブルの指定された位置にフィールドを追加します
alter table test_tb add i int after runoob_id
afterなどのキーワードがない場合は、デフォルトで最後に追加されます。
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
mysql> alter table test_tb add i int after runoob_id;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| i | int(11) | YES | | NULL | |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> alter table test_tb add i int;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
テーブルフィールドを削除します
alter table test_tb drop i
mysql> show columns from test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| i | int(11) | YES | | NULL | |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> alter table test_tb drop i;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
フィールドタイプと名前を変更する
alter table test_tb change runoob_id id int
mysql> desc test_tb;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> alter table test_tb change runoob_id id int;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_tb;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| runoob_title | varchar(100) | NO | | NULL | |
| runoob_author | varchar(40) | NO | | NULL | |
| submission_date | date | YES | | NULL | |
+-----------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
フィールドのデフォルト値を変更する
ALTER TABLE tableName MODIFY j BIGINT NOT NULL DEFAULT 100
ALTER TABLE tableName ALTER i SET DEFAULT 1000
フィールド外部キー制約を削除する
alter table tableName drop foreign key keyName
データテーブルのコピー
データテーブルの完全な構造を取得する
mysql> show create table test_tb \G;
*************************** 1. row ***************************
Table: test_tb
Create Table: CREATE TABLE `test_tb` (
`id` int(11) NOT NULL,
`runoob_title` varchar(100) NOT NULL,
`runoob_author` varchar(40) NOT NULL,
`submission_date` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR:
No query specified
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;
テーブルの構造とデータをコピーする
create table targetTable select * from sourceTable
mysql> create table new_table select * from runoob_tbl_new;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from new_table;
+-----------+--------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+--------------+---------------+-----------------+
| 1 | 学习 PHP | 菜鸟教程 | 2020-12-09 |
| 2 | 学习 MySQL | 菜鸟教程 | 2020-12-09 |
+-----------+--------------+---------------+-----------------+
2 rows in set (0.00 sec)
テーブル構造をコピーする
create table targetTable select * from sourceTable where 1=2
mysql> create table new_table2 select * from runoob_tbl_new where 1=2;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> create table new_table3 like runoob_tbl_new;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from new_table2;
Empty set (0.00 sec)
mysql> select * from new_table3;
Empty set (0.00 sec)