この記事では、MySQL でよく使用されるデータ クエリ言語について説明します。 DQL (データクエリ言語) SELECT構文 選択 [すべて | 個別] { * | table.* | [table.field1 [別名1として][,table.field2] [別名2として][,...]]} FROM テーブル名 [テーブルエイリアスとして] [left | out | inner join table_name2] #結合クエリ [WHERE ...] #結果が満たす必要のある条件を指定します [GROUP BY ...] #結果をグループ化するフィールドを指定します [HAVING ...] #グループ化されたレコードをフィルタリングするために満たす必要のある二次条件 [ODER BY ...] #クエリレコードが1つ以上の条件でソートされることを指定します [LIMIT [オフセット、返される結果レコードの数]; #どのレコードをどのレコードからどのレコードにクエリするかを指定します 基本的なクエリステートメントとAS 次の例では、student テーブルのデータを使用します。 テーブル内のすべてのデータ列をクエリするには、「*」記号を使用しますが、これは非効率的です。 学生から*を選択します。 クエリ列を指定できるので、非常に効率的です。 学生からStudentName、Phoneを選択します。 AS 句の機能と使用法 注: ASは省略可能 (1)データ列に新しいエイリアスを与えることができる 学生から「学生名」として StudentName を選択します。 (2)テーブルに別名をつける student から stu.address を stu として選択します。 (3)計算結果や集計結果を別の新しい名前に置き換えることができます。 学生からの電話として電話番号 +1 を選択します。 DISTINCT キーワード 機能: SELECTクエリから重複する値を削除します(返される値がすべて同じ場合は、1つのレコードのみが返されます) 文法: テーブル名から DISTINCT フィールド名1、フィールド名2、... を選択 注: ALL キーワードはデフォルトで、すべてのレコードを返します。 複数の列で重複する値をフィルタリングする場合、フィルタリング対象として選択されたすべての列に重複する値が存在する場合にのみ、フィルタリングが実行されます。 学生から DISTINCT StudentNo,address を選択します。 1つの列をフィルタリングする: 学生テーブルのアドレスをクエリする 学生から別の住所を選択します。 SQL文の式 SELECT VERSION(),100*3 as product; #MySQLのバージョンと計算結果を返す SELECT NOW() 'current time'; #現在の時刻を返す 開発言語プログラムに干渉する「.」、「*」、括弧を含むSQL戻り結果を避ける 式として MySQL_V,12.3*100 として VERSION() を選択します。 #返された結果はバックグラウンド開発プログラムと混同されません 連結 SELECT CONCAT(studentName,'@.com') を学生からのメールとして選択します。 数値型の追加 学生からStudentNo+100を選択します。 比較演算子とワイルドカード Where条件文: データテーブル内の条件を満たすレコードを取得するために使用します。 検索条件は 1 つ以上の論理式で構成でき、結果は通常 true または false になります。 検索条件の構成: 論理演算子、比較演算子 #where 条件文 select * from student where address='四川'; # 学生テーブルで電話番号が null でない学生の名前を照会します。select StudentName from student where Phone is not null; # 学生テーブルで電話番号が空の学生の名前を照会します。select StudentName from student where Phone is null; # 削除したばかりのデータをクエリします - 空の値 select StudentName from student where Phone = ''; # BETWEEN ANDは時間範囲で機能します 論理演算子 比較演算子 あいまい検索にはLIKEキーワードを使用する
# 学生テーブルで姓が Zhang* の学生の名前を照会しますSELECT StudentName from student where studentname like '张_'; SELECT StudentName from student where studentname like '%丽%'; # で 住所が ('四川省','上海') である学生から * を選択; 知らせ:
NULL
内部結合と自己クエリ 複数のテーブルからデータをクエリする必要がある場合は、結合演算子を使用して複数のクエリを実装できます。 カテゴリには以下が含まれます:
ORDER BY ソートクエリ 特定のフィールドで選択ステートメントクエリの結果を並べ替える DESC(降順)またはASC(昇順)で使用します。デフォルトはASCです。 科目テーブルと成績テーブルデータを例に挙げます。 SELECT * from subject ORDER BY classhour; #昇順 SELECT * from subject ORDER BY classhour desc; #降順 複数フィールドの並べ替え: 最初に最初のフィールドで並べ替え、次に 2 番目のフィールドで並べ替えます。最初のフィールドのデータが同じ場合は、2 番目のフィールドで並べ替えます。 subject から * を選択 ORDER BY classHour,GradeID; LIMIT ページネーション LIMIT [m,] n または LIMIT n OFFSET m SELECTによって返される行数を制限する mは返される最初のレコード行のオフセットです n 行数を返す 知らせ:
例えば: SELECT * FROM grade LIMIT 3; #最初の3つのレコードを返す SELECT * FROM grade LIMIT 1,3; #2~4つのレコードを返す レコード総数: 合計 subjectからCOUNT(subjectNO)「合計データ」を選択します。 総ページ数: int totalPage = total % pagesize ==0 ? total / pagesize : total / pagesize + 1 サブクエリ クエリ文のWHERE句に別のクエリ文がネストされている 注: サブクエリによって返される結果は通常コレクションです。INキーワードを使用することをお勧めします。 subjectからsubjectNameを選択する グレードID IN (グレードからグレードIDを選択) 集計関数 よく使用される統計関数: COUNT()、SUM()、AVG()、MAX()、MIN() SELECT COUNT(StudentNo) '合計データ' FROM student; subjectからsum(classHour) '総授業時間'を選択します。 subjectからAVG(classHour)「平均授業時間」を選択します。 subjectから MAX(classHour) '最長授業時間' を選択します。 subjectからMIN(classHour)「最短授業時間」を選択します。 グループ化 GROUP BYキーワードを使用してクエリ結果をグループ化します
学生テーブルを例に挙げましょう (1)学生テーブルを住所別にグループ化し、グループ化を実行する SELECT Address,COUNT(Address) FROM student GROUP BY Address; HAVING フィルタリンググループ内のレコードが満たさなければならない二次条件 (2)学生テーブルを住所別にグループ化し、住所=1のHAVING条件を満たす。 SELECT GROUP_CONCAT(StudentName),COUNT(Address) FROM student GROUP BY Address HAVING COUNT(Address)=1; UNION、UNIONをマージ
注意: 2 つのテーブルを結合する場合、列の数は同じである必要があります。 2 つのテーブルの列数が異なる場合は、次のエラーが報告されます。
(1)科目テーブルと生徒テーブルを結合する subject から * を選択 UNION から * を選択 学生から * を選択; SELECT * FROM subject UNION ALL SELECT * FROM student; サブクエリ EXISTS ——> true false EXISTS / NOT EXISTS サブクエリの条件が満たされると、親クエリの結果が表示され、そうでない場合は結果は表示されません。 (1)サブクエリ条件が真である(グレードテーブルにグレードID1~5が存在する) subjectName、GradeID を subject から選択します 存在する場所 (SELECT * FROM grade WHERE GradeID=1); または subjectName、GradeID を subject から選択します 存在しない場所 (SELECT * FROM grade WHERE GradeID=999); (2)サブクエリ条件が偽である(グレードテーブル内のグレードID1~5が存在しない999) subjectName、GradeID を subject から選択します 存在する場所 (SELECT * FROM grade WHERE GradeID=999); または subjectName、GradeID を subject から選択します 存在しない場所 (SELECT * FROM grade WHERE GradeID=1); サブクエリ (任意 & すべて) ANY: 判定条件において、サブクエリ内のいずれかの値が条件を満たす場合、親クエリが実行されます。 subjectからsubjectname、gradeidを選択します グレードID >=ANY (gradeからGradeIDを選択); (2)条件が満たされない場合(すべてのsubject.gradeid >= grade.gradeid)、親クエリは実行されません。 subjectからsubjectname、gradeidを選択します グレードID >=ALL (gradeからGradeIDを選択); 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Vueはソースコード付きのリファレンスライブラリのメソッドを使用します
>>: Docker インストール tomcat dubbo-admin インスタンス スキル
これは本質的に、ビュー インターフェース構造を記述するために使用される共通の js オブジェクトです...
MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...
Kubernetes は、アプリケーションの移植性とハイブリッド クラウド/マルチクラウドの展開をサ...
プロジェクトをプロジェクトサイトのテスト環境にデプロイするJDK1.8トムキャット8.5 Maven...
MySQLをインストールした後、ターミナルでmysql -u root -pと入力してEnterを押...
参考までに、ネイティブjsでカルーセル効果(シームレススクロール)を実現しています。具体的な内容は以...
どの要素でもスクロールできるようにしながら、スクロールバーを非表示にするにはどうすればよいでしょうか...
シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...
1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...
nginx、mysql、tomcat などのサービスをインストールするときに、使用する必要があるポー...
突然、MySQLにログインすると、アクセスが拒否されたか、データベースに接続できないと表示されました...
mongoイメージを取得する sudo docker pull mongo mongodbサービスを...
1. データベースを作成します。 データ data _name を作成します。 PHP でデータベー...
Vuex は、Vue.js アプリケーション専用に開発された状態管理パターンです。集中型ストレージを...