본문 바로가기
데이터베이스

SQL 데이터 수정,삭제,검색,연산

by 코낄2 2023. 9. 19.

1. 데이터 수정과 삭제

데이터 수정하기
update 테이블명 set 필드명1 = 값1, 필드명2 = 값2 ...;
(위에 코드는 필드 전체 값이 변경되기 때문에 거의 쓸 일이 없다. 따라서 조건절을 달아준다.)
update 테이블명 set 필드명1 = 값1, 필드명2 = 값2 ... where 조건절;
데이터 삭제하기
delete from 테이블명; (거의 쓸 일 없음)
delete from 테이블명 where 조건절;

- 수정과 삭제 예시

update word set lev = 2 where eng = 'orange';
-- where 절 뒤에서 나오는 = 는 대입이 아닌 같다(==) 라는 뜻.  
update word set lev = 2;  
-- You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences

위 예시에서 두번째 수정 코드는 오류가 발생했습니다. safe 모드에서 전체 데이터를 한번에 바꾸려고 했기 때문입니다. 하지만 상황에 따라 safe 모드를 해제하고 전체 데이터를 한번에 바꿔야 할 때도 있습니다.

✔ 일시적인 safe모드 해제

set sql_safe_updates = 0;
영구적인 safe모드 해제

Workbench Preferences에서 SQL Editor -> Safe update 체크 해제 후 workbench 재시작 > 영구적 safe모드 해제

select * from member;  
-- 모든 유저에게 50point를 더해주기  
update member set point = point + 50;  
-- id가 'orange'인 회원에 대해 우편번호는 '12345', 주소1은 '서울시 서초구', 주소2는 '양재동',주소3dms 'XX아파트 201동'  
update member set zipcode = '12345', address1 = '서울시 서초구', address2 = '양재동', address3 = 'XX아파트 201동' 
where userid = 'orange';
delete from word where eng = 'orange';  
-- word 테이블에 'orange' 레코드 삭제

2. 데이터 검색하기

select 필드명1, 필드명2, ... from 테이블명;
select eng from word;  
select eng, kor from word;  
select kor, eng from word;
select 100;  
select 100 + 50;
  • * : 모든 컬럼 가져오기/ 별표는 많은 부하를 주기 때문에 실제 업무에는 가능하면 안쓰는게 좋다.
    select * from word; -> select eng, kor, lev from word;

3. SQL 연산자

1. 산술 연산자: +, -, *, /, mod(나머지 연산자), div(몫)

2. 비교 연산자: =(같다), <, >, >=, <=, <>(다르다)

3. 대입 연산자: =

4. 논리 연산자: and , or, not, xor

5. 기타 연산자
• is:
양쪽의 피연산자가 모두 같으면 true, 아니면 false

between A and B: 값이 A보다는 크거나 같고, B보다는 작거나 같으면 true 아니면 false
• in: 매개변수로 전달된 리스트에 값이 존재하면 true 아니면 false
• like: 패턴으로 문자열을 검색하여 값이 존재하면 true 아니면 false

4. 별명 붙이기

select 100 + 50 as '덧셈'; -- 따옴표를 사용하는 이유는 띄어쓰기가 있을 수 있기 때문  
select 100 + 50 as '덧셈 연산';  
select 100 + 50 '덧셈'; -- as 생략가능  
select eng '영단어', kor '뜻' from word;

*** null과 ' '

select null;  -- 데이터가 없음, insert가 되지 않음.
select ''; -- 해당 셀에 ''데이터가 삽입된 것.
select 100 + null ; -- 결과: null, 연산할 수 없음
select 100 + ''; -- 결과:100, 연산할 수 있음

***null인 값을 가져오려고 할 때 비교 연산자가 아닌 is로 조건을 입력해줘야한다.

select * from member;
select * from member where zipcode = null; -- X 오류
select * from member where zipcode is null;
select * from member where zipcode is not null;

'데이터베이스' 카테고리의 다른 글

SQL 문자열 함수/Union/View  (0) 2023.09.20
MySQL join과 데이터 (비)정규화  (0) 2023.09.20
MySQL 조건절과 그룹함수  (0) 2023.09.20
SQL 테이블 생성과 데이터 삽입  (0) 2023.09.18
데이터베이스(MySQL)  (0) 2023.09.18