SQL構造化クエリ言語
-
特徴:
-
統合された
- データ定義言語DDL、データ操作言語DML、データ制御言語DCLがすべて1つに
- データベースのすべてのアクティビティを個別に完了することができます
-
高度に未処理
- 何をすべきかを提案するだけで、アクセスパスを理解する必要はありません
-
セット指向の操作
- 挿入、削除、更新されたオブジェクトはタプルのコレクションです
-
複数の使用方法
- インタラクティブSQL
- 操作するSQLコマンドを直接入力
- 説明するDBMSがあります
- 埋め込みSQL
- SQLステートメントを高水準言語に埋め込む
- アプリケーションがSQLのデータベースへのアクセス機能とホスト言語のプロセス機能を最大限に活用できるようにします
- 一般に、組み込みSQLステートメントをホスト言語コンパイラーが処理できるステートメントに変換するには、事前コンパイルが必要です。
- インタラクティブSQL
-
-
コア機能
- データ定義:基本テーブル、ビュー、インデックスの削除、変更
- データ操作:データの追加、削除、確認、変更
- データ管理:許可、撤回
-
アーキテクチャー
- 基本的なテーブル:
- 単独で存在するテーブル、リレーションシップは基本テーブルに対応します
- 1つ以上の基本テーブルが1つのストレージファイルに対応しています
- テーブルは複数のインデックスを持つことができます
- 保存ファイル:
- 論理構造によるリレーショナルデータベースの内部構造
- 物理的構造は任意で透明です
- 表示:
- 1つまたは複数の基本テーブルから派生したテーブル
- データベースはビューの定義のみを保存し、ビューのデータは保存しません
- ビューは仮想テーブルであり、ユーザーはビューにビューを定義できます
- 基本的なテーブル:
-
SQL操作
- データクエリ
- 単一テーブルクエリ
- データクエリ
select 指定列 from 表名
select 指定列 别名, 指定列2 别名2 ... from student #这里的指定列的别名用来更改查出来的值的列名
select distinct 列名 from 表名 #distinct 是指去掉表中重复的行
select 列名 from 表名 where 条件表达式 #这里条件表达式有 >= <= = != AND,OR,NOT,LIKE,IN,BETWEEN AND ......
select 列名 from 表名 where 列名 LIKE 'DB\_%i__' ESCAPE '\\' #这里LIKE为比较,%为通配符,ESCAPE '\\' 为换码字符,即转义字符,从查询以DB_ 开头且以 倒数第三个字母为i的字母的行
select 列名 from 表名 where 条件表达式 order by 列名 desc(asc)#指定列升序或者降序排列
#聚集函数:COUNT(),SUM(),AVG(),MAX(),MIN()等
select MAX(属性名) from 表名 where 条件表达式
#GROUP BY 对查询结果进行分组
select 列名 from 表名 group by 列名 having 条件 #对分组进行条件筛选
- コレクションクエリ(UNION、INTERSECT、EXCEPT)
select * from 表 where xxx UNION select * from 表 where xxx #UNION 将多个查询结果合并起来 相当于OR
select * from 表 where xxx INTERSECT select * from 表 where xxx #INTERSECT将多个查询结果合并起来 相当于AND
select * from 表 where xxx EXCEPT select * from 表 where xxx #EXCEPT 差,前者所查询的结果-后者查询到的结果
- 結合クエリ(マルチテーブルクエリ)
#表名1.列名 比较运算符 表名2.列名
select 表1.列, 表2.列 from 表1,表2 where 条件
-
ネストされたクエリ
- select-from-whereはクエリブロックであり、ループのネストと呼ばれる別のwhereにクエリブロックをネストします
select * from 表 where (select * from 表 where xx)
- 無関係なサブクエリ:サブクエリのクエリ条件は親クエリに依存しません
- 関連サブクエリ:サブクエリの条件は親クエリに依存します
- INを使用したサブクエリ
select * from 表 where 列 IN ( select 列 from 表 where xx)
- 比較演算子を使用したサブクエリ
- 内部クエリが返す値が単一の値であることが正確にわかる場合は、比較演算子を使用できます> <> =…
- ANYまたはALLを持つサブクエリ
- ANYより大きい、特定の値より大きい
- ALLより大きく、どの値よりも大きい
select 列 from 表名 where 列 > ANY( select * from 表 ...)
- EXISTSを使用したサブクエリ
select * from 表 where EXIST (select * from 表 where xx)
-
データ定義
- モードの定義
create schema 模式名 authorization 用户名 #为用户名定义一个模式,可以没有模式名,模式名默认为用户名
drop schema 模式名 <cascade / restrict> #cascade 级联,删除模式的同时把该模式所有数据都删除,restrict 如果定义了下属的数据库对象,则拒绝删除语句的执行。
- 基本テーブルの定義
- データ型
create table 表名 (列名 数据类型 约束条件,...)
alter table 表名 ADD/DROP/ALTER 列名 ...
drop table 表名 restrict/cascade #删除表,restrict 有限值的删除,如果存在依赖该表的对象,则不进行删除,cascade 强制删除
- データ型
- インデックスの定義:クエリを高速化するため
create unique/cluster index 索引名 on 表名(列名...) #cluster聚簇索引,一个基本表最多建立一个,unique 为唯一索引
drop index 索引名
- モードの定義
-
データ更新
- データを挿入する
insert into 表名 (属性列1,属性列2...) values (常量1,常量2...)
- データを変更する
update 表名 set 列名 = 表达式,... where 条件表达式
- データを削除する
delete from 表名 where 条件表达式
-
見る
- 特徴
- 1つ以上の基本テーブルから派生したテーブル
- ビューの定義のみを保存し、ビューに対応するデータは保存しない
- ビューを定義する
create view 视图名 列名1,列名2... as 子查询 with check option #自动检查属性是否为IS
- ビューを削除
drop view 视图名
- クエリビュー
select 属性列 from 视图名 where 条件
- ビューを更新
update 视图名 set 属性列 = 值 ... where 条件表达式e
- 特徴
End