MySQLデータベースの基本とMySQLテーブルの追加、削除、変更を理解するための記事(プライマリ)

コンテンツ

1.データベースの運用

1.1現在のデータベースを表示する

1.2データベースを作成する

1.3データベースの使用

1.4データベースを削除する

2.一般的なデータ型

2.1数値タイプ

2.2文字列型

2。3日付型

3.テーブル操作

3.1テーブルの構造を表示する 

3.2テーブルを作成する 

3.3テーブルの削除

4. MySQLテーブルの追加、削除、検索、および変更(CRUD)

4.1新規(作成)

4.2クエリ(取得) 

4.3エイリアス

4.4重複排除(個別)

4.5注文者

4.6条件付きクエリ(ここで)

4.7ページングクエリ(LIMIT) 

4.8変更(updata)

4.9削除(削除) 


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;

結果:

おすすめ

転載: blog.csdn.net/qq_58710208/article/details/122172316