コンテンツ
4. MySQLテーブルの追加、削除、検索、および変更(CRUD)
1.データベースの運用
1.1現在のデータベースを表示する
SHOW DATABASES;
1.2データベースを作成する
文法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification]...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
説明:
・キーワードを大文字にする
・[]はオプションです
CHARACTER SET:データベースで使用される文字セットを指定します
COLLATE:データベースの文字 セットの検証ルールを指定します
例:
db_name1という名前のデータベースを作成します
create database db_name1;
注:文字セットと検証ルールを指定せずにデータベースを作成すると、システムはデフォルトの文字セットutf8を使用し、検証ルールはutf8_general_ciです。
・システムにdb_name2のデータベースがない場合は、db_name2という名前のデータベースを作成します。データベースがある場合は、作成されません。
create database if not exists db_name2;
・システムにdb_name3のデータベースがない場合は、utf8mb4文字セットを使用してdb_name3のデータベースを作成します。ある場合は、作成されません。
create database if not exists db_name3 character set utf8mb4;
注:MySQLのutf8エンコーディングは実際のutf8ではなく、複雑な漢字は含まれていません。MySQLの実際のutf8はutf8mb4を使用するため、utf8mb4を使用することをお勧めします。
1.3データベースの使用
データベース名を使用します。
例:
use db_name3;
1.4データベースを削除する
文法:
DROP DATABASE [IF EXISTS] db_name;
例:
drop database if exists db_name1;
drop database if exists db_name2;
注:データベースが削除されると、対応するデータベースが内部に表示されなくなり、その中のすべてのテーブルとデータが削除されます。
2.一般的なデータ型
2.1数値タイプ
整数と浮動小数点:
データの種類 | サイズ | 説明する | 対応するJavaタイプ |
BIT [(M)] | Mは桁数を指定し、デフォルトは1です。 | 2進数、Mの範囲は1〜64、保存された値の範囲は0〜2 ^ M-1 | 一般的に使用されるブール値はBITに対応します。現時点では、デフォルトは1ビットであり、0と1のみを格納できます。 |
TINYINT | 1バイト | バイト | |
SMALINT | 2バイト | 短い | |
INT | 4バイト | 整数 | |
BIGINT | 8バイト | 長さ | |
FLOAT(M、D) | 4バイト | 単精度、Mは長さ、Dは小数点以下の桁数を指定し、精度の低下が発生します | 浮く |
DOUBLE(M、D) | 8バイト | ダブル | |
DECIMAL(M、D) | M/D最大+2 | 倍精度、Mは長さを指定し、Dは小数点以下の桁数、正確な値を表します | BigDecimal |
NUMERIC(M、D) | M/D最大+2 | DECIMALと同じ | BigDecimal |
2.2文字列型
データの種類 | サイズ | 説明する | 対応するJavaタイプ |
VARCHAR(SIZE) | 0〜65535バイト | 可変長文字列 | ストリング |
文章 | 0〜65535バイト | 長いテキストデータ | ストリング |
MEDIUMTEXT | 0-16777215バイト | 中程度の長さのテキストデータ | ストリング |
BLOB | 0〜65535バイト | バイナリ形式の長いテキストデータ | バイト[] |
2。3日付型
データの種類 | サイズ | 説明する | 対応するJavaタイプ |
DATATIME | 8バイト | 範囲は1000〜9999で、タイムゾーンの取得と変換は実行されません。 | java.util.Data java.sql.Timestamp |
タイムスタンプ | 4バイト | 1970年から2038年の範囲で、現在のタイムゾーンを自動的に取得して変換します | java.util.Data java.sql.Timestamp |
3.テーブル操作
データベース内のテーブルを操作する必要がある場合は、最初にデータベースを使用する必要があります。
use db_name;
3.1テーブルの構造を表示する
descテーブル名;
例:
3.2テーブルを作成する
文法:
create table table_name(
field1 datatype,
field2 datatype,
field3 datatype
);
コメントを使用してフィールドの説明を追加できます
例:
create table student (
id int,
name varchar(10) comment '姓名',
age int comment '年龄',
sex varchar(1)
);
3.3テーブルの削除
構文形式:
DROP [TEMPORARY] TABLE [IF EXISTS] tab_name;
例:
-- 删除tab_name1表
drop table tab_name1;
-- 如果tab_name2表存在,则删除
drop table if exists tab_name2;
4. MySQLテーブルの追加、削除、検索、および変更(CRUD)
コメント:「 - space+description」を使用してSQLでコメントを作成できます
CRUDは、追加(作成)、クエリ(取得)、更新(updata)、削除(削除)です。
4.1新規(作成)
文法:
INSERT
[INTO] table_name [(column [, column]...
) ]
VALUES
(value_list) [, (value_list)]...value_list: value,
[, value]...
ケーステーブル:
create table student (
id int,
name varchar(10) comment '姓名',
age int comment '年龄',
sex varchar(1) comment '性别'
);
単一行データ+全列挿入:
-- value_list数量必须和表的列的数量和顺序一致
insert into student values (1,'小张',20,'男');
insert into student values (2,'小红',21,'女');
複数行のデータ+指定された列の挿入:
insert into
student (id, name, age)
values
(3, '小花', 22),
(4, '小赵', 25);
4.2クエリ(取得)
文法:
選択する
[DISTINCT] {* | {列[、列] ...}
[FROM table_name]
[どこ ...]
[ORDERBY列[ASC| DESC]、...]
制限..。
ケーステーブル:
-- 创建成绩表
create table student_score (
id int,
name varchar(10),
chinese decimal(3, 1),
math decimal(3, 1),
english decimal(3, 1)
);
-- 往成绩表中插入数据
insert into
student_score (id, name, chinese, math, english)
values
(1, '小张', 60.5, 70, 85),
(2, '小花', 85.5, 95, 96),
(3, '小赵', 76, 88, 92),
(4, '小王', 85, 64, 73);
全列クエリ:
-- *代表全部列
select * from student_score;
結果:
列クエリを指定します。
select
id,
name,
chinese
from
student_score;
結果:
クエリフィールドは次の式です。
式にフィールドが含まれています
-- 表达式包含一个字段
select
id,
name,
chinese + 10,
math -10,
english -5
from
student_score;
結果:
式にフィールドが含まれていません
-- 表达式不包含字段
select id,name,10 from student_score;
結果:
式に複数のフィールドが含まれています
-- 表达式含多个字段
select
id,
name,
chinese + math + english
from
student_score;
結果:
4.3エイリアス
クエリ結果で指定された列にエイリアスを設定します。これは、返された結果セットで、エイリアスが列の名前として使用されることを示します。構文:
SELECT列[AS]alias_name[...] FROM table_name;
キーワードは:asですが、asは省略できます
例:
-- 别名作为列名返回
select
id,
name,
chinese + math + english sum
from
student_score;
結果:
4.4重複排除(個別)
DISTINCTキーワードを使用して、データの列を重複排除します
-中国語で85ポイントが繰り返されます
student_scoreから中国語を選択します。
-重複排除の結果
student_scoreから異なる中国語を選択します。
4.5注文者
文法:
--ASCは昇順(最小から最大)です
-降順のDESC(最大から最小)
--デフォルトはASCです
SELECT ... FROM table_name [WHERE ...]
ORDERBY列[ASC|DESC]、[...];
1.orderby句のないクエリによって返される順序は未定義です
2.ヌルデータは並べ替えられ、どの値よりも小さいと見なされ、上から順に、下から順に並べられます。
例:言語グレードで昇順で並べ替えます:
select
*
from
student_score
order by
chinese;
結果:
3.式とエイリアスを使用して降順で並べ替えます
select
id,
name,
chinese + math + english sum
from
student_score
order by
sum desc;
結果:
4.複数のフィールドを並べ替えることができ、並べ替えの優先順位は書き込み順序に従います
select
*
from
student_score
order by
chinese,
math,
english desc;
結果:
4.6条件付きクエリ(ここで)
比較演算子:
オペレーター | 説明する |
>、> =、<、<= | より大きい、以上、より小さい、以下 |
= | 等しい、NULLは安全ではなく、NULL=NULLの結果はNULLです |
<=> | 等しい、NULLセーフ、NULL<=>NULLはTRUEになります |
!=、<> | 等しくない |
a0とa1の間 | 範囲マッチング、[a0、a1] |
IN(オプション1 ......) | オプションのいずれかである場合はtrueを返します |
無効である | 無効である |
NULLではありません | NULLではない |
お気に入り | あいまい一致、%は任意の数の任意の文字を意味し、_は任意の1文字を意味します |
論理演算子:
オペレーター | 説明する |
と | 結果が真になるには、複数の条件が真である必要があります |
また | 条件のいずれかが真であり、結果が真である |
いいえ | 条件はtrue、結果はfalse |
知らせ:
1.条件は式を使用できますが、エイリアスは使用できない場合
2.ANDがORよりも優先されます
例:
・基本的なクエリ:
-- 查询语文成绩小于70分的同学
select id,name,chinese from student_score where chinese<70;
--查询语文成绩比英语成绩低的同学
select
id,
name,
chinese,
english
from
student_score
where
chinese < english;
-- 查询总分低于250分的同学
select
id,
name,
chinese + math + english
from
student_score
where
chinese + math + english < 250;
結果:
・ANDと与:
-- 查询语文和英语成绩都大于80分的同学
select
*
from
student_score
where
chinese > 80
and english > 80;
-- 查询数学成绩大于80或者英语成绩小于80的同学
select
*
from
student_score
where
math > 80
or english < 80;
・範囲クエリ:
-- 查询语文成绩在70到90分之间的学生
select
*
from
student_score
where
chinese between 70
and 90;
・ファジークエリ:LIKE
-- 查询名字为 小... 同学的成绩
select
*
from
student_score
where
name like '小%';
4.7ページングクエリ(LIMIT)
文法:
-開始インデックスは0です
--0から開始し、n個の結果をフィルターします
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
--sから開始し、n個の結果をフィルタリングします
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s、n;
--sから始めて、nの結果をフィルターします。これは、2番目の使用法よりも明確です。使用することをお勧めします。
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
例:2番目にランク付けされた中国語スコアの結果を照会します。
select
id,
name,
chinese
from
student_score
order by
chinese desc limit 1,1;
結果:
4.8変更(updata)
文法:
UPDATE table_name SET column = expr [、column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
例:
Xiaohuaの言語スコアを80に変更します。
update student_score set chinese=80 where name='小花';
結果:
4.9削除(削除)
文法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
例:
Xiaohuaの成績を削除します。
delete from
student_score
where
name = '小花';
結果:
テーブル全体のデータを削除します。
delete from student_score;
結果: