sql 기초
-
SQL 상관 서브쿼리Database 2021. 4. 19. 13:27
상관 서브 쿼리 부모 명령과 자식인 서브 쿼리가 특정 관계를 맺는 것을 상관 서브 쿼리라고 한다. 상관 서브 쿼리의 경우 부모 명령과 관계를 맺고 있기 때문에 상관 서브 쿼리는 단독 쿼리 즉, 혼자서는 실행을 할 수 없다. 설명만 보면 이해가 가지 않으므로 아래 예시와 함께 이해해보도록 하자! 앞서 DELETE 명령에 대한 서브 쿼리이다. # 상관 서브쿼리 X DELETE FROM ttt_set WHERE A = (SELECT MIN(A) FROM ttt_set); SELECT MIN(A) FROM ttt_set # 상관 서브쿼리 O UPDATE 테이블명1 SET A(열1) = "TEST" WHERE EXISTS (SELECT * FROM 테이블명2 WHERE 열2 =열1); SELECT * FROM 테..
-
SQL 서브쿼리_2Database 2021. 4. 14. 16:00
SELECT 구 + 서브쿼리 서브쿼리는 WHERE 구, SELECT 구, UDDATE의 SET구 등 다양한 구 안에서 사용이 가능하다. 문법적으로 서브쿼리는 하나의 항목으로 취급한다. 단, 문법적으로는 문제가 없어도 실행하면 에러가 발생하는 경우가 종종있는데 이는 서브쿼리가 스칼라 서브쿼리 (하나의 값만 반환하는지)에 대해 생각해볼 필요가 있으며 서브쿼리를 사용할 때는 스칼라 서브쿼리로 되어있어야한다. 즉, SELECT 구 + 서브쿼리를 지정할때 스칼라 서브쿼리가 필요하다. 각 테이블의 행의 개수를 나타내보자. SELECT (SELECT COUNT(*) FROM 테이블명) AS 별명, (SELECT COUNT(*) FROM 테이블명2) AS 별명2; 여기서 주의할점 FROM이 생략되었다는 것이다. MyS..
-
SQL GROUP BYDatabase 2021. 4. 9. 15:24
그룹화 - GROUP BY GROUP BY 구를 사용해 집계함수로 넘겨줄 집합을 그룹으로 나눌수 있다. SELECT * FROM 테이블명 GROUP BY 열1, 열2.. 아래와 같은 products 테이블을 예로 GROUP BY를 알아보자! GROUP BY select category_id from products group by category_id; select 구에 category_id 열을 지정하여 그룹화된 열의 데이터가 클라이언트로 반환된다. group by의 결과로 앞서 살펴보았던 DISTINCT (중복제거) 를 사용했을때와 같은 결과가 나온다. 이로 인해, group by 구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶이는 것을 알 수 있다. 즉 그룹화할 경우 ..
-
SQL COUNT 집계함수Database 2021. 3. 29. 13:18
SQL은 데이터베이스라는 "데이터 집합"을 다루는 언어이다. SQL은 이러한 집합을 다루는 다양한 집계함수를 제공한다. COUNT(집합) SUM(집합) AVG(집합) MIN(집합) MAX(집합) 일반적인 함수는 인수로 하나의 값을 지정하지만, 집계함수는 인수로 집합을 지정한다. 집계 함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해내는 것이다. 일반적인 함수는 하나의 행에 대하여 하나의 값을 반환하지만, 집계함수는 집합으로부터 하나의 값을 반환한다. 이처럼 집합으로부터 하나의 값을 계산하는 것을 집계라 부른다. 위와 같은 이유로 집계함수를 SELECT 구에 사용하면 WHERE 구 유/무와 관계없이 결괏값으로 하나의 행을 반환한다. COUNT SELECT COUNT FROM products; (X) ..
-
물리삭제와 논리삭제Database 2021. 3. 29. 12:11
데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 두가지로 나뉜다. 1. 물리삭제 2. 논리삭제 물리삭제 SQL DELETE 명령을 사용해 직접 데이터를 삭제하는 방식이다. 익히 알고 있는 말 그대로 데이터를 직접 지우는 방식이다. 논리삭제 삭제 플래그라는 별도의 Column을 만들고 테이블의 데이터를 직접 삭제하는 대신 SQL UPDATE 명령으로 삭제 플래그 안의 값을 변강하고 삭제 플래그로 미루어보아 삭제가 설정된 행을 제외하고 SELECT 명령을 실행하는 방식이다. 실제 데이터는 삭제하지 않고 삭제된 것 처럼 보이는 방식이다. (논리삭제에는 삭제 플래그가 아닌 여러가지의 사용 방법이 있다고 한다.) 아래의 논리삭제의 장단점은 곧 물리삭제의 장단점이다. 장점 데이터를 삭제하지 않기 때문에 ..
-
SQL UPDATE (데이터 갱신하기)Database 2021. 3. 25. 15:34
RDBMS에서는 UPDATE 명령을 사용하여 데이터를 갱신할 수 있다. UPDATE 명령은 셀 단위로 데이터를 갱신 할 수 있으며 WHERE 구로 조건을 지정하여 일치하는 행에 대해 값을 갱신할 수 있다. (DELETE와 마찬가지로 WHERE 구를 생략할 경우 테이블의 모든 행이 갱신된다!) (당연히 자료형에 맞는 값을 입력해야 한다.) UPDATE 데이터 갱신하기 UPDATE products(테이블명) SET 열명 WHERE 조건식; update products set discount_id=1 where id=75; UPDATE로 NULL 갱신하기 UPDATE products SET discount_id=NULL; 아래와 같이 NULL 값으로 갱신하는 것을 보통 NULL 초기화라 부른다. 당연히 NOT..
-
SQL DELETE(행 삭제하기)Database 2021. 3. 25. 14:10
데이터베이스는 하드디스크와 같은 저장장치에 데이터를 저장해 관리한다.따라서 저장용량에 경우 한계가 있다.(클라우드 서비스를 사용시 용량이 높아질 수록 비용이 증가하는 이유기도 하다. 물리적으로 "서버"가 필요하기 때문이다.) RDBMS에서의 데이터를 삭제해야하는 경우 행 단위 로 DELETE 명령을 수행한다.SELECT와 같이 열 단위로 지정하여 삭제 할 수는 없다. 또한, DELETE 명령 실행 후 재확인 의사를 묻지 않고 바로 적용되므로 의도치 않게 중요한 데이터를 지우지 않도록 유의해야한다.DELETE 행 삭제하기DELETE FROM genders WHERE 조건식; delete from genders where id=10;조건식을 활용하여 여러개의 (행) 데이터를 삭제할 수 있다.delete fr..
-
SQL INSERT(행 추가하기)Database 2021. 3. 25. 13:50
SELECT 명령은 질의를 하면 데이터베이스 서버가 클라이언트로 결과를 반환하는 병식으로 처리되었다. 데이터를 추가할 경우에는 이와 반대로 클라이언트에서 서버로 데이터를 전송하는 형식을 취하며 DB서버는 전송받은 데이터를 일련의 규칙 또는 사용자 정의에 따라 데이터베이스에 저장한다. INSERT로 행 추가하기 INSERT 명령은 테이블의 행 단위로 데이터를 추가한다. INSERT INTO genders VALUES(값1, 값2..) 아래와 같이 INSERT 명령은 처리 상태만 표시될뿐 SELECT 명령 처럼 결과를 출력해주지 않는다. 또한 각열에 대해 어떤 데이터를 저장할 수 있는지 확인하여 알맞은 데이터를 넣어줘야 에러가 발생하지 않는다. desc genders; INSERT 열을 지정하여 데이터 저장..