1-Mysql基本構文

0.winはnacicatプレミアムを使用できます

画像
https://www.cnblogs.com/webnote/p/5753996.html

1.データベース

1.1データベースを表示する

show databases;

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

create database 数据库名;

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

drop database 数据库名;

1.4データベースを選択

use 数据库名 //唯一一条不用加;的执行,不是SQL语句,是mysql语句

2.データベーステーブル

2.1表を見る

show tables;

2.2データテーブルを作成する

create table 表名(字段名称1 字段类型1,字段名称2 字段类型2......)

2.3制約付きのデータテーブルを作成する

1.唯一の制約
ユニーク

create table 表名(字段名称1 字段类型1 unique,字段名称2 字段类型2......)

2.空でない制約(nullは別のnullと等しく
ないnot null

create table 表名(字段名称1 字段类型1 not null,字段名称2 字段类型2......)

3.主キー制約(一意で空でない組み合わせ)

方法1:直接使用两个约束条件组合
create table 表名(字段名称1 字段类型1 unique not null,字段名称2 字段类型2......)

方法2:主键primary key
create table 表名(字段名称1 字段类型1 primary key,字段名称2 字段类型2......)

4.一般的なデジタルタイプのコンポーネントは、MySQLの自動成長戦略
auto_increment と連携します

create table 表名(字段名称1 字段类型1 primary key auto_increment,字段名称2 字段类型2......)

由于自动增长,所以在insert into的时候就不用输入主键的values

5.外部キー制約

二つの表、表1は、存在する場合、表2フィールドが主キーは、テーブル2とすることができる主キー表1のフィールドを制約します

外部キー(制約されたフィールド名)が表2(主キー)を参照する

create table class(num int primary key auto_increment, name varchar(11));

create table stu(num int primary key auto_increment, name varchar(11), classnum int, foreign key(classnum) references class(num))

2.4テーブルのデータを表示する

1.テーブルの構造を表示します。

desc 表名

2.テーブルのデータを表示する

select * from 表名

2.5テーブルを削除する

drop table 表名

3.テーブルの構造を変更する

3.1フィールドを追加する

alter table 表名 add 字段名称 字段类型;

3.2フィールドを変更する

alter table 表名 modify 字段名称 字段类型;

3.3。フィールドの削除

alter table 表名 drop 字段名称;

4.テーブルの内容を変更します

4.1テーブルにデータを挿入する

insert into 表名(字段名称1,字段名称2...) values(字段1的值,字段2的值)

上面的字段可以只插入部分,要填几个就写几个,其他为空,字段的值必须跟字段的类型一致

如果要插入全部的可以把所有的字段名称都写,或者将()都去掉不写,就代表全部
insert into 表名 values(所有字段的值)

4.2テーブルのデータを削除する

清空表
delete from 表名;

删除表中的某一条数据
delete from 表名 where 条件表达式(如:字段名称=字段值);


4.3テーブルのデータを変更する

修改所有记录的字段名称对应的字段值
update 表名 set 字段名称1=新的字段值1;

修改某一条记录的字段名称对应的字段值

update 表名 set 字段名称1=新的字段值1  字段名称2=新的字段值2... where 条件表达式;

4.4ルックアップテーブルのデータ

1.すべてのコンテンツを表示

select * from 表名;

2.フィールドリスト、式(算術演算)

select 字段列表,表达式(算数运算),函数 from 表名

select sal form emp

selsct ename,sal from emp

selsct sal,sal*12 from emp

3. where条件式クエリ

select * from 表名 where 条件表达式(可以多条件符合add or)
  • 等価比較=
  • より大きい>
  • <未満
  • 以上= =
  • <=以下
  • <>と等しくない
  • そしてそして
  • またはまたは
  • の範囲内(自分を除く)
  • ない
  • 内と間(自分を含む)
  • null値の判定はnullです
  • null以外はnullでないと判断する価値があります

4.機能

1.数学関数

PI()
FLOOR(x) 返回小于x的最大整数(去掉小数部分取整)
CEILING(x) 返回大于x的最小整数(加1取整)
ROUND(x,y) 但会参数x的四舍五入的又y位小数的值
TRUNCATE(x,y) 返回数字x截断为y位小数的结果

2.集計機能(グループ化機能)

avg(col) 平均值
count(col) 返回指定列中非NULL值的个数
min(col) 最小值
max(col) 最大值
sum(col) 求和

3.文字列関数

concat(s1,s2...sn) 将s1,s2...sn连接成字符串
ltrim(str) 去掉字符串str开头的空格
rtrim(str) 去掉字符串str结尾的空格
trim(str) 去掉字符串str首部和尾部的空格
insert(str,x,y,instr) 将字符串str从第x位置看是,y个字符长度的子串替换为字符串instr
substring(str,x,y) 截取字符串x开始的y个子串

4.日付関数

year(datatime)
month(datatime)
day(datatime)
hour(time)
minute(time)
second(time)
data(datatime)
time(datatime)

5.エイリアス

フィールド、式、関数、テーブルを与えることができます

select 字段/表达式/函数 别名 form rmp

如果别名是中文特殊字符需要加‘’

6.グループ化

フィールド名でempグループを選択します。

selsct max(sal) max_sal from group by deptno

注:
グループ化関数を使用する場合、グループ化関数にないフィールドは、グループ化の後に存在する必要があります。

正确:
selsct max(sal) max_sal,deptno from group by deptno

错误:
selsct max(sal) max_sal,ename from group by deptno

7.グループ化した後、自宅のどこで条件を照会する

错误:
selsct max(sal) max_sal,deptno from group by deptno where max_sal > 2009

where条件只能判断数据表里面的字段名称,可以使用having就可以判断新的别名

正确:
selsct max(sal) max_sal,ename from group by deptno having max_sal > 2009

部門の最高の給与は誰ですか?サブクエリを使用

7.サブクエリ

クエリ結果で再度クエリ

setect ename,sal from emp where sal = (select max(sal) from emp)

会社のマネージャーは誰ですか?

select mgr from emp

重複する個別を削除

select distinct mgr from emp

NULLを削除

select distinct mgr from emp where mgr is not null

サブクエリ

select ename,empno form emp where empno in(select distinct mgr from emp where mgr is not null)

最大の平均給与を持つ部門を問い合せます

グループ関数をネストすることはできません。
クエリ結果は、別のクエリのデータソースとしてテーブルとして使用できますこれは、テーブルになるプロセスでエイリアスする必要があります

select avg_sal,deptno from (select avg(sal)avg_sal, deptno from emp group by deptno) e where
avg_sal = (select max(avg_sal) from (select avg(sal)avg_sal, deptno from emp group by deptno) avg_table

8.マルチテーブルクエリ

従業員の名前と従業員の部門の名前を照会します

empとdeptの2つのテーブルが関係します。

emp、deptからename、dnameを選択します。
デカルト積14 * 4 = 56、56の結果が表示されます

emp、deptからename、dnameを選択します。ここで、emp.deptno = dept.deptno

联結合結合
選択ename、dnameからemp.deptno = emp.deptnoのemp join deptから

三表查询
select ename、dname、grade from emp join dept join salgrade on emp.deptno = dept.deptno and emp.sal between losal and hisal

従業員の名前と従業員のマネージャーの名前を照会します

同じテーブルを2つのテーブルに
分割して、複数のテーブルをクエリできるようにします。empeからe.ename、m.enameを選択します。

一致しない左外部ユニオン/左テーブルにレコードがあり、それを表示したい場合は、
e.ename、m.enameをemp eから選択します。join emp m on e.empno = m、mgr;

一致しない右側の外部ユニオン/右側のテーブルにレコードがあり、それを表示したい場合は、
empからのename、dnameを選択します。emp右側の結合dept emp.deptno = dept.deptno

宿題

部門の平均給与等級

部署の給与等級平均

どの従業員がマネージャーですか

最大給与を見つけるためにグループ関数を使用しないでください

平均給与が最も高い部門番号

平均給与が最も高い部門の名前

平均給与が最も低い部門の名前

一般従業員の最高給与よりも高いマネージャーの名前

元の記事を106件公開 賞賛された76件 130,000回の訪問+

おすすめ

転載: blog.csdn.net/Creator_Ly/article/details/93178982