目次
学習メモを SQL データベースに記録する
1.SQLの分類
基本的なカテゴリは次のとおりです。
分類 | フルネーム | 説明する |
---|---|---|
DDL | データ定義言語 | データ定義言語。データベース オブジェクト (データベース、テーブル、フィールド) を定義するために使用されます。 |
DML | データ操作言語 | データベース内のデータを追加、削除、変更するために使用されるデータ操作言語 |
DQL | データクエリ言語 | データ クエリ言語。データベース内のテーブル内のレコードをクエリするために使用されます。 |
DCL | データ制御言語 | データ制御言語。データベース ユーザーの作成とデータベース アクセス許可の制御に使用されます。 |
2.SQL-DDL
2.1 データベースの操作
お問い合わせ
すべてのデータベースにクエリを実行する
show databases;
作成する
データベースの作成
create database cat;
これは作成が成功したことを意味します
drop database if exists cat;
このようなデータベースを作成することもできます
データベースが存在するかどうかを検出し、存在する場合は作成します。存在しない場合は作成せず、エラーは報告されません。
create database if not exists cat;
消去
データベースの削除
drop database cat;
エラーを報告しないようにするには、存在しないデータベースを削除するときにこれを実行できます。
drop database if exists cat;
データベースを使用する
use cat;
使用中のデータベースをクエリする
select database();
2.2 データテーブルの操作
テーブルの作成
create table tb_user(
id int comment '标号',
name varchar(50),
age int,
gender varchar(1)
) comment '用户表';
コメント コメントはオプションかどうか
ルックアップテーブル
データベース内のすべてのテーブルをクエリする
show tables;
クエリ固有のテーブル構造
desc tb_user;
コメントを明確に確認するには、特定のテーブル作成ステートメントをクエリします。
show create table tb_user;
テーブルの変更
フィールドの追加
alter table tb_user add password varchar(50) comment '密码';
フィールド名とフィールドタイプを変更する
alter table tb_user 旧字段名 新字段名 varchar(255);
フィールドの削除
alter table tb_user drop username;
テーブル名の変更
alter table 旧表名 rename to 新表名;
テーブルの削除
drop table if exists 表名;
テーブルを削除してテーブルを再作成します (すべてのフィールドが削除されるため、再作成する必要があります)
truncate table 表名;
3.SQL-DML(追加・削除・変更)
3.1 挿入
データの挿入 (フィールドに基づいて挿入)
insert into tb_user (id, name, age, gender) values (1,'张三',10,'男');
すべてを挿入するには、すべてのフィールドを順番に含める必要があります
insert into tb_user values (2,'李四',10,'男');
3.2 修正
「where」という単語は条件を表します(条件がない場合はすべてのデータに影響します)
update tb_user set name = '王五' where id = 1;
3.3 削除
delete from tb_user where id = 1;
4.SQL-DQL(チェック)
4.1 基本的なクエリ
すべてのフィールドをクエリする
select * from 表名;
指定されたフィールドをクエリする
select name,id,gender from 表名;
指定されたフィールドをクエリしてエイリアスを作成します
select workaddress as '工作地址' from 表名;
指定されたフィールドをクエリし、重複排除処理を実行します。
select distinct workaddress as '工作地址' from 表名;
4.2 条件付きクエリ
持ち運びの条件
比較演算子記号 | 関数 |
---|---|
> | 以上 |
>= | 以上 |
< | 未満 |
<= | 以下 |
= | 等しい |
<> または != | 等しくない |
...と...の間 | 一定の範囲内(最小値、最大値を含む) |
で(...) | in の後のリスト内の値は、複数の中から 1 つを選択します |
リンクプレースホルダー | あいまい一致 (「_」は単一の文字に一致し、「%」は任意の数の文字に一致します) |
無効である | NULL のフィールド |
論理演算子 | 関数 |
---|---|
および または && | そして (複数の条件が同時に満たされる) |
または または || | または (複数の任意の条件のうち 1 つが true) |
そうではない、あるいは! | いいえ |
年齢が 20 歳未満のすべてのデータ
select * from emp where age < 20;
特定のフィールドを持たないクエリデータ
select * from emp where idcard is null;
使用しないでください
select * from emp where idcard is not null;
between と の使用 (15 ~ 30 歳のデータをクエリ)
select * from emp where age between 15 and 30;
in の使用 (次の 2 つのコマンドは同じ効果があります)
select * from emp where age=18 or age=20 or age=90;
select * from emp where age in(18,20,90);
あいまい一致(名前を問い合わせるデータが3文字)
select * from emp where name like '___';
4.3 集計関数のクエリ
一般的な集計関数
関数名 | 関数 |
---|---|
カウント | 総数 |
最大 | 最大値 |
分 | 最小値 |
平均 | 平均値 |
和 | 和 |
文法:
select 聚合函数(字段列表) from 表名;
年齢が 30 未満のすべてのデータの合計をクエリします
select count(*) from emp where age < 30;
平均年齢のクエリ
select avg(age) from emp;
4.4 グループクエリ
文法
select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;
where と have の違いは次のとおりです。
実行タイミングが異なります: where はグループ化の前にフィルタリングを行い、where 条件が満たされない場合はグループ化には参加しませんが、have はグループ化後に結果をフィルタリングします。
判定条件が異なります。集計関数は判定できませんが、ある場合は判定できます。
男女別に男性従業員数と女性従業員数をカウント
select gender,count(*) from emp group by gender ;
男女別に男性社員と女性社員の平均年齢を算出
select gender, avg(age) from emp group by gender;
年齢が 45 歳未満の従業員をクエリし、勤務先住所に従ってグループ化し、従業員数が 3 人以上の勤務先住所を取得します。
address_count は、数を数えることによって得られるエイリアスです。
select workaddress,count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
4.5 ソートクエリ
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
昇順ソート (asc) のデフォルト
年齢順に並べ替える
select * from emp order by age;
降順で並べ替え
select * from emp order by age desc;
4.6 ページングクエリ (MySql)
データベースが異なればフィールドも異なる場合があります
select 字段列表 from 表名 limit 起始索引,查询记录数;
最初の 10 個のデータをクエリする
select * from emp limit 0,10;
4.7.DQLの実行シーケンス
①:から
②:どこで
③:グループ化、持つ
④:選択
⑤:ご注文はこちら
⑥:リミット
5.SQL-DCL
mysql データベースのユーザー テーブルは、mysql データベースの下のユーザー テーブルにあります。
5.1 ユーザー管理
ユーザーを作成
新しく作成されたユーザーには権限がありません
ローカルホストでのみアクセス可能
create user 'itcast'@'localhost' identified by '123456';
任意のホスト アクセスを設定する
create user 'itcast'@'%' identified by '123456';
パスワードを変更する
alter user 'itcast'@'localhost' identified with mysql_native_password by '123';
ユーザーを削除する
drop user 'itcast'@'localhost';
5.2 ユーザーの権利
権限のクエリ
show grants for 'root'@'localhost';
付与された許可
特定のデータベースに対するすべての権限をユーザーに付与します。
これにより、指定されたデータベース内のすべての権限 (SELECT、INSERT、UPDATE、DELETE など) がユーザーに付与されます。
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
特定のテーブルに対する特定の権限をユーザーに付与します。
これにより、指定されたテーブルに対する SELECT 権限と INSERT 権限のみがユーザーに付与されます。
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';
すべてのデータベースに対する特定の権限をユーザーに付与します。
これにより、すべてのデータベースに対して CREATE、DROP、ALTER などの操作を実行する権限がユーザーに付与されます。
GRANT CREATE, DROP, ALTER ON *.* TO 'username'@'localhost';
ユーザーにすべてのデータベースに対するすべての権限を付与します。
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
許可を取り消す
特定のデータベースに対するユーザーからすべての権限を取り消します。
これにより、指定されたデータベースに対するユーザーのすべての権限が取り消されます。
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';
特定のテーブルに対するユーザーの特定の権限を取り消します。
これにより、指定されたテーブルに対するユーザーの SELECT および INSERT 権限が取り消されます。
REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'localhost';
すべてのデータベースに対するすべてのユーザー権限を取り消します。
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';