実行結果が以下となるようなSQLについて、すべて答えなさい。
department | avg
------------+-----
開発 | 27
--- 選択肢 ---
A. id | name
----+------
1 | aaa
3 | ccc
2 | bbb
4 | ddd
B. id | name
----+------
3 | ccc
2 | bbb
4 | ddd
C. id | name
----+------
2 | bbb
3 | ccc
4 | ddd
D. LIMIT に全体行数より大きい値が設定されているため、エラーが出力される。
TRUNCATE 文
+------------------------------------------+
| セッション1 =# CREATE SEQUENCE test_seq; |
| セッション1 =# SELECT nextval('test_seq'); |
| nextval |
| --------- |
| 1 |
| (1 row) |
| セッション2 =# SELECT currval('test_seq'); |
+------------------------------------------+
(tx1) BEGIN;
(tx2) BEGIN;
(tx1) SELECT * FROM test;
id
----
1
(tx1) INSERT INTO test VALUES (2);
(tx2) SELECT * FROM test;
id
----
1
(tx1) UPDATE test SET id=3 WHERE id = 1;
(tx2) SELECT * FROM test;
id
----
1
(tx1) COMMIT;
(tx2) SELECT * FROM test;
id
----
2
3
json型はインデックスをサポートしている。
異なるメジャーバージョン間での複製に利用できる。
複製対象のテーブルはパブリッシャ側はデータ更新できるが、サブスクライバ側はデータ更新できない。
DROP ROWS FROM test; を実行すれば良い。
TRUNCATE test; を実行しても良く、この方が高速である。
ここで、dept表のname列をemp表のdept_name列にコピーするため、次のSQLを実行する。
update emp set dept_name = (select name from dept where id = emp.dept_id);
最も適切な説明を1つ選びなさい。
dept表のid列に重複がある場合、updateの結果は予測できない。
構文エラーで実行できない。
col1, col2...で指定される列リストより、val1, val2...で指定する値リストの方がデータ個数が多いときはエラーになる。
col1, col2...で指定される列リストより、val1, val2...で指定する値リストの方がデータ個数が少ないときは、それらの列についてNULLを指定したものとみなされる。
=> select * from emp;
emp_id | emp_name | dept_id
--------+----------+---------
1 | イチロー | 1
2 | 菊池雄星 | 1
3 | 松井秀喜 | 2
4 | 松坂大輔 | 3
(4 行)
=> select * from dept;
dept_id | dept_name
---------+----------------
1 | マリナーズ
2 | ヤンキース
3 | レッドソックス
(3 行)
これらのテーブルを結合して従業員名と部署名が表示された一覧表を作りたい。次のSELECT文の空欄に入るキーワードは何か?
USING
WITH
このテーブルについて、select a b from test; を実行したときの出力はどのようになるか。
b
---
b
上記のいずれでもない。
ROLLBACK を実行すると、SAVEPOINT 以前のものも含めて、トランザクション内の更新はすべて破棄される。
COMMITを実行すると、SAVEPOINT以前、以降両方の更新がすべて確定されてデータベースに書き込まれる。
create table dt_sample(pk integer primary key, dt1 date, dt2 date, ti1 time, ts1 timestamp);
このテーブルについて以下の演算をしたときの結果の説明として適切なものを3つ選びなさい。
select dt1 + ti1 from dt_sample; を実行すると、dt1の日付とti1の時刻を組み合わせた日時が返される。
replace関数で文字列中の文字の置換を行い、例えばすべての a を A に変更する、といったことができる。
create table sample(val int);
insert into sample(val) values(null), (1), (2), (3), (4), (5);
select count(*), count(val), sum(val), avg(val), max(val) from sample;
以下から正しいものをすべて選びなさい。
max(val)の値はNULLである。
create function sample_func(x integer) returns integer as $$
declare
begin
raise info 'Hello World!';
return x * 2;
end;
$$ language plpgsql;
定義されたプログラムについて適切な説明を3つ選びなさい。
実行すると例外が発生して異常終了する。
create table testa(id integer primary key, val varchar) ;
create function testfunc(x integer) returns varchar language sql as $$
select val from testa where id = x $$ ;
次のSELECT文を実行するために必要な権限として最も適切なものを選びなさい。
select testfunc(1);
関数testfuncのEXECUTE権限とテーブルtestaのSELECT権限の両方がGRANTされている必要がある。
© EDUCO All Rights Reserved.