MySQLプラクティス8||No. 2の簡単な記事(5つの質問を含む、難易度:簡単)

はじめに:タイトルは、NiukeのオンラインプログラミングSQLプラクティスに由来します。記事の内容は、主にブロガーのアイデア、関連する洞察、および質問を行う際の要点の要約を説明することです。一般的に、明確なバグは簡単に修正でき、隠れたバグを見つけるのは難しく、まだまだ先は長いです。検索します。

質問1(難易度:簡単)

次のプロファイルを持つ従業員テーブルemployeesがあります。

次のような部門リーダーテーブルdept_managerプロファイルがあります。

ライティング要件:

部門長ではないすべての従業員emp_noを検索します。上記の例では、次のように出力されます。

問題解決のアイデア:

問題解決コード:

# 解法一:
select employees.emp_no from employees
left join dept_manager
on employees.emp_no=dept_manager.emp_no
where dept_no is null;

# 解法二:
select employees.emp_no from employees
where emp_no not in (
select emp_no from dept_manager);

比較の要約:

  • この質問は主に、比較的単純な条件フィルタリングとサブクエリであるマルチテーブル結合の使用法を調べます。

質問2(難易度:簡単)

次のプロファイルを持つ従業員テーブルemployeesがあります。

ライティング要件:

emp_noが奇数で、last_nameがMaryでない、employeesテーブル内のすべての従業員情報を検索し、hire_dateの逆順に並べます。上記の例のクエリ結果は次のとおりです。

問題解決のアイデア:

問題解決コード:

# 解法一:
select * from employees
where emp_no % 2 
and last_name <> 'Mary'
order by hire_date desc;

# 解法二:
select * from employees
where emp_no & 1 
and last_name != 'Mary'
order by hire_date desc;

比較の要約:

  • 判断は、<>または!=を使用することと同じではありません
  • 奇数と偶数を判断する方法は、最初に2を除算し、余りを1と見なすことを考えますが、実際には、ビット演算を使用する方が賢明です。ルールは次のとおりです
    。1&奇数= 1; 1&偶数= 0 。したがって、数値(前提は整数)が奇数か偶数かを判断するには、特定の数値と1を直接使用してビット単位のANDを実行できます。
  • 詳細な知識開発については、ブログ投稿を参照してください

興味深いものは、単純なLeetcodeの質問「620.興味深い映画」-「ビット演算でのビットごとのAND演算」-プログラマーが求めたものによって発見されました。


質問3(難易度:簡単)

次のような給与スケールの給与プロファイルがあります。

ライティング要件:

2番目に高い給与の従業員のemp_noとそれに対応する給与給与を取得します。2番目に高い給与の従業員が複数いる場合は、対応する従業員のすべてのemp_noとsalaryを出力し、emp_noの昇順で並べ替えます。

問題解決のアイデア:

問題解決コード:

select emp_no, salary from salaries
where salary = (
select distinct salary from salaries
order by salary desc limit 1, 1)
order by emp_no;

キーポイントのまとめ:

  • +サブクエリの使用がより包括的である制限使用の制限に注意してください

質問4(難易度:簡単)

既存のemployeeテーブルemployeesは次のとおりです。

ライティング要件:

スペースで区切って、employeesテーブル内のすべてのemployeesのlast_nameとfirst_nameをNameとして連結します。(注:sqllite、文字列の連結は||シンボルであり、concat関数をサポートしていません。mysqlはconcat関数をサポートしています)。

問題解決のアイデア:

問題解決コード:

select CONCAT(e.last_name,' ',e.first_name) as 'Name'
from employees as e;

キーポイントのまとめ:

  • 主にconcat関数の使用法を調査します。concat関数の機能は次のとおりです。複数の文字列を1つの文字列に連結します。構文:concat(str1、str2、...)返される結果は、接続パラメータによって生成された文字列です。パラメータはnull、戻り値はnullです。

質問5(難易度:簡単)

トピックは最初に次のステートメントを実行しました。

 ライティング要件:

テーブルアクターバッチの場合、次のデータを挿入します(2つの挿入ステートメントはあり得ません!)

問題解決コード:

insert into actor 
VALUES(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
      (2,'NICK','WAHLBERG','2006-02-15 12:34:33');

比較の要約:

  • 主に、データを挿入するための挿入の使用法を調べます。
    方法1:テーブル名に挿入(フィールド名、...)values(値1、...);
    方法2:テーブル名に挿入set field = value、field = value 、..。;
  • モード1は、一度に複数の行の挿入をサポートします。構文は次のとおり です。テーブルに挿入name(field name、..)values(value、..)、(value、...)、...;そしてサブクエリをサポートします、構文は次のとおりです。テーブル名クエリステートメントに挿入します。

おすすめ

転載: blog.csdn.net/Inochigohan/article/details/122630617