IT공부

MSSQL사용, 뷰(VIEW)
뷰(VIEW) : 가상의 테이블 - 테이블과 동일하게 보이지만 실제 행 데이터를 가지고 있지 않음 - 테이블과 비슷한 역할을 하도록 SELECT 문을 이용하여 만드는 개체 - 개체가 생성되기 때문에 한번 생성하면 테이블이라고 생각하고 사용해도 될 정도로 (사용자 입장에서는 테이블과 뷰는 동일하게 취급된다.) - 뷰의 장점 1) 보안에 도움이 됨. 주민등록번호, 계정, 금융정보 2) 복잡한 쿼리를 단순화 시킬 수 있다. (WITH CTE와 유사) - 뷰의 단점 1) 일반 쿼리문보다 속도가 약간 느려질 수 있다.(과거) 2) 별도로 뷰를 관리해야 하므로 관리 차원에서 부담이 늘어난다. -- 뷰를 수정할 수 없는 경우 -- 집계 함수를 사용한 뷰 -- UNION ALL, CROSS JOIN 등을 사용한 뷰 -..

MSSQL사용, 테이블 정보 확인
-- 테이블 정보 확인 EXEC SP_HELP userTbl; SELECT * FROM INFORMATION_SCHEMA. TABLES; SELECT * FROM SYSOBJECTS; -- 키 확인 SELECT * FROM INFORMATION_SCHEMA. TABLE_CONSTRAINTS; SELECT * FROM INFORMATION_SCHEMA. TABLE_CONSTRAINTS WHERE TABLE_NAME='userTbl'; -- sysobjects을 이용하여 제약조건, 테이블, 키 정보들을 알 수 있다. SELECT name, TYPE FROM SYSOBJECTS WHERE TYPE='D' -- 제약조건 SELECT name, TYPE FROM SYSOBJECTS WHERE TYPE='U' --..

MSSQL사용, 테이블과 뷰
-- 테이블 생성 : []는 생략 가능을 의미함 CREATE TABLE [스키마_명].테이블_이름 ( 필드명1 데이터형 [속성], 필드명2 데이터형 [속성], 필드명3 데이터형 [속성] ); -- 기본적인 틀 구성 --추가 옵션 적용 : NULL, NOT NULL (기본 값은 NULL) CREATE DATABASE tableDB; USE tableDB; CREATE TABLE userTbl ---회원 테이블 ( userID char(8) NOT NULL, --사용자 아이디 name nvarchar(10) NOT NULL, --이름 birthYear int NOT NULL, --출생년도 addr nchar(2) NOT NULL, --지역(경기, 서울, 경남) mobile1 char(3) NULL, --휴대..

MSSQL사용, 처리 속도 비교 테스트(대용량 테이블 삭제)
--1. 대용량의 샘플 테이블 3개 생성(AdventureWorks에 약 12만건 data가 있는 테이블 복사) SELECT * INTO bigTbl1 FROM AdventureWorks.Sales.SalesOrderDetail; SELECT * INTO bigTbl2 FROM AdventureWorks.Sales.SalesOrderDetail; SELECT * INTO bigTbl3 FROM AdventureWorks.Sales.SalesOrderDetail; SELECT * FROM bigTbl1; SELECT * FROM bigTbl2; SELECT * FROM bigTbl3; --2. 성능 측정을 위해서 SSMS 도구 -> [SQL Server 프로파일러] 실행 -> 추적이름 '삭제비교' -> 템..

MSSQL사용, CTE
- CTE는 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되던 것을 대신할 수 있으며, 더 간결한 식으로 보이는 장점이 있음. - CTE는 비재귀적(Non- Recursive) CTE와 재귀적(Recursive) CTE 두 가지 가 있다. * 비재귀적 CTE : 단순한 형태로 복잡한 쿼리 문장을 단순화 시키는 데 사용하기에 적합. --1) 비재귀적(Non-Recursive) CTE --A. 사용자 별 총 구매액 select userid '사용자', sum(price*amount) '총구매액' from buyTbl group by userid; --B. 사용자 별 총 구매액이 많은 사용자 순서로 정렬 출력 select userid '사용자', sum(price*amount) '총구매액' from bu..

C언어. 로또 번호 생성기
#include #include #include int main(void) { int rotto[6] = { 0 }; int n = 0, check = 0; srand((unsigned)time(NULL)); printf("로또 번호 생성기\n"); printf("▶계속하려면 아무키나 입력하세요\n\n\n"); printf("────── [ 금주의 추천 번호 ] ──────\n"); for (int i = 0; i < 6; i++) { // 랜덤함수 발생 n = 1 + rand() % 45 + 1; for (int y = 0; y < i; y++) { // 배열 a의 y번째 인덱스의 값이 발생된 난수의 값과 같을 때 (즉 중복) if (rotto[y] == n) { i -= 1; // i의 값을 -1 해..

C언어. 메뉴 주문시스템
#include #define _CRT_SECURE_NO_WARNINGS void sandwich_price(int n); void coffee_price(int n); int main(void) { int menu, cof, sand; printf("============[메뉴]=============\n"); printf(" 1. 커피\n"); printf(" 2. 샌드위치\n"); printf(" 0. 종료\n"); printf("===============================\n\n"); printf("메뉴를 선택하세요: "); scanf_s("%d", &menu); while (1) { if (menu == 1) { printf("------------[커피]-------------\n..