문자열에서 와일드카드(%)를 사용하여 원하는 문자가 포함된 자료를 쉽게 검색할 수 있다.
LIKE 연산자는 대소문자를 구분한다!!
LIKE는 해당 문자를 포함한 자료를 검색하지만, NOT LIKE를 사용하면 해당 문자를 포함하지 않는 데이터를 조회할 수 있다.
like 는 in과 같이 사용하는 것이 불가능하다.
-- -- 실습하기 위해 테이블에 열을 새로 추가해서 진행한다.
ALTER TABLE employees
ADD jubun varchar2(13);
-- Table EMPLOYEES이(가) 변경되었습니다.
-- employees 테이블에서 여자 1990년생과 남자 1991년생의 사원들만
-- 사원번호, 사원명, 주민번호를 나타내세요.
SELECT
employee_id AS "사원번호",
first_name || ' ' || last_name AS "사원명",
jubun AS "주민번호"
FROM employees
WHERE
jubun LIKE '90____2%' OR
jubun LIKE'91____1%';
-- employees 테이블에서 first_name 컬럼의 값이 'j'로 시작하는 사원들만
-- 사원번호, 이름, 성, 기본급여를 나타내세요.
SELECT
employee_id,
first_name,
last_name,
salary
FROM employees
WHERE first_name LIKE 'J%'; -- 대소문자 구분
-- employees 테이블에서 first_name 컬럼의 값이 's'로 끝나는 사원들만
-- 사원번호, 이름, 성, 기본급여를 나타내세요.
SELECT
employee_id,
first_name,
last_name,
salary
FROM employees
WHERE first_name LIKE '%s'; -- 대소문자 구분
-- employees 테이블에서 first_name 컬럼의 값중에 'ee'라는 글자가 들어있는 사원들만
-- 사원번호, 이름, 성, 기본급여를 나타내세요.
SELECT
employee_id,
first_name,
last_name,
salary
FROM employees
WHERE first_name LIKE '%ee%';
-- employees 테이블에서 first_name 컬럼의 값중에 'ee'가 두개 이상 들어있는 사원들만
-- 사원번호, 이름, 성, 기본급여를 나타내세요.
SELECT
employee_id,
first_name,
last_name,
salary
FROM employees
WHERE first_name LIKE '%e%e%';
-- employees 테이블에서 last_name 컬럼의 값이 첫글자는 'F' 이고 두번째 글자는 아무거나 이고
-- 세번째 글자는 소문자 'e' 이며 4번째 부터는 글자가 있든지 없든지 상관없는 사원들만
-- 사원번호, 이름, 성, 기본급여를 나타내세요.
SELECT
employee_id,
first_name,
last_name,
salary
FROM employees
WHERE last_name LIKE 'F_e%';
CREATE TABLE 테이블명(컬럼명1 유형, 컬럼명2 유형);
CREATE TABLE
tbl_watch
(watchname Nvarchar2(10),
bigo Nvarchar2(100));
-- 가변길이 문자열 varchar2(10) 은 최대 10 byte 까지만 허용.
-- 한글자가 2byte므로 글자수 제한을 계산해야 해서 불편
-- Nvarchar2(10) 은 최대 10 글자수로, 10 글자 까지만 허용 (byte 가 아님!!)
--Table TBL_WATCH이(가) 생성되었습니다.
ALTER TABLE 테이블명
ADD 컬럼명 유형;
ALTER TABLE employees
ADD jubun varchar2(13);
-- Table EMPLOYEES이(가) 변경되었습니다.
INSERT INTO 테이블명(컬럼명1, 컬럼명2)
VALUES (값1, 값2)
입력할 열(칼럼)의 개수와 값의 개수를 동일하게 입력/데이터 타입 일치시킴
INSERT INTO
tbl_watch(watchname, bigo)
VALUES
('금시계', '순금 99.99% 함유 고급시계');
-- 1 행 이(가) 삽입되었습니다.
commit; -- 파일(DISK) 에 적용(저장) 시킨다. (!!) 데이터를 입력해 줄때도 반드시 커밋해줘야 한다.
특정 행 삭제
DELETE FROM 테이블명
WHERE 삭제할 데이터 조건;
모든 행 삭제
DELETE FROM 테이블명
--------------- 특정행 삭제하기 ------------------------------------
commit; -- 커밋 완료
SELECT *
FROM tbl_watch;
DELETE FROM tbl_watch
WHERE watchname = '은시계';
commit; -- 삭제도 마찬가지로 커밋해주기
---------------------- 모든행 삭제하기 --------------------
DELETE FROM tbl_watch; --모든 행 삭제, 행은 없고 열만 남은 상태가 된다.
rollback; --롤백 완료. 커밋해주지 않은 상태에서 되돌릴 수 있다.
-- tbl_watch 테이블에서 bigo 컬럼에 99.99% 라는 글자가 포함되어있는 행만 출력
SELECT *
FROM tbl_watch
WHERE bigo LIKE '%99.99%'; -- '%99.99%%' 로 입력하면 99.99점 까지도 같이 출력함. 틀린 풀이
SELECT *
FROM tbl_watch
WHERE bigo LIKE '%99.99\%%' ESCAPE '\';
-- escape 문자로 '\' 을 주었으므로 '\' 다음에 나오는 % 1개만
-- wild character 기능에서 탈출시켜 버리므로 % 는 진짜 글자 퍼센트(%) 로 된다.
SELECT *
FROM tbl_watch
WHERE bigo LIKE '%99.99_%%' ESCAPE '_';
-- escape 문자로 '_' 을 주었으므로 '_' 다음에 나오는 % 1개만
-- wild character 기능에서 탈출시켜 버리므로 % 는 진짜 글자 퍼센트(%) 로 된다.
-- escape 문자는 2,3 등의 숫자나 a, b 등의 알파벳, ㅎ,ㄱ 등의 한글도 가능하다.
-- 하지만 숫자나 문자의 사용은 지양하고 주로 특수기호를 사용한다.(\)