프로그래밍 언어/SQL
[SQL] 보안, 권한 부여 grant, revoke, role
개념db 관리자는 db에 대한 접근 권한을 갖지 못한 사용자로부터 데이터를 안전하게 보호할 의무가 있음DBMS에서 제공하는 보안- 허가받지 않는 사용자, 즉 권한이 없는 사용자로부터 데이터의 접근을 사전에 차단 db에서의 사용 권한)사용자가 db 내의 특정 객체에 대해 특정 연산을 실행할 수 있는 권리- 특정 객체 : 테이블, 필드, 뷰, 저장 프로시저 등 db의 구성 요소 권한 제어가 가능한 연산의 종류- 데이터 접근 관련 연산 (DML)예) SQL의 select, insert, delete, update 등- 스키마 관련 연산 (DDL)예) create table, alter table, drop table, create index 등권한에 따른 사용자 분류db 관리자 (DBA)- db 내의 모든 객..
[SQL] UNION / UNION ALL / UNION DISTINCT
UNION다른 데이터를 합쳐서 보여주는 것이다. syntax :SELECT column1, column2, column3FROM table1UNIONSELECT column1, column2, column3 FROM table2UNIONSELECT column1, column2, column3FROM table3; 일반적으로 UNION 이라고 선언하면 UNION DISTINCT 라고 보면 된다 즉, 중복된 데이터를 제외하고 데이터를 합침. 위의 예시에서 UNION 대신 UNION DISTINCT 라고 해도 결과는 같음.UNION 하는 컬럼의 명이 같지 않아도 되나,SELECT하는 컬럼의 수와 각각의 데이터형의 순서 동일해야 함.만약, 첫번째 테이블에서 int, string, string 으로 컬럼을 ..
[SQL] CASE WHEN 조건 여러개 (다중 조건, 다중 칼럼)
CASE WHEN 조건 여러개 부여 (다중 조건)CASE 표현식에서 여러개의 조건을 부여하기 위해서는 WHEN ~ THEN 구문을 반복해서 사용하면 된다.WHEN~THEN 구문을 처음부터 순차적으로 값을 비교하여 일치하는 조건이 있으면 THEN 이후 값을 반환 후 더 이상 값을 비교하지 않고 종료한다.. 일치하는 조건이 없을 경우 NULL을 반환한다.SELECT ename , job , CASE WHEN job = 'ANALYST' THEN 'CASE 1' WHEN job = 'MANAGER' THEN 'CASE 2' WHEN job = 'SALESMAN' THEN 'CASE 3' END AS case_result FROM emp WH..
[SQL] CASE WHEN 표현식 사용법 (DECODE, IF)
기본 사용법if문 방식비교 연산자 (>,), NULL 연산자 (IS NULL, IS NOT NULL)을 사용하여 조건을 부여할 수 있으며, 논리 연산자 (AND, OR)를 사용하여 여러 개의조건을 부여할 수 있다.ELSE 부분은 생략이 가능하며 생략할 경우 조건에 맞지 않으면 NULL을 반환한다.SELECT employee_id , first_name , job_id , CASE WHEN job_id = 13 THEN 'CLERK' WHEN job_id = 14 THEN 'MANAGER' ELSE 'N/A' END AS [job_title] FROM employees WHERe department_id IN (1, 3) switch..
[SQL] 별칭 (Alias) 활용하기
예약어는 AS 1. 칼럼 (column)에 별칭 사용하기-- mem_id, addr 두 가지 칼럼(열)의 이름 바꾸는 방법(별칭)SELECT mem_id AS "아이디", addr AS "주소" FROM member;-- 결과: mem_id은 아이디로 addr은 주소로 칼럼의 이름이 바뀌게 된다. 2. 테이블 (table)에 별칭 사용하기-- member라는 테이블 이름바꾸기(별칭)SELECT * FROM member as "개인정보";-- 결과: member 테이블의 이름이 개인정보로 바뀌게 된다. 기억해야 하는 점) 1. 별칭을 지정해줄 때 띄어쓰기가 들어간다면, 큰 따옴표 (")로 묶어주기 debut_date 칼럼(열)의 이름을 "데뷔 일자"로 바꾸기(별칭)잘못된 예시SELECT debut_dat..
[SQL] 피봇에 대해 알아보자 (PIVOT, UNPIVOT)
1. PIVOT (Oracle, SQL Server Only)피봇 연산자는 행으로 나열되어 있는 데이터를 열로 나열하여 보기 쉽게 가공하는 것이다. 시간순으로 차곡차곡 쌓이는 값이나 대규모 인원의 정보는 세로로 길어 한 눈에 알아보기 어렵다. 피봇은 세로행을 가로 열로 가독성을 향상한다.SELECT 필드목록 FROM 테이블PIVOT(집계함수 FOR 대상필드 IN (필드값 목록)) 별명 대상 필드의 값 목록을 새로운 열로 만들고 각 열에 대해 집계 함수를 호출하여 결과셋을 만든다./* Oracle */SELECT * FROM tSeasonPIVOT (MAX(sale) FOR season IN ('봄', '여름', '가을', '겨울')) pvt;/* SQL Server */SELECT * FROM tSeas..
MS SQL IDE (Server Management Studio) 설치 및 오류 해결
SQL Server 설치우선은 아래 사이트에 들어가 서버부터 다운로드 한다SQL Server Downloads | Microsoft Basic을 선택해준다 끝나면 아래 창이 뜰텐데 Close 누른다SQL IDE 설치Download SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn오류 해결일단은 인스턴스가 잘 실행 되고있는지 확인한다 접속시도 해보지만 아래와 같이 오류가 뜬다 53은 이름이 달라서, 0은 신뢰된 SSL가 없기 때문 Server type Database Engine으로 설정해주고Server name은 현재 컴퓨터 이름으로 하면 된다 아래와 같이 뜨면 정상적으로 설치된거다
Visual Studio SQL 설치 및 사용 방법
데이터 스토리지 및 처리에서 SQL Server Data Tools을 설치한다 설치가 완료 됐으면 보기에서 개체 탐색기를 띄워준다 위 localdb 가 두개 뜰텐데 로컬 서버가 두개여서이다, 쿼리문을 작성하고 난 뒤 선택해주면 된다 MSSQLLocalDB로 선택했다.아래 쿼리문을 작성한 뒤 실행시키면 위에 봤듯이 dbo.Traffic이 생성된다create database dbTest;use dbTest;create table Traffic( number int not null, line varchar(5), hour int, car varchar(10), traffic int); select * from dbo.Traffic; 속성을 조회할려면 dbo.Traffic 두번 클릭해주면 아래와 같이 뜬다
[SQL] count 함수는 null을 포함할까?
count(컬럼명) null 값을 제외하고 countcount(*) null 값을 포함하여 count 빈 문자열은 모두 포함빈 문자열을 count에 포함하지 않으려면 빈 문자열을 null로 바꾼 후 count 실행 count(distinct(컬럼명)) null을 제외한 중복되지 않는 값만 count [SQL] sql에서 count()에 null.. : 네이버블로그 (naver.com)
[SQL] foreign key(외래키) 추가, 삭제, 확인 방법
추가alter table [추가할테이블명] add constraint [제약조건명] foreign key(컬럼명)references [부모테이블명] (PK컬럼명) [ON DELETE CASCADE / ON UPDATE CASECADE]; ON DELETE CASCADE외래 키에서 참조하는 키가 포함된 행을 삭제하려고 하면 해당 외래 키가 포함되어 있는 모든 행도 삭제 ON UPDATE CASCADE외래 키에서 참조하는 키 값이 포함된 행에서 키 값을 업데이트 하면 해당 외래 키를 구성하는 모든 값도 키에 지정된 새 값으로 업데이트 되도록 지정삭제alter table [테이블명] drop foreign key [제약조건명];확인테이블 기준 확인select * from information_schema.ta..