hyeonga_code

Database_73_SQL FUNDAMENTALS_실습 2 본문

Oracle Database

Database_73_SQL FUNDAMENTALS_실습 2

hyeonga 2023. 8. 25. 06:59
반응형


    -- Practice 2

-- EMPLOYEES 테이블에서 이름이 "Ki" 또는 "Ko"로 시작하는 모든 사원을 검색하는 query 를 작성
SELECT last_name 
FROM employees
WHERE REGEXP_LIKE (last_name, '^K(i|o).');



-- LOCATIONS 테이블의 STREET_ADDRESS 열에서 공백을 제거하여 표시하는 query 를 작성
    -- "Street Address"를 열 머리글로 사용
SELECT regexp_replace(street_address, ' ', '') AS "Street Address"
FROM locations;



-- LOCATIONS 테이블의 STREET_ADDRESS 열에서 "St"를 "Street"로 대체하여 표시
    -- 이미 "Street"가 있는 행에 영향을 주지 않도록 주의하십시오. 영향을 받는 행만 표시
SELECT regexp_replace (street_address, 'St$', 'Street')
FROM locations
WHERE regexp_like (street_address, 'St');



-- contacts 테이블을 생성하고 해당 전화 번호가 표준 형식으로 데이터베이스에 입력되도록 
    -- 형식 마스크 (XXX) XXX-XXXX 를 적용하기 위해 p_number 열에 check 제약 조건을 추가
CREATE TABLE contacts(
    l_name VARCHAR(20),
    p_number VARCHAR(20),
    CONSTRAINT p_number_format
    CHECK (REGEXP_LIKE( p_number, '^\(\d{3}\) \d{3}-\d{4}$'))
    );
    /*
    Table CONTACTS이(가) 생성되었습니다.
    */
    
-- INSERT 문을 실행하여 다음 7 개의 전화 번호를 contacts 테이블에 삽입
    -- 어떤 번호가 추가되었습니까? 처음 두 개의 INSERT 문은 c_contacts_pnf 제약 조건을 따르는 형식을 사용하지만, 
    -- 나머지 문에서는 CHECK 제약 조건 오류가 발생합니다.
INSERT INTO contacts VALUES ('A', '(650) 555-5555');
    /*
    1 행 이(가) 삽입되었습니다.
    */
INSERT INTO contacts VALUES('B', '(215) 555-3427');
    /*
    1 행 이(가) 삽입되었습니다.
    */
    
    -- 오류
INSERT INTO contacts VALUES('C', '650 555-5555'); 
INSERT INTO contacts VALUES('D', '650 555 5555');
INSERT INTO contacts VALUES('E', '650-555-5555');
INSERT INTO contacts VALUES('F', '(650)555-5555');
INSERT INTO contacts VALUES('G', ' (650) 555-5555');

SELECT * FROM contacts;


-- 문자열 gtctcgtctcgttctgtctgtcgttctg 에서 DNA 패턴 ctc 의 발생횟수를 찾는 query 를 작성
    -- Alias Count_DNA 를 사용합니다. 대소문자는 구분하지 않습니다. 이 함수는 입력 문자열에서 패턴 일치가 발견되는 횟수를 반환
SELECT REGEXP_COUNT('gtctcgtctcgttctgtctgtcgttctg', 'ctc') AS Count_DNA
FROM dual;

반응형