1 -- 테이블 전체를 보는 쿼리 (SQL)     


SELECT * FROM tablename;      표 전체


2 -- 테이블에 레코드 전체에서 특정 컬럼만 보는 쿼리        

SELECT col1,col2,... FROM tablename;


ex) SELECT  age, phonenumber FROM tablename ;                 name과 phonenumber  연두색 컬럼


3 -- 테이블에서 전체 컬럼에서 특정 레코드만 보는 쿼리

SELECT * FROM tablename WHERE condition(조건);


ex) SELECT * FROM  tablename WHERE id=1;           id가 1번인 레코드 조회           분홍색 


4 -- 2와 3의 조합

SELECT col1,col2,... FROM tablename WHERE condition(조건);


SELECT  age, sex FROM tablename  WHERE id=2;                        id가 2번인 age와 sex조회       하늘색





tablename

 id

 name

age 

sex 

 phonenumber

 1

 홍길동

 23

 남자

11111111

 2

 김성순

 45

 여자

22222222

 3

 김성호

23

남자 33333333 





ex) 

SELECT  age FROM tablename where age > 30 ;                                                      age가 30 보다 큰


SELECT  age FROM tablename where age > 30 and phonenumber 11111111 ;             age가 30보다 크면서 폰넘버가 11111111인


SELECT  * FROM tablename where  age  <> 30;                                                         나이가 30이 아닌 





ex)

SELECT  * FROM tablename WHERE name LIKE '김%';                        김으로 시작하는 

SELECT  * FROM tablename WHERE name LIKE '김성_';                        김성으로 시작하고  임의의 1글자

SELECT  * FROM tablename WHERE name LIKE '%성%';                        성이 들어 있는

SELECT  * FROM tablename WHERE name LIKE '__호;                         임의 2글자 끝에 호로 끝나는




SELECT  * FROM tablename WHERE name LIKE '김%' and age > 30;                        김으로 시작하고 age가 30 이상인










-- DISTINCT, ORDER BY, DESC

SELECT DISTINCT money from auction_user ORDER BY money DESC;


--이름이 '김'씨인 사람

SELECT * FROM auction_user WHERE name LIKE '김__';


-- 그룹별  유저  수

SELECT grade, count(*) AS num_people FROM auction_user GROUP BY grade;


SELECT grade, count(*) AS num_people  FROM auction_user WHERE grade = 'd';




데이터타입 : 성능에 영향을 끼친다.













테이블 생성







auction_user라는 테이블을 생성하고  id가 a001,  name이 홍길동 인 정보를 넣었다

$  insert into auction_user(id, name) values ( 'a001', '홍길동');

그리고 한번더 같은 정보를 넣었을때 중복이 발생. 

중복을 방지하기 위해

PRIMARY Key 제약조건을 사용

PRIMARY Key 제약조건을 사용

auction_user 가 존재한다면 테이블을 삭제한다. 
$ DROP TABLE IF EXISTS auction_user; 

auction_user테이블 생성   PRIMARY 제약 조건을 id에 대하여  사용 
$CREATE TABLE auction_user(
    id CHAR(16),
    name VARCHAR(32),
    birth DATE,
    last DATETIME,
    money DEC(8,2),
    PRIMARY KEY(id)
);


맨 위부터 테이블정보 조회

a001, 홍길동  추가

한번더 추가하시   중복  에러 발생

a002, 홍길동 추가

auction_user 테이블 조회결과


아이디가 happy 인 정보 추가후 조회

name 이 null이다.

이름이 없는 사용자를 원치 않는다.


NOT NULL 제약조건

위부터 차례로 

테이블 삭제후 다시생성

name VARCHAR(32) NOT NULL,          (NOT NULL) 제약조건 추가후 생성

auction_user; 로 정보 조회  name 의 Null 부분이 NO로 된것을 확인


id 가 a003인 정보를 추가하려고 했더니 에러발생

name까지 추가후 정보를 추가

성공



DEFAULT 제약조건

위부터 차례로   제약조건  money DEC(8,2) NOT NULL DEFAULT 1000 추가후 테이블 생성

id,name 이  a001 , 홍길동인 정보 추가

테이블 조회시 기본 money가 1000.00이 들어갔다.



UNIQUE 제약조건   (기본키 외에 고유한 값을 가지는 컬럼에 UNIQUE 사용)


위부터 차례로

테이블 생성시  name 부분에 UNIQUE 제약조건 추가

a001,  홍길동 추가,  

 a002 ,홍길동 추가  -> 에러     name이 고유값이기때문.


예제이기때문에 name에 UNIQUE제약조건을 추가 한 것일뿐...  일반적으로 이렇게 되면 테이블 설계가 잘못 되었다.


UNIQUE 제약조건의   다른 예제  주민등록번호



UNIQUE(ssn1, ssn2) 조건 추가     ssn1컬럽과 ssn2컬럼을 하나의 유니크 제약조건으로 ..
두개의 정보 추가

아이디는 다르고 이름이 같은 홍길동     주민번호까지 같다.
에러발생   

AUTO_INCREMENT 자동증가



위부터 차례로 

inc_test 테이블 추가시 num 컬럼에 PRIMARY KEY 와 AUTO_INCREMENT 제약조건 추가.


val 정보만  hello hi bye 세 개를 추가    num 의 정보는 따로 추가해 주지 않았다.

결과 




+ Recent posts