MYSQLベースノート


title:MYSQLベースノートcopyright:true top:0 date:2018-05-14 18:29:00 tags:[MYSQLチュートリアル、Mysqlベース]categories:PHPとMysql permalink:password:keywords:[MYSQLチュートリアル、Mysqlベース]description:Mysqlデータベースベースの添削
世界で最も恐ろしいのは死ではなく、永遠の孤独だ.
testという名前のデータベースを作成する
create database test;

msgという名前のテーブルを作成する
CREATE TABLE IF NOT EXISTS msg(
id int primary key auto_increment,
name VARCHAR(10),
age int(3)
)charset=utf8;

IF NOT EXISTSデータベースにmsgというテーブルがない場合は、このmsgのテーブルを作成します(重複作成テーブルのエラーを防ぐ)、フィールドID、name、ageが3つ入っています.
id           。
int      ,  。
primary key          。
auto_increment            ,   INSERT    ,    1
varchar     ,             
int      
charset      

インデックスを使用する場合は、インデックス(データ構造の迅速な検索)と書きます.
CREATE TABLE IF NOT EXISTS msg(
id int primary key auto_increment,
name VARCHAR(10),
age int(3)
INDEX `name` (`name`) USING BTREE,
UNIQUE INDEX `age` (`age`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;

ここで主キーはid,インデックスの値はname,タイプはInnoDBである.INDEXはこのフィールドをインデックスとし、UNIQUE INDEXはフィールド値が一意で、このフィールドをインデックスとして設定します.インデックスについてはこの記事を参照してくださいMySQL拡張-インデックス
ROW_FORMAT=DYNAMIC
データの追加
INSERT into msg (id,name,age) VALUES(1,'langzi',18);

idはテーブル作成時に自己成長を設定するので、このように追加することもできます
INSERT into msg (name,age) VALUES('langzi',18);

複数のデータを一度に挿入できますが、必ずテーブルのフォーマットに一致するように注意してください.
insert into msg VALUES (2,'lanzia',20),(3,'zhao',18),(4,'lany',20);

データを挿入して重複した数値を挿入しないようにするには、仮想テーブルdualを使用します.
INSERT into msg(name,age) SELECT 'langzi',18 from dual where 'langzi' not in (select name from msg);

この行のコードは,表msgのnameにlangziという値がなければlangzi,18の2つの数値を挿入することを意味する.
データの削除
id=3のデータを削除すると、id=3をname=「langzi」に変更することができ、name=「langzi」の行のデータを削除することができます.
DELETE FROM msg where id = '3';

データの更新
id=4のデータを更新します.例えば、nameをooに変更します.
UPDATE msg set name='oo' where id=4;

whereの条件を変更できます.変更が一致するのはテーブル全体が条件に合致していることを覚えておいてください.
データの検索
クエリー・テーブルの複数行すべての列
select * from msg;

1行の問合せ
select * from msgr where id=2;

複数行の問合せ
select * from msg where id>=2;

すべての列を表す*行を検索
select name,age from user where id>=2;
select name from user where id=2;

ファジイクエリ
SELECT * from msg WHERE name LIKE '%lang%';

%番号を使用する部分はあいまいな一致の場所で、上の文の意味はnameの中でlangの値さえあればデータを検索します.
連合クエリー
Unionはクエリーを結合し、2つの文を一緒に実行します.1つ目のエラーが2つ目の文を実行する場合は、注入時によく使用され、1つ目の例外を実行し、自分で構築した文を実行して表示します.
SELECT name from msg where id=1 union select age from msg where id=2;

この文は、msgテーブルのid=1のname値とid=2のageをクエリーする値です.
ツールバーの
order byというキーワードは、注入時にテーブルにいくつかのフィールドがあると推測されますが、実際には、select*from msg order by id ascなどの昇順降順に並べ替えるなど、一定のルールに従って並べ替える役割を果たしています.最初のテーブルには3つのフィールドしかないので、order by 1または2,3が正常であれば、order by 4がエラーを報告します.テーブルには4つのフィールドがないので、テーブルのフィールド数を判断するために使用できます.
SELECT * from msg ORDER BY 3;

コマンドの追加
元のテーブルに新しいテーブルを追加したい場合はalterコマンドを使用します.
例:
alter table table_name drop index index_name ;

索引の削除
インデックスを削除するには、ALTER TABLE文またはDROP INDEX文を使用します.DROP INDEXは、ALTER TABLE内部で文として処理できます.フォーマットは次のとおりです.
drop index index_name on table_name ;

索引の追加
一般索引の追加
alter table table_name add index(table_name_column);

ユニークインデックスの追加
alter table table_name add unique(tanle_name_column);

全文インデックスはFULLTEXTで、BLOBとTEXTタイプのフィールドのみを対象としています.
データベース・エンジンの変更
ALTER TABLE table_name ENGINE=InnoDB;

エンコーディングの変更
alter table table_name convert to character set utf8mb4 collate utf8mb4_bin