본문 바로가기

SQL강좌39

SQL ROUND() 함수 안녕하세요!! 이번 포스팅할 내용은 SQL ROUND() 함수입니다. ROUND() 함수는 소수점의 개수를 지정하여 반올림을 해주는 역할을 합니다. 기본구문 SELECT ROUND(column_name,소수점개수) FROM table_name; 예를들어서 34.983 54.242 76.23 83 61.8587 등의 숫자가 적혀있는 price 라는 칼럼이 있다고 가정할 경우 select round(price,0) from table; // 위와 같은 명령어를 실행하면 아래와 같은 결과가 나옵니다. // round(price,0) 이므로 소수점 첫째 자리부터 6이상 반올림을 하여 값을 보여주게 됩니다. 35(반올림) 54 76 83 62(반올림) 그리고 아래와 같은 구문을 실행하면 select round(p.. 2013. 10. 14.
SQL MID() 함수 안녕하세요!! 이번 포스팅할 내용은 SQL MID() 입니다. MIN() 를 한마디로 표현하면 글자 자르기 정도가 될듯합니다. 기본적 문법은 아래와 같습니다. SELECT MID(column_name,start[,length]) FROM table_name; id coffee_name price guest 1 아메리카노 2500 김 2 카페라떼 3000 박 3 아메리카노 2500 이 4 카페모카 3500 송 // 처럼 테이블(coffee)이 있다고 가정하고 MID() 를 적용해 보겠습니다. select MID(coffee_name, 2) from coffee; // 위와 같은 구문을 실행하면 결과값은 아래와 같습니다. 메리카노 페라떼 메리카노 페모카 // 즉 두번째 부터 값을 가져오게 됩니다. selec.. 2013. 10. 12.
SQL UCASE(), LCASE() 구문 안녕하세요!! 이번 포스팅에서는 SQL UCASE(), LCASE() 에 대해서 알아보겠습니다. 웹 프로그래머 생활을 10여년 넘게 하고 있지만 위 두 개의 함수 UCASE(), LCASE() 는 거의 사용해보지 않은듯 합니다. ㅎㅎ;; 하지만 알아두면 언젠가는 도움이 될듯하여 이렇게 포스팅합니다. UCASE() 함수의 역할은 영문을 대문자로 변환해 줍니다. 그리고 짐작하시겠지만 LCASE() 함수의 역할은 영문을 소문자로 변환해 줍니다. 한글에는 대문자 소문자가 존재하지 않는데 영문에는 대.소문자가 존재합니다. 그래서 필요에 의해 만들어지지 않았나 짐작해봅니다. 어쨋든 함수의 의미는 단순합니다. 대문자 변환 UCASE() , 소문자 변환 LCASE() 기본적인 문법은 아래와 같습니다. select UC.. 2013. 10. 10.
SQL HAVING 구문 안녕하세요!! 이번 포스팅에서는 SQL HAVING 구문에 대해서 설명하겠습니다. 예전에 ERP 시스템을 만들때는 종종 사용한듯 한데 규모가 그다지 크지 않은 홈페이지를 구축할땐 거의 사용하지 않았습니다. 그래도 HAVING은 중요한 역할을 하는 녀석(?) 이기 때문에 알아두면 도움이 많이 될듯합니다. HAVING 은 group by 에서 사용하는 조건구문 이라고 생각하면 됩니다. where 조건에서는 집계함수와 함께 사용할 수 없기 때문에 having 을 이용해야 합니다. 기본적으로 having 는 select ..... group by .... having... 으로 사용됩니다. SELECT column_name1, function(column_name2) FROM table_name WHERE co.. 2013. 10. 9.
SQL GROUP BY 구문 안녕하세요!! 이번에 포스팅할 내용은 SQL GROUP BY 구문입니다. group by 구문은 하나 이상의 열을 기준으로 그룹을 묶어서 결과를 가져오는 집계함수 입니다. 쉽게 말하면 그룹단위로 묶어서 결과를 도출한다라고 생각하면 될듯합니다. 기본구문은 아래와 같습니다. SELECT column_name, group_function(column_name) FROM table_name WHERE column_name = 'value' GROUP BY column_name; // 위처럼 group by 를 사용하여 column_name 에 대해서 그룹으로 묶습니다. 그냥 기본 구문을 보면 다소 분석하기 어렵지 않을까 싶어서 예제 테이블을 토대로 다시 알아보겠습니다. 음...요즘 커피숍이 많으니 커피를 기준으.. 2013. 10. 8.
SQL SUM() 함수 안녕하세요!! 이번에 포스팅할 내용은 SQL 의 SUM() 함수 입니다. sum() 함수는 어떤 숫자 열의 총 합계를 보여줍니다. 기본적인 구문은 select SUM(column_name) as sum_column from table_name; // 위와 같은 구문을 실행하면 column_name 의 모든 내용을 더한 값이 출력됩니다. 간단한 테이블을 하나 만들어서 직접 값을 구해보겠습니다. 아래는 member 테이블이라고 가정하고 사람들의 모든 나이를 더해보겠습니다. id name age 1 박 35 2 김 41 3 송 29 나이에 해당하는 age의 값을 더하는 구문을 만듭니다. select SUM(age) as sum_age from member; // 위와 같이 구문을 만들고 실행을 하면 35+41.. 2013. 10. 7.
SQL MAX(), MIN() 구문 안녕하세요!! 이번 포스팅에선 SQL MAX(), MIN() 함수에 대해서 설명드리겠습니다. MAX() 은 선택된 칼럼의 가장 큰 값을 가져옵니다. 기본구문 SELECT MAX(column_name) FROM table_name; // 기본적으로 max() 의 사용방법은 위와 같습니다. 위의 구문을 실행시키면 table_name 라는 테이블에서 column_name 의 값중 가장 큰값을 하나만 가져오게 됩니다. id name age 1 박 38 2 김 45 3 이 26 예를들어서 위와 같은 테이블(member)이 있다고 가정 할 경우 select MAX(age) from member; // 위의 구문을 실행하면 나이가 제일 많은 45를 가져오게 됩니다. 그렇다면 이제 그 반대의 값을 가져오는 MIN()에.. 2013. 10. 4.
SQL COUNT 함수에 대해서 안녕하세요!! 이번에 포스팅할 내용은 SQL COUNT 함수 구문입니다. count 함수는 이미 짐작했을 수도 있겠지만 행의 수를 세는 역할을 합니다. 기본예제는 아래와 같습니다. select count(*) from table_name; select count(column_name) from table_name; // 위처럼 구문을 작성하면 table_name 테이블에서 모든 행의 개수가 얼마나 되는지 숫자로 표현됩니다. 예를들어서 삽입된 행의 수가 6이라고 하면 위 구문을 실행하면 6이라는 결과가 나타나게 됩니다. 조금 더 구체적으로 원하는 부분의 행의 개수를 가져오고 싶을 경우 where 를 사용하여 구문을 만들 수 있습니다. select count(*) from table_name where na.. 2013. 10. 2.
SQL AVG() 구문 안녕하세요!! 이번에 SQL 관련해 포스팅할 내용은 AVG() 구문입니다. AVG() 구문은 average 의 줄임말로 평균을 구하는 함수입니다. 예를들어서 5명의 학생이 국어 시험을 봤는데 A학생은 70, B학생은 89, C학생은 78, D학생은 94, E학생은 90 이라고 가정하고 테이블은 exam 칼럼명은 Jumsu 라고 가정하면 select AVG(jumsu) from exam 이렇게 SQL 구문을 이용하여 학생들의 평균값을 구할 수 있습니다. 그럼 간단하게 회원 테이블에서 사람들의 나이에 대한 평균을 구해보겠습니다. 테이블 이름은 member 이라고 정의하겠습니다. m_id name age 1 park 33 2 kim 42 3 lee 29 대략 짐작이 갈거라 생각합니다. 위 테이블에서 age 즉.. 2013. 9. 30.
SQL DATE 함수들 안녕하세요!! 이번에 포스팅할 내용은 SQL DATE 함수들에 대해서 알아보겠습니다. SQL DATE 형식은 데이터베이스 마다 조금씩 틀린 부분이 있습니다. MySql 의 DATE 함수들 NOW() : 현재 날짜와 시간을 보여줍니다. CURDATE() : 현재 날짜를 보여줍니다. CURTIME() : 현재 시간을 보여줍니다. 예) SELECT NOW(),CURDATE(),CURTIME() NOW() CURDATE() CURTIME() 2012-09-26 14:42:53 2013-09-26 14:42:53 // 각각의 함수들에 대해서 쿼리문은 위와 같은 형식의 날짜 또는 시간이 나오게 됩니다. DATE_ADD() : 날짜에 지정된 시간을 추가할 수 있습니다. DATE_SUB() : 날짜에 지정된 시간을 뺄.. 2013. 9. 26.
SQL AUTO INCREMENT 구문 안녕하세요!! 이번에 포스팅할 내용은 AUTO INCREMENT 구문입니다. 테이블을 만들때 주로 고유 번호를 생성하는데 사용됩니다. AUTO INCREMENT 를 사용하면 레코드의 값이 중복되지 않고 1씩 자동 증가하게 됩니다. 특히 가장 많이 사용되는 곳은 테이블 제일 첫 칼럼입니다. 테이블을 만들때 첫 칼럼은 거의 대부분 테이블 레코드에 대한 고유값을 지정하여 사용하기 때문입니다. MySql 구문 CREATE TABLE Member ( ID int NOT NULL AUTO_INCREMENT, Name varchar(255) NOT NULL, Address varchar(255), City varchar(255), PRIMARY KEY (ID) ) // MySql 에서는 위와 같이 AUTO_INCRE.. 2013. 9. 25.
SQL ALTER TABLE 구문 안녕하세요!! 이번 포스팅에서는 SQL ALTER TABLE 구문에 대해서 알아보겠습니다. ALTER TABLE 이란 녀석은 기존 테이블의 열을 추가, 삭제 또는 수정하는데 사용됩니다. 기본 구문은 아래와 같습니다. 칼럼을 추가하는 구문 ALTER TABLE table_name ADD column_name datatype 테이블의 열을 삭제하는 구문(일부 데이터베이스에서는 아래 구문을 허용하지 않을 수 있습니다.) ALTER TABLE table_name DROP COLUMN column_name 칼럼의 유형을 변경하는 구문 SQL server / MS Access ALTER TABLE table_name ALTER COLUMN column_name datatype MySql / Oracle ALTER .. 2013. 9. 24.
SQL DROP 구문 안녕하세요!! 오랜만에 포스팅을 하는듯 합니다. 차가 많이 밀려서 명절은 잘 보내셨는지 궁금하군요. 저는 대전이 큰집인데 차가 생각보다 너무 많이 밀려서 신탄진에서 유성으로 대전을 들어가니 차도 많지 않고 편하게 잘 갔다온듯 합니다. 어쨋든 ㅎㅎ 오늘 포스팅할 내용은 SQL 구문중 DROP 에 대해서 알아보겠습니다. SQL에서 DROP 은 INDEX 및 데이터베이스 그리고 테이블을 삭제할 수 있습니다. 기본적인 INDEX 삭제 구문은 아래와 같습니다. MS Access 의 INDEX DROP 구문 DROP INDEX index_name ON table_name MS-SQL 의 INDEX DROP 구문 DROP INDEX table_name.index_name Oracle 의 INDEX DROP 구문 DR.. 2013. 9. 23.
SQL CHECK 제약조건 안녕하세요!! 이번 포스팅에서는 SQL 제약조건중 CHECK에 대해서 알아보겠습니다. CHECK 제약조건은 단어 그대로 어떤 열에 대해서 특정한 조건을 걸어서 체크를 할 수 있는 역할을 합니다. 예를 들어서 테이블을 하나 만들어서 CHECK에 대해서 알아보겠습니다. 아래 MEMBER 테이블을 만들겠습니다. CREATE TABLE member ( m_id int NOT NULL CHECK (m_id>0), Name varchar(255) NOT NULL, Address varchar(255), City varchar(255) ) // 첫 번째 줄을 주의깊게(?) 살펴보면 CHECK (m_id>0) 구문이 있습니다. 무슨 의미인지 대충 짐작했으리라 생각합니다. 해당 열은 0의 값보다 커야한다는 의미죠. 만약.. 2013. 9. 17.
SQL FOREIGN KEY 제약 조건 안녕하세요!! 이번 포스팅에서는 SQL FOREIGN KEY 제약 조건에 대해서 알아보겠습니다. 흔히들 FOREIGN KEY 를 우리나라 말로 외래키라고 사용합니다. 외래키 제약조건은 한 마디로 말해서 두 테이블간의 관계를 선언하여 데이터간의 무결성을 보장해주는 역할을 합니다. 즉 외래키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존하는 형태입니다. 외래키 테이블에 데이터가 입력될 경우 기준 테이블의 내용을 참조해서 데이터가 입력되기 때문에 만약 기준 테이블에 데이터가 존재하지 않을 경우 값이 반영되지 않게 됩니다. 그리고 외래키 설정시 주의해야 할점은 기준 테이블의 열에 반드시 primary key, unique 제약조건이 설정되어 있어야 한다는 점입니다. 설명은 여기까지 마치고 테이블을 예로들어.. 2013. 9. 16.
SQL PRIMARY KEY 제약조건 안녕하세요!! 이번 포스팅에서는 제약조건중에서 PRIMARY KEY 에 대해서 설명하겠습니다. PRIMARY KEY 는 테이블의 각 레코드를 식별하는데 사용됩니다. PRIMARY KEY 는 고유 한 값을 포함해야 합니다. PRIMARY KEY 열은 NULL 값을 포함 할 수 없습니다. 각 테이블에는 PRIMARY KEY 가 있어야하고, 각 테이블은 하나의 PRIMARY KEY 를 가질 수 있습니다. 아래처럼 테이블을 만들때 PRIMARY KEY 조건을 줄 수 있습니다. CREATE TABLE Person ( Id int NOT NULL PRIMARY KEY, Name varchar(255) NOT NULL, Address varchar(255), City varchar(255) ) 그리고 저의 경우 My.. 2013. 9. 12.
SQL UNIQUE 구문 안녕하세요!! 오전엔 주룩주룩 비가 와서 그런가 지금은 습도 높은 더운 날씨네요. 이번 포스팅에서는 SQL 제약조건중에서 UNIQUE 조건에 대해서 알아보겠습니다. UNIQUE 제약조건은 특정 열에 중복된 값이 입력되는 것을 방지할 수 있습니다. 사실 UNIQUE 와 PRIMARY KEY 두 조건 모두 같은 역할을 하지만 조금씩 틀립니다. PRIMARY KEY 의 경우 하나의 테이블에 하나만 정의할 수 있지만 UNIQUE 의 경우는 여러 개를 정의할 수 있습니다. 그리고 PRIMARY KEY 조건과 달리 UNIQUE 에서는 NULL 값이 허용됩니다. 하지만 UNIQUE 조건에서는 열당 하나만 NULL 이 허용됩니다. 단일 UNIQUE 조건 CREATE TABLE PersonsUnique ( Id int .. 2013. 9. 11.
SQL NOT NULL, DEFAULT 구문 안녕하세요!! 이번에 포스팅할 내용은 NOT NULL , DEFAULT 제약조건이며 이전에 설명드렸던 제약조건에 대해서 좀더 자세히 말씀드리려 합니다. NOT NULL 제약조건 NOT NULL 그냥 직역하면 NULL 즉 공백을 NOT 하겠다는 의미 입니다. 공백값을 허용하지 않는다 그런의미가 되겠네요! 그렇기 때문에 NOT NULL 제약조건은 항상 값을 포함할 필드에 적용됩니다. 그래서 만약 아무런 값이 안들어가게 되면 에러가 나게 됩니다. 사실 의미만 정확하게 알고 있다면 굳이 테스트까지는 필요없을듯 하지만 그래도 테이블을 한번 만들어 보겠습니다. CREATE TABLE PersonsNotNull ( id int NOT NULL, Name varchar(255) NOT NULL, Address varc.. 2013. 9. 10.
SQL Constraints 구문 안녕하세요!! 날씨가 아침 저녁은 쌀쌀하고 점심때는 정말 덥네요. 일교차가 심한 가을!! 감기 조심하세요!! 이번 포스팅에서는 SQL Constraints 에 대해서 설명하겠습니다. SQL Constraints 우리말로 번역하면 제약조건 또는 제약 이라고 풀이됩니다. 그냥 단순히 제약이라는 말이 무슨뜻인지 저도 사실 풀이는 어렵네요. ㅎㅎ;; 쉽게 설명하자면 테이블을 만드는데 있어서 어떤 조건 또는 규칙을 지정하는 방법이라고 생각하면 되겠습니다. CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size).. 2013. 9. 9.
SQL CREATE DATABASE and TABLE 구문 안녕하세요!! 오늘은 즐거운 주말입니다. 오늘 포스팅할 내용은 데이터베이스와 테이블을 만들수 있는 CREATE 에 대해서 알아보겠습니다. 사실 명령어 자체는 정말 간단합니다. 데이터베이스를 만들 경우 CREATE DATABASE database_name; // 데이터베이스를 만들때 명령어는 CREATE DATABASE 입니다.그리고 그 다음에 만들 데이터베이스 이름을 입력하면됩니다. 테이블을 만들 경우는 조금 복잡합니다. 테이블의 경우는 테이블만 있는것이 아니고 그 안에 필요한 칼럼들을 정의해 주어야 하기 때문입니다. 테이블 만들때 기본구문은 아래와 같습니다. CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(si.. 2013. 9. 7.
SQL INSERT INTO SELECT 구문 안녕하세요!! 오늘 포스팅할 내용은 IINSERT INTO SELECT 구문 입니다. insert into select 구문은 같은 내용의 테이블 데이터를 복사하는데 유용하게 사용할 수 있습니다. 기본적인 구문은 아래와 같습니다. INSERT INTO table2 SELECT * FROM table1; // table1과 동일한 table2를 미리 만들고 위와 같은 구문을 실행하면 table1의 내용이 모두 table2로 복사됩니다. 복사 또는 백업하는 방법에는 여러가지가 있지만 위 구문도 알아두면 좋을듯 하여 이렇게 포스팅합니다. 그리고 모든 칼럼의 내용을 복사할수도 있지만 원하는 칼럼의 내용도 복사할 수 있습니다. INSERT INTO table2 (col1, col2, col3...) SELECT .. 2013. 9. 6.