SQL Day 5 CRUD、ウィンドウ関数、トランザクション
復習Day 4
いつ
1.今日学んだこと
CRUD(作成、クエリー、変更、削除)について学習しました.最後に,ゲーム時の保存,最後の保存ポイントへの復帰など,より使いやすいウィンドウ関数を学習した.
2.わかりにくい部分
1)対象
自動コミットが有効になっている場合、各文は自動的にコミットされます.無効な場合は、コミット前にrollbackを使用してデータを復元できます.
a)START TRANSACTION,SAVEPOINT(中間記憶起点の作成)
自動コミットがアクティブなときにトランザクションを開始します.やった場合は一時的に無効になります.rollbackまたはcommitを実行する前に、すべての文を組み合わせて「保存」(commit)、「リカバリ」(rollback)で処理できます.中間貯蔵の開始点を確立することもできます.(savepoint)中間記憶起点aに戻りたい場合は、ROLLBACK TO SAVEPOINT a」を使用します.そのまま反映しても大丈夫なら、「COMMIT」でTrack Sectionを終了すればいいです.select @@autocommit; #기본이 활성화 상태
set autocommit = 0; #비활성화
set autocommit = 1; #활성화
start transaction;
delete from emp_tran1
where emp_no >= 1006;
update emp_tran1
set salary = 0
where salary is null;
rollback; -- 여기까지 다시 자동커밋 활성화
-- savepoint 활용
start transaction;
savepoint a;
delete from emp_tran1
where salary is null;
savepoint b;
delete from emp_tran1
where emp_name = '브래드피트'
order by emp_no
limit 1;
rollback to savepoint b; -- b전까지로 이동
3.覚えておきたい部分
1)差別、
A)デフォルトフォーマットの作成、変更、削除
a) CREATE
1)対象
自動コミットが有効になっている場合、各文は自動的にコミットされます.無効な場合は、コミット前にrollbackを使用してデータを復元できます.
a)START TRANSACTION,SAVEPOINT(中間記憶起点の作成)
自動コミットがアクティブなときにトランザクションを開始します.やった場合は一時的に無効になります.rollbackまたはcommitを実行する前に、すべての文を組み合わせて「保存」(commit)、「リカバリ」(rollback)で処理できます.中間貯蔵の開始点を確立することもできます.(savepoint)中間記憶起点aに戻りたい場合は、ROLLBACK TO SAVEPOINT a」を使用します.そのまま反映しても大丈夫なら、「COMMIT」でTrack Sectionを終了すればいいです.
select @@autocommit; #기본이 활성화 상태
set autocommit = 0; #비활성화
set autocommit = 1; #활성화
start transaction;
delete from emp_tran1
where emp_no >= 1006;
update emp_tran1
set salary = 0
where salary is null;
rollback; -- 여기까지 다시 자동커밋 활성화
-- savepoint 활용
start transaction;
savepoint a;
delete from emp_tran1
where salary is null;
savepoint b;
delete from emp_tran1
where emp_name = '브래드피트'
order by emp_no
limit 1;
rollback to savepoint b; -- b전까지로 이동
3.覚えておきたい部分
1)差別、
A)デフォルトフォーマットの作成、変更、削除
a) CREATE
create table 테이블명(
컬럼명1 컬럼타입 not null(null 값 허용하지 않는 경우) primary key -- option 1,
컬럼명2 varchar(30) (기본이 null값 허용이다),
컬럼명3 date,
primary key(pk로 쓸 컬럼명) --option2
);
-- INSERT 문으로 데이터 입력
-- 단일문 입력
insert into 테이블명(컬럼명1,컬럼명2) -- 모든 컬럼에 맞춰 입력시 컬러명은 생략가능
values(1001, '티모시살라메','2022-04-08', 2200);
-- 여러문 입력
insert into 테이블명 values
(1007, '엠마 왓슨','2022-04-01', 2200),
(1008, '레오나르도 디카프리오','2022-04-05', 3300),
(1009, '호아킨 피닉스','2022-04-05', 4400);
-- 다른 테이블을 조건에 맞게 입력
insert into 테이블1 (컬럼1,컬럼2)
select 컬럼1,컬럼2 -- 다 넣을 거면 위 컬럼명은 생량 select절에는 *
from 테이블2
where emp_no in (1001, 1002); -- 조건
-- 변형하여 입력하기
insert into 테이블1 (컬럼1,컬럼2)
select emp_no + 10 ,컬럼2 -- 사번을 10씩 더해서 입력한다
from 테이블2
where emp_no > 1011;
b) ALTER, UPDATE
select文なしで変更すると、MySQLでエラーが発生します.
個別の設定で使用できますが、データを保護するためにマッピングします.
-- PK 설정
alter table 테이블명
add constraint primary key (컬럼명);
-- FK 설정
alter table 테이블명
add foreign key(컬럼명1) references 부모 테이블명1(컬럼명3),
add foreign key(컬러명2) references 부모 테이블명2(컬럼명4);
-- 기존 데이터 수정
update 테이블1 a
set a.컬럼1 = '값1'
a.컬럼2 = '값2'
where 조건;
-- 기존 데이터 있으면 수정 없으면 새로 만듦
insert into 테이블1
select *
from 테이블2 a
where 조건
on duplicate key update 컬럼1 = a.컬럼2;
-- NULL 값 처리
update 테이블1 a, 테이블2 b
set b.컬럼1 = ifnull(b.컬럼1, 0);
C) DELETE
-- 단일 테이블 삭제
drop table 테이블1;
-- 다중 테이블 삭제
delete a, b
from(using) 테이블1 a, 테이블2 b
where a.pk컬럼1 = b.pk컬럼2;
2)よく使われているようで、
A)温德乌相关数
--기본 형태
SELECT
함수 over (PARTITION BY 묶을 컬럼1 ORDER BY 1) 별칭
#묶을 필요 없다면 파티션없이 순서만 나타내도 된다)
from 테이블1
NameDescriptionROW NUMBER()ウィンドウでは、CUME DIST()積算分布がRANK()ウィンドウに戻る順にDENSE RANK()積算順序が戻り(通常のRANKとの違いは共通順序処理が異なる)、共通順序が同じ行とみなされます.例えば、3位が共通である場合、RANKは1、2、3、3、および5位を返し、DENSE RANKは1、2、3、3、および4を返す.PERCENT RANK()パーセントは(上位)LAG(基準列、1(デフォルト)、ない場合は入力値(nullデフォルト)が現在のlowの真上(デフォルト)、1以外のN値を返す場合はN値の上のlow値を返します.LEAD(標準列、1(デフォルト)、ない場合はインポート値(空デフォルト)、現在の最小値の直下(デフォルト)、指定範囲内、最初の最小値はFIRST VALUE()、指定範囲内、最後の最小値はNTH VALUE(列名、n)、N番目の最小値はB)ビュー
a)作成、使用、修正、削除
create (or replace) view 새 테이블명 as
select * from 테이블1 where 조건;
-- 뷰 수정하기
alter view 뷰로 만든 테이블명 as
select * from 테이블1 where 조건;
-- 뷰 삭제하기
drop view 뷰로 만든 테이블명;
Reference
この問題について(SQL Day 5 CRUD、ウィンドウ関数、トランザクション), 我々は、より多くの情報をここで見つけました https://velog.io/@sungrok7/SQL-Day-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol