글
1. 기본 데이터베이스
2. 테이블 사용 : use test
//Database changed라는 출력과 함께 test라는 데이터 베이스에 접속,
//이 때에는 세미콜론 사용을 안 한다.
//또한 단일라인에서만 사용가능하므로 한 줄에 다 입력해야 함.
3. 현 데이터베이스 내의 테이블들을 출력 : show tables;
4. create table pet(name varchar(20), owner varchar(20),
species varchar(20), sex char(1), birth date, death date);
//name, owner, species, sex, birth, death의 정보를 가질 table을 생성,
//가독성을 높이기 위해 2줄에 걸쳐 타입
5. describe pet;
//pet이라는 테이블이 가지는 정보에 대해 검사, 이 때 필드 이름, 데이터 타입,
//NULL의 여부, Key의 여부, DEFAULT의 여부, 기타 에 관한 정보가 출력된다
6. load data local infile
'C:/mysql/pet.txt' into table pet;
//C:mysql에 있는 pet.txt 내에 있는 정보를 pet이란 테이블에 불러와서 입력한다.
//텍스트 파일로 데이터 입력시 각각의 필드는 tab이나 띄어쓰기로 구분하도록 디폴트
//텍스트 파일 입력 중 누락된 값들은 NULL값으로 자동처리된다.
//주의할 점은 mysql에서 위치입력시 Dos처럼 를 쓰는 것이 아니라 /를 사용한다
7. load data local infile
'C:/mysql/pet.txt' into table pet
lines terminated by 'rn';
//rn을 라인 터미네이터로 사용한다
8. insert into pet values('Puffball','Diane','hamster','f',1993-03-30',NULL);
//pet이란 테이블에 값을 입력, 이 때는 NULL을 써줘서 누락된 값을 표시한다.
9. select * from pet;
//pet테이블에 있는 모든 정보 출력
10. delete from pet;
//pet테이블에 있는 모든 정보 삭제, 이 명령어는 텍스트 파일의 자료 중 잘못된 값이 많을 때
//텍스트 파일의 정보 수정 후 다시 입력하려고 할 때 필요하다. 만약 정보 수정 후 바로 load
//data를 해주게 되면 정보가 중복입력이 되기 때문이다.
11. update pet set birth = '1989-08-31' where name = 'Bowser';
//pet 테이블에서 name이 Bowser인 줄의 birth를 1989-08-31로 수정한다,
//update A set B=C where D set E의 형태로 작성하면
//A테이블의 D필드의 값이 E인 줄에서 B필드의 값을 C로 수정한다.
12. select *from pet where name = 'Bowser';
//pet 테이블에서 name이 Bowser인 줄을 모두 출력한다.
13. select *from pet where birth >= '1998-1-1';
//pet 테이블에서 birth가 1998-1-1 이후인 줄을 출력한다.
//만약 비교연산자 사용시 문자를 사용하면 ASCII코드 값을 비교한다.
//예를 들어 select *from pet where name >='S';를 타입하면
//'T~Z'까지의 문자로 시작되는 이름을 가진 줄들이 출력된다.
14. select *from pet where species = 'snake' or species = 'bird';
//pet 테이블에서 species가 snake이거나 species가 bird인 줄을 출력한다.
//or 뿐만 아니라 and도 사용된다.
//예를 들어 select *from pet where species ='cat' and owner = 'Gwen';
//을 타입하면 pet 테이블의 species가 cat이고 owner가 Gwen인 줄이 출력된다.
15. select *from pet where (species='cat' and sex='m') or (species='dog' and sex='f');
//pet 테이블에서 species가 cat이고 sex가 m인 줄이거나 species가 dog이고 sex가 f인 줄은
//모두 출력한다.
//괄호를 쓰는 까닭은 and와 or 중 우선순위가 and가 더 높기 때문에
//혼용할 수 있으므로 방지차원에 쓴다.
16. select name, birth from pet;
//pet테이블에서 name과 birth필드값들을 모두 출력한다.
//이는 특정 행을 선택하여 출력하는 것과 같다.
17. select distinct owner from pet;
//pet테이블에서 같은 이름의 owner는 한 번만 출력하도록 owner필드값들을 모두 출력한다.
18. select name, species, birth from pet where species='dog' or species='cat';
//pet테이블에서 species가 dog이거나 cat인 줄의 name, species,birth를 출력한다.
19. select name, birth, (year(curdate())-year(birth) - (right(curdate(),5)<right(birth,5)) as age from pet;
//pet 테이블에서 name과 birth 그리고 age를 출력한다.
//age는 오늘 날짜(curdate()는 오늘 날짜를 불러오는 MySQL지원 메소드) 중 연도에서
//생일의 연도를 뺀 다음에
//right(curdate(),5)는 curdate() 중 오른쪽 5자리 (몇월-몇일)를 추려내서 birth의 월일과
//비교했을 때 작으면 1, 크거나 같으면 0이란 값을 출력하게 된다.
//(비교연산자 식이 true면 1, false면 0을 리턴한다)
//그래서 나온 값을 빼주면 나이가 된다.(조금만 생각해보시면 이 식이 이해가 갈껍니다.;;)
20. select * from pet where name like 'b%';
// pet테이블에서 name이 b로 시작되는 줄을 찾는다.
// '_'을 사용하면 단일문자 매칭
// '%'를 사용하면 문자의 부정 숫자를 매칭
// SQL 패턴 사용시 논리연산자 사용불가
// 대신 like 또는 not like를 사용할 수 있다.
21. select * from pet where name like '%fy';
// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.
22. select * from pet where name like '%w%';
// pet테이블에서 name이 이름 내에 w를 포함하고 있는 줄을 찾는다.
23. select * from pet where name like '_____';
// pet테이블에서 5개의 문자로 name이 되어있는 줄을 찾는다.
// _의 갯수만큼의 문자검색을 할 수가 있다.
24. select * from pet where name regexp '^b';
// pet테이블에서 name이 b로 시작하는 줄을 찾는다.
// regexp는 테스트가 되는 값이 있는 모든 곳에서 매칭
// like는 전체값에서만 패턴매치를 진행
25. select * from pet where name regexp 'fy$';
// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.
26. select * from pet where naem regexp 'w';
// pet테이블에서 name이 중간에 w를 가지고 있는 줄을 찾는다.
27. select * from pet where regexp '^.....$';
// pet테이블에서 name이 5문자인 줄을 찾는다.
// regexp에서는 .을 단일문자로 취급한다.
28. select * from pet where name regexp '^.{5}$';
// pet테이블에서 name이 5문자인 줄을 찾는다.
// {n}은 repeat - n - times 연산자이다.
29. select count(*) from pet;
// pet테이블에 몇 개의 줄이 있는지 찾는다.
30. select owner, count(*) from pet group by owner;
// pet테이블에서 owner의 이름에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.
// group by n은 n이란 속성에 따라 그룹화한다.
// 만약 select 후 n만 사용하고 뒤에 group by n을 붙이지 않으면 에러가 발생한다.
// ex) select owner, count(*) from pet; <- ERROR 1140
31. select species, sex, count(*) from pet group by species, sex;
// pet테이블에서 species와 sex의 조합에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.
32. select species, sex, count(*) from pet where species = 'dog' or species = 'cat' group by species, sex;
// pet 테이블에서 species 이름이 dog 나 cat인 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.
33. select species, sex, count(*) from pet where sex is not null group by species, sex;
// pet테이블에서 sex가 null이 아닌 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.
34. select pet.name, (year(date)-year(birth)) as age, remark from pet, event where pet.name = event.name and event.type='litter';
// pet테이블의 name과
// 오늘 날짜(date) 중 년도에서 birth의 년도를 뺀 것을 age로 한 것과
// remark를
// pet과 event 테이블에서
// pet테이블의 name이 event테이블의 name과 같고
// event테이블의 type이 litter인 줄을 출력한다.
// 만약 name이나 type처럼 두 테이블에 동시에 있는 field같은 경우
// (테이블명).(필드명)을 사용한다.
// 사용 안 할시 ambigugous 에러 발생
// ex) pet.name, event.type
35. select p1.name, p1.sex, p2.name, p2.sex, p1.species from pet as p1, pet as p2 where p1.species=p2.species and p1.sex='f' and p2.sex = 'm';
// pet테이블 과 pet테이블, 즉 같은 2개의 테이블에서
// pet테이블에서 species값은 같지만
// sex에서 값이 'f'와 'm'으로 다른
// 줄의 name, sex를 각각 출력하고 species도 출력한다.
// 이 때 두 species는 같으므로 한 테이블의 species만 출력
36. select name,birth from pet order by birth;
// pet테이블에서 birth를 기준으로 오름차순으로 정렬된 name과 birth 출력
37. select name,birth from pet order by binary name;
// pet테이블에서 name을 기준으로 대소문자 구별하여 오름차순으로 정렬된 name과 birth 출력
// binary를 사용하면 ASCII코드 값의 크기에 따라 정렬
38. select name, birth from pet order by birth desc;
// pet 테이블에서 birth를 기준으로 내림차순으로 정렬된 name과 birth를 출력한다
// 마지막에 desc입력시 내림차순 정렬
// desc는 바로 앞에 있는 birth에만 영향을 미친다.
// 하나의 컬럼 이상의 컬럼에 영향을 주고 싶을 땐 계속 써넣어줘야 한다.
39. select name, species, birth from pet order by species,birth desc;
// pet테이블에서 species와 birth 내림차순으로 기준을 한 name,species,birth를 출력한다.
// 먼저 species기준으로 정렬후 birth 내림차순을 기준으로 삼아 정렬한다.
40. show index from pet;
// pet테이블에 있는 인덱스들을 보여준다.
41. select max(article) as article from shop;
// shop 테이블에서 article중에서 가장 큰 값을 가진 것을 article이라는 이름으로 출력
// select max(A) as B from C;
// C테이블에서 A중에 가장 큰 값을 가진 것을 B라는 이름 하에 출력
42. select article, dealer, price from shop where price=(select max(price) from shop);
// shop 테이블에서 price가 가장 큰 값인 줄의 price를 선택하여 그 줄에 있는 article, dealer, price를 출력
43. select article, dealer, price from shop order by price desc limit 1;
// shop테이블에서 price를 내림차순으로 정렬하여 그 중 위에서 1개의 줄만 article,dealer,price를 출력
// limit에 들어가는 값은 출력해낼 줄의 숫자
// 47번 예제보다 좀 더 유동성있고 사용하기 편함
44. select article, max(price) as price from shop group by article;
// shop테이블에서 article, price 중에 가장 큰 값만 price로 하여 article로 그룹화한 결과를 출력
45. select article, dealer, price from shop s1 where price=(select max(s2.price) from shop s2 where s1.article = s2.article);
//shop테이블에서 price가 가장 높은 줄의 article,dealer,price를 출력한다.
46. select @min_price:=min(price),@max_price:=max(price) from shop; select * from shop where price=@min_price or price=@max_price;
// shop테이블에서 min_price라는 변수를 선언하고 그 값은 price중 가장 작은 값
// 또한 shop테이블에서 max_price라는 변수를 선언하고 그 값은 price중 가장 큰 값
// shop테이블에서 price가 min_price값을 가지거나 max_price값을 가진 줄 모두를 출력
47. select name, sex from pet where name='Claws' union select name,sex from pet where sex='f';
// pet테이블에서 name이 Claws인 줄의 name, sex를 출력하고
// pet테이블에서 sex가 f인 줄의 name,sex를 출력한다.
// union은 두 개의 쿼리문 결과를 붙여서 보여준다.
// 따라서 select하는 필드값은 일치해야 한다.
2. 테이블 사용 : use test
//Database changed라는 출력과 함께 test라는 데이터 베이스에 접속,
//이 때에는 세미콜론 사용을 안 한다.
//또한 단일라인에서만 사용가능하므로 한 줄에 다 입력해야 함.
3. 현 데이터베이스 내의 테이블들을 출력 : show tables;
4. create table pet(name varchar(20), owner varchar(20),
species varchar(20), sex char(1), birth date, death date);
//name, owner, species, sex, birth, death의 정보를 가질 table을 생성,
//가독성을 높이기 위해 2줄에 걸쳐 타입
5. describe pet;
//pet이라는 테이블이 가지는 정보에 대해 검사, 이 때 필드 이름, 데이터 타입,
//NULL의 여부, Key의 여부, DEFAULT의 여부, 기타 에 관한 정보가 출력된다
6. load data local infile
'C:/mysql/pet.txt' into table pet;
//C:mysql에 있는 pet.txt 내에 있는 정보를 pet이란 테이블에 불러와서 입력한다.
//텍스트 파일로 데이터 입력시 각각의 필드는 tab이나 띄어쓰기로 구분하도록 디폴트
//텍스트 파일 입력 중 누락된 값들은 NULL값으로 자동처리된다.
//주의할 점은 mysql에서 위치입력시 Dos처럼 를 쓰는 것이 아니라 /를 사용한다
7. load data local infile
'C:/mysql/pet.txt' into table pet
lines terminated by 'rn';
//rn을 라인 터미네이터로 사용한다
8. insert into pet values('Puffball','Diane','hamster','f',1993-03-30',NULL);
//pet이란 테이블에 값을 입력, 이 때는 NULL을 써줘서 누락된 값을 표시한다.
9. select * from pet;
//pet테이블에 있는 모든 정보 출력
10. delete from pet;
//pet테이블에 있는 모든 정보 삭제, 이 명령어는 텍스트 파일의 자료 중 잘못된 값이 많을 때
//텍스트 파일의 정보 수정 후 다시 입력하려고 할 때 필요하다. 만약 정보 수정 후 바로 load
//data를 해주게 되면 정보가 중복입력이 되기 때문이다.
11. update pet set birth = '1989-08-31' where name = 'Bowser';
//pet 테이블에서 name이 Bowser인 줄의 birth를 1989-08-31로 수정한다,
//update A set B=C where D set E의 형태로 작성하면
//A테이블의 D필드의 값이 E인 줄에서 B필드의 값을 C로 수정한다.
12. select *from pet where name = 'Bowser';
//pet 테이블에서 name이 Bowser인 줄을 모두 출력한다.
13. select *from pet where birth >= '1998-1-1';
//pet 테이블에서 birth가 1998-1-1 이후인 줄을 출력한다.
//만약 비교연산자 사용시 문자를 사용하면 ASCII코드 값을 비교한다.
//예를 들어 select *from pet where name >='S';를 타입하면
//'T~Z'까지의 문자로 시작되는 이름을 가진 줄들이 출력된다.
14. select *from pet where species = 'snake' or species = 'bird';
//pet 테이블에서 species가 snake이거나 species가 bird인 줄을 출력한다.
//or 뿐만 아니라 and도 사용된다.
//예를 들어 select *from pet where species ='cat' and owner = 'Gwen';
//을 타입하면 pet 테이블의 species가 cat이고 owner가 Gwen인 줄이 출력된다.
15. select *from pet where (species='cat' and sex='m') or (species='dog' and sex='f');
//pet 테이블에서 species가 cat이고 sex가 m인 줄이거나 species가 dog이고 sex가 f인 줄은
//모두 출력한다.
//괄호를 쓰는 까닭은 and와 or 중 우선순위가 and가 더 높기 때문에
//혼용할 수 있으므로 방지차원에 쓴다.
16. select name, birth from pet;
//pet테이블에서 name과 birth필드값들을 모두 출력한다.
//이는 특정 행을 선택하여 출력하는 것과 같다.
17. select distinct owner from pet;
//pet테이블에서 같은 이름의 owner는 한 번만 출력하도록 owner필드값들을 모두 출력한다.
18. select name, species, birth from pet where species='dog' or species='cat';
//pet테이블에서 species가 dog이거나 cat인 줄의 name, species,birth를 출력한다.
19. select name, birth, (year(curdate())-year(birth) - (right(curdate(),5)<right(birth,5)) as age from pet;
//pet 테이블에서 name과 birth 그리고 age를 출력한다.
//age는 오늘 날짜(curdate()는 오늘 날짜를 불러오는 MySQL지원 메소드) 중 연도에서
//생일의 연도를 뺀 다음에
//right(curdate(),5)는 curdate() 중 오른쪽 5자리 (몇월-몇일)를 추려내서 birth의 월일과
//비교했을 때 작으면 1, 크거나 같으면 0이란 값을 출력하게 된다.
//(비교연산자 식이 true면 1, false면 0을 리턴한다)
//그래서 나온 값을 빼주면 나이가 된다.(조금만 생각해보시면 이 식이 이해가 갈껍니다.;;)
20. select * from pet where name like 'b%';
// pet테이블에서 name이 b로 시작되는 줄을 찾는다.
// '_'을 사용하면 단일문자 매칭
// '%'를 사용하면 문자의 부정 숫자를 매칭
// SQL 패턴 사용시 논리연산자 사용불가
// 대신 like 또는 not like를 사용할 수 있다.
21. select * from pet where name like '%fy';
// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.
22. select * from pet where name like '%w%';
// pet테이블에서 name이 이름 내에 w를 포함하고 있는 줄을 찾는다.
23. select * from pet where name like '_____';
// pet테이블에서 5개의 문자로 name이 되어있는 줄을 찾는다.
// _의 갯수만큼의 문자검색을 할 수가 있다.
24. select * from pet where name regexp '^b';
// pet테이블에서 name이 b로 시작하는 줄을 찾는다.
// regexp는 테스트가 되는 값이 있는 모든 곳에서 매칭
// like는 전체값에서만 패턴매치를 진행
25. select * from pet where name regexp 'fy$';
// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.
26. select * from pet where naem regexp 'w';
// pet테이블에서 name이 중간에 w를 가지고 있는 줄을 찾는다.
27. select * from pet where regexp '^.....$';
// pet테이블에서 name이 5문자인 줄을 찾는다.
// regexp에서는 .을 단일문자로 취급한다.
28. select * from pet where name regexp '^.{5}$';
// pet테이블에서 name이 5문자인 줄을 찾는다.
// {n}은 repeat - n - times 연산자이다.
29. select count(*) from pet;
// pet테이블에 몇 개의 줄이 있는지 찾는다.
30. select owner, count(*) from pet group by owner;
// pet테이블에서 owner의 이름에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.
// group by n은 n이란 속성에 따라 그룹화한다.
// 만약 select 후 n만 사용하고 뒤에 group by n을 붙이지 않으면 에러가 발생한다.
// ex) select owner, count(*) from pet; <- ERROR 1140
31. select species, sex, count(*) from pet group by species, sex;
// pet테이블에서 species와 sex의 조합에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.
32. select species, sex, count(*) from pet where species = 'dog' or species = 'cat' group by species, sex;
// pet 테이블에서 species 이름이 dog 나 cat인 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.
33. select species, sex, count(*) from pet where sex is not null group by species, sex;
// pet테이블에서 sex가 null이 아닌 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.
34. select pet.name, (year(date)-year(birth)) as age, remark from pet, event where pet.name = event.name and event.type='litter';
// pet테이블의 name과
// 오늘 날짜(date) 중 년도에서 birth의 년도를 뺀 것을 age로 한 것과
// remark를
// pet과 event 테이블에서
// pet테이블의 name이 event테이블의 name과 같고
// event테이블의 type이 litter인 줄을 출력한다.
// 만약 name이나 type처럼 두 테이블에 동시에 있는 field같은 경우
// (테이블명).(필드명)을 사용한다.
// 사용 안 할시 ambigugous 에러 발생
// ex) pet.name, event.type
35. select p1.name, p1.sex, p2.name, p2.sex, p1.species from pet as p1, pet as p2 where p1.species=p2.species and p1.sex='f' and p2.sex = 'm';
// pet테이블 과 pet테이블, 즉 같은 2개의 테이블에서
// pet테이블에서 species값은 같지만
// sex에서 값이 'f'와 'm'으로 다른
// 줄의 name, sex를 각각 출력하고 species도 출력한다.
// 이 때 두 species는 같으므로 한 테이블의 species만 출력
36. select name,birth from pet order by birth;
// pet테이블에서 birth를 기준으로 오름차순으로 정렬된 name과 birth 출력
37. select name,birth from pet order by binary name;
// pet테이블에서 name을 기준으로 대소문자 구별하여 오름차순으로 정렬된 name과 birth 출력
// binary를 사용하면 ASCII코드 값의 크기에 따라 정렬
38. select name, birth from pet order by birth desc;
// pet 테이블에서 birth를 기준으로 내림차순으로 정렬된 name과 birth를 출력한다
// 마지막에 desc입력시 내림차순 정렬
// desc는 바로 앞에 있는 birth에만 영향을 미친다.
// 하나의 컬럼 이상의 컬럼에 영향을 주고 싶을 땐 계속 써넣어줘야 한다.
39. select name, species, birth from pet order by species,birth desc;
// pet테이블에서 species와 birth 내림차순으로 기준을 한 name,species,birth를 출력한다.
// 먼저 species기준으로 정렬후 birth 내림차순을 기준으로 삼아 정렬한다.
40. show index from pet;
// pet테이블에 있는 인덱스들을 보여준다.
41. select max(article) as article from shop;
// shop 테이블에서 article중에서 가장 큰 값을 가진 것을 article이라는 이름으로 출력
// select max(A) as B from C;
// C테이블에서 A중에 가장 큰 값을 가진 것을 B라는 이름 하에 출력
42. select article, dealer, price from shop where price=(select max(price) from shop);
// shop 테이블에서 price가 가장 큰 값인 줄의 price를 선택하여 그 줄에 있는 article, dealer, price를 출력
43. select article, dealer, price from shop order by price desc limit 1;
// shop테이블에서 price를 내림차순으로 정렬하여 그 중 위에서 1개의 줄만 article,dealer,price를 출력
// limit에 들어가는 값은 출력해낼 줄의 숫자
// 47번 예제보다 좀 더 유동성있고 사용하기 편함
44. select article, max(price) as price from shop group by article;
// shop테이블에서 article, price 중에 가장 큰 값만 price로 하여 article로 그룹화한 결과를 출력
45. select article, dealer, price from shop s1 where price=(select max(s2.price) from shop s2 where s1.article = s2.article);
//shop테이블에서 price가 가장 높은 줄의 article,dealer,price를 출력한다.
46. select @min_price:=min(price),@max_price:=max(price) from shop; select * from shop where price=@min_price or price=@max_price;
// shop테이블에서 min_price라는 변수를 선언하고 그 값은 price중 가장 작은 값
// 또한 shop테이블에서 max_price라는 변수를 선언하고 그 값은 price중 가장 큰 값
// shop테이블에서 price가 min_price값을 가지거나 max_price값을 가진 줄 모두를 출력
47. select name, sex from pet where name='Claws' union select name,sex from pet where sex='f';
// pet테이블에서 name이 Claws인 줄의 name, sex를 출력하고
// pet테이블에서 sex가 f인 줄의 name,sex를 출력한다.
// union은 두 개의 쿼리문 결과를 붙여서 보여준다.
// 따라서 select하는 필드값은 일치해야 한다.
'웹스터디 > php' 카테고리의 다른 글
무제한 멀티 업로드 (0) | 2008.05.23 |
---|---|
무제한 멀티 업로드 -설명첨부 가능한 버전 (1) | 2008.05.23 |
테이블 생성 (0) | 2008.05.21 |
php?변수명=변수값&변수명2=변수값2 ... (0) | 2008.05.21 |
자바스크립트 기초 (0) | 2008.05.21 |
mysql 테이블복구(최적화)하기 (0) | 2008.05.21 |
DB 자료를 엑셀파일로 저장 (0) | 2008.05.21 |
php 로 디렉토리와 파일을 만들어 보자 (0) | 2008.05.21 |
PHP - TXT 파일 잃어서 웹에 뿌리자 (0) | 2008.05.21 |
웹 계정에서 지워지지 않는 폴더 및 파일 삭제하는 방법 (1) | 2008.04.05 |
RECENT COMMENT