목록프로그래밍/SQL (67)
쌓고 쌓다
명시적인 변환 : 직접 함수를 사용해서 변환 암시적인 변환 : 별도의 지시 없이 자연스럽게 변환 함수를 이용한 명시적인 변환 CAST(), CONVERT() 함수를 사용하며 두 함수는 형식만 다를 뿐 동일한 기능을 갖는다. CAST ( 값 AS 데이터_형식 [ (길이) ] ) CONVERT ( 값, 데이터_형식 [ (길이) ] ) 예제 buy 테이블의 price 평균을 구했더니 실수가 나왔다. 정수로 바꿔보자. CAST(), CONVERT() SELECT CAST( AVG(price) AS SIGNED ) '평균 가격' FROM buy; SELECT CONVERT( AVG(price), SIGNED ) '평균 가격' FROM buy; CAST, CONVERT 함수 안에는 CHAR, SIGNED, UNSI..
변수 사용 SET @변수이름 = 변수의값 ; -- 변수의 선언 및 초기화 SELECT @변수이름 ; -- 변수의 값 출력 예제 SET @myVar1 = 5 ; SET @myVar2 = 4.25 ; SELECT @myVar1; -- 출력(1) SELECT @myVar1 + @myVar2; -- 출력(2) SET @txt = '가수 이름->'; SET @height = 165; SELECT @txt, mem_name FROM member WHERE height > @height; -- 출력(3) LIMIT와 함께 변수를 사용 PREPARE와 EXECUTE를 사용해야 한다. SET @count = 3; PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDE..
정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ +127 SMALLINT 2 -32,768 ~ +32,767 INT 4 약 -21억 ~ +21억 BIGINT 8 약 -900경 ~ +900경 -> tiny, small , big 정수형 테이블 예제 CREATE TABLE hongong4 ( tinyint_col TINYINT, smallint_col SMALLINT, int_col INT, bigint_col BIGINT ); 음수 범위를 제외하고 0부터 시작해 바이트 수 채우기 UNSIGNED 예약어를 이용해 0부터 시작하는 범위를 만들어 내 음수 범위를 없애고 양수 범위를 늘릴 수 있다. INT를 예로 -128 ~ 127 -> 0 ~ 255 로 확장하는 것이다. CREATE TA..
INSERT 기본 문법 INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...) -> 테이블 이름 다음에 나오는 열은 생략이 가능하다. 대신, 나오는 값들의 순서 및 개수는 테이블의 정의와 같아야 함. 예제(1) USE market_db; CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT); INSERT INTO hongong1 VALUES(1, '우디', 25); 예제(2) 아이디(toy_id)와 이름(toy_name)만 입력하고 나이(age)는 입력하고 싶지 않다면 테이블 이름 뒤에 입력할 열의 이름을 써줘야 한다. INSERT INTO hongong1 (toy_id, toy_name) VALUES (2,..
UPDATE를 하려하면 아래와 같은 에러가 뜬다. MySQL은 기본적으로 UPDATE 및 DELETE를 허용하지 않기에 설정 변경을 해야한다. 1. Edit의 Preferences를 들어간다. 2. SQL Editor에 아래를 보면 Safe Updates가 있을것인데 체크를 해제한다. 3. MySQL을 재 시작한다. 그러면 UPDATE가 잘 될것이다.
ORDER BY : 결과가 출력되는 순서를 정할 수 있으며 ASC(오름차순), DESC(내림차순)이 가능하다. LIMIT : 출력하는 개수를 제한 DISTINCT : 조회된 결과에서 중복된 것은 1개만 출력하며, 열 이름 앞에 붙여 사용한다. GROUP BY : 데이터를 그룹으로 묶어준다. HAVING : 집계 함수와 관련된 조건을 제한, GROUP BY 다음에 나온다. 집계 함수 함수명 설명 SUM() 합계를 구한다. AVG() 평균을 구한다. MIN() 최소값을 구한다. MAX() 최대값을 구한다. COUNT() 행의 개수를 센다. COUNT(DISTINCT) 행의 개수를 센다.(중복은 1개만 인정) 1. SELECT -> FROM -> WHERE -> ORDER BY -> LIMIT 2. ORDER..
ORDER BY SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date; 기본값은 ASC로 오름차순 정렬이다. 여기서 내림차순을 원한다면 DESC를 제일 뒤에다 붙여주면 된다. SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC; WHERE 절을 ORDER BY 절 앞에 추가하여 함께 사용할 수 있다. height가 164보다 큰 조건을 추가하였다. SELECT mem_id, mem_name, debut_date FROM member WHERE height >=164 ORDER BY debut_date DESC; 정렬 기준은 여러 개도 가능하다. 정렬 기준이 1..
USE : 데이터베이스를 선택하는 구문 SELECT ~ FROM ~ WHERE : SELECT 다음에는 열 이름, FROM 다음에는 테이블 이름, WHERE 다음에는 조건식 관계 연산자 : WHERE 절에 크다/작다/같다 등을 지정하는 기호로 >, >=, 테이블이 아닌 데이터 베이스를 지정함, 쿼리창을 닫거나 MySQL을 재시작 시 다시 USE를 사용해야 함. 3. ① -> mem_number == 4가 아닌 mem_number = 4로 해야 함. 4. ①, ③ -> 주소의 지역이 서울, 경기인 사람을 추출하고 싶으니 아래의 쿼리문이 적절함 SELECT * FROM WHERE addr IN('서울', '경기'); SELECT * FROM WHERE addr = '서울' OR addr = '경기';