MongoDB 쿼리 연산자 모음




1. <, <=, >, >= 연산자

Mongo DB에서 <, <=, >, >= 를 사용할 때,


<  는  "$lt"

<=  는  "$lte"


>  는  "$gt"

>=  는  "$gte"


로 표현할 수 있다.


예제


SELECT * FROM users WHERE age >= 20;

==> db.users.find({ age : { "$gte" : 20 } });


SELECT * FROM users WHERE age < 20;

==> db.users.find({ age : { "$lt" : 20 } });


 AND 연산

SELECT * FROM users WHERE age BETWEEN 20 AND 25;

==> db.users.find({ age : { "$gte" : 20 , "$lte" : 25} });



age:{"gte":20}, age:{"$lte":25} 로 질의하면 같은 도큐먼트 내의 같은 수준에서는 반복으로 

질의 할 수 없습니다. 따라서 틀렸습니다.





2. $in, $nin, $all 연산자

SELECT * FROM users WHERE age IN(3,5,7,9);

==> db.users.find({ age : { $in : [3, 5, 7, 9] });


SELECT * FROM users WHERE age NOT IN(3,5,7,9);

==> db.users.find({ age : { $nin : [3, 5, 7, 9] }); // 문자열["ab", "안녕", "margo"]




모든 조건이 검색키와 일치되는 도큐먼트 찾기


도큐먼트 

{ name: "Bird Feeder",

   tags: [ "gift", "birds", "garden" ]

}

==> db.products.find({ tags : { $all : ["gift", "garden"] }  });






3. $ne, $not, $or, $and, $exists
 연산자

$ne - 같지않음(not equal to)  ** 단일한 값이거나, 배열인 경우 모두 수행된다

name 이 "ace" 인 도큐먼트중 tags가 "test" 가 아닌 모든 도큐먼트

==> db.products.find({ 'name':'ace', tags: {$ne : "test"} })



$not - 다른 연산자나 정규 표현식으로 부터 얻은 결과의 여집합을 리턴

성이 B로 시작하지 않는 모든 유저의 도큐먼트

==> db.users.find({ last_name: { $not: /^B/ } })



$or - 서로 다른 키에 대한 검색을 할 때 사용한다. 만약 같은 키에 대해 찾는다면  $in을 써야한다.

color 가 blue 이거나, name 이 ace인 도큐먼트를 검색할 때

==> db.products.find({ $or : [

{ 'details.color': 'blue'}

, { 'details.name': 'ace'}

})



$and 

- {age:3, name:'margo'} 는 age :3 AND name:'margo' 로 해석된다.

  이런 방법으로 AND 를 표현할 수 없을때 $and를 사용한다.

예제 도큐먼트

{ tags: ['gift', 'holiday', 'gardening', 'landscaping'] }


gift 나 holiday중 하나가 포함되고, gardening 나 landscaping 중 하나가 포함된 도큐먼트를

찾고싶을때, 이 쿼리를 표현하는 유일한 방법은 2개의 $in 쿼리를 $and 로 연결하는 것이다.


db.products.find({ $and : [

{tags : { $in : ['gift', 'holiday']}}

, {tags : { $in : ['gardening', 'landscaping']}}

]

}) 




$exists - 특정 키, 즉 도큐먼트가 해당 속성을 가지고 있는지 질의하는 쿼리다.

도큐먼트내에 특성 속성이 존재할수도 있고, 존재하지 않을수도 있다.

상품에 대한 컬렉션의 경우, 어떤 상품만의 특별한 키를 가질수 있을텐데, 

그때 해당도큐먼트가 그 키를 가지고 있는지 확인하고싶을때 사용한다.


속성을 가지고 있지 않은 도큐먼트를 찾을때 - false

==> db.products.find({ 'datails.color' : { $exists : false}})


속성을 가진 도큐먼트 - true

==> db.products.find({ 'datails.color' : { $exists : true}})


$exists : false 는 아래와 같이 표현가능하다.

==> db.products.find({ 'details.color' : null })


$exists : true 는 아래와 같이 표현가능하다.

==> db.products.find({ 'details.color' : {$ne: null }  })



YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


1. SELECT 쿼리 예제
// 숫자형을 리턴할때
int countOfActorsNamedJoe = this.jdbcTemplate.queryForInt(
"select count(0) from t_actors where first_name = ?", new Object[]{"Joe"});

// 도메인 객체와 매핑할때
public Collection findAllActors() {
return this.jdbcTemplate.query( "select first_name, surname from t_actor", new ActorMapper());
}
private static final class ActorMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Actor actor = new Actor();
actor.setFirstName(rs.getString("first_name"));
actor.setSurname(rs.getString("surname"));
return actor;
}
}

2. INSERT, UPDATE, DELETE 쿼리 예제
this.jdbcTemplate.update(
"insert into t_actor (first_name, surname) values (?, ?)",
new Object[] {"Leonor", "Watling"});

SQL문만 다를뿐 모두 update 메서드를 사용하면 된다.
또한 간단한 스토어드프로시져도 update메서드를 이용할수 있다.
this.jdbcTemplate.update(
"call SUPPORT.REFRESH_ACTORS_SUMMARY(?)",
new Object[]{Long.valueOf(unionId)});


3.기타
그밖에 DDL 같은 특수한 쿼리를 실행할때는 execute()메서드를 사용하기도 한다.
this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");


출처 : 
http://yunsunghan.tistory.com/239
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


MySQL Query(쿼리)문 모음

출처 : 하로기님의 블로그 ( http://harogipro.tistory.com/57 )


1. show databases; 는 데이터베이스들을 보여준다. 
     create database 데이터베이스명 ; 은 데이터베이스를 생성한다. 
     그러나 실제 mysql 관리자(서버관리자)가 아닌 이상 이 명령어를 사용할 수가 없다. 
     호스팅업체에서 대개는 자신의 계정아이디와 동일한 DB하나만 서비스해주기 때문에 
     직접 이 명령어를 사용하진 못한다. 

2. use 데이터베이스 : 사용할 데이터 베이스를 선택한다. 실제 호스팅인 경우 바로
    바로 데이터베이스 안으로 접속되는 경우가 많다. 
    show tables ;  테이블의 목록 출력 
     - DB는 테이블 형태로 데이터가 저장된다.

테이블 생성 
   create table 테이블 명 ( 컬럼명 데이터형식 널값여부 기타옵션);
  auto_increment 는 자동으로 번호를 증가시켜준다. 
  primary key 는 고유값 설정으로 똑같은 값은 절대 받지 않는다는 뜻.

  *** mysql 각종 데이터형들 
 tinyint 부호 있는 정수 -128 ~ 127 
부호 없는 정수 0 ~255 
1 Byte 

SMALLINT 부호 있는 정수 -32768 ~ 32767 
부호 없는 정수 0 ~65535 
2 Byte 

MEDIUMINT 부호 있는 정수 -8388608 ~ 8388607 
부호 없는 정수 0 ~16777215 
3 Byte 

INT 또는 INTEGER 부호 있는 정수 -2147483648 ~ 2147483647 
부호 없는 정수 0 ~4294967295 
4 Byte 

BIGINT 부호 있는 정수 -9223372036854775808 ~ 9223372036854775807 
부호 없는 정수 0 ~18446744073709551615 
8 Byte 

FLOAT 단일 정밀도를 가진 부동 소수점 
-3.402823466E+38 ~3.402823466E+38 

DOUBLE 2 배 정밀도를 가진 부동 소수점 
-1.79769313486231517E+308 ~ 1.79769313486231517E+308 

DATE 날짜를 표현하는 유형 
1000-01-01 ~ 9999-12-31 

DATETIME 날짜와 시간을 표현하는 유형 
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 

TIMESTAMP 1970-01-01 00:00:00 부터 2037년 까지 표현 
4 Byte 

TIME 시간을 표현하는 유형 
-839:59:59 ~ 838:59:59 

YEAR 년도를 표현하는 유형 
1901 년 ~ 2155년 

CHAR(M) 고정길이 문자열을 표현하는 유형 
M = 1 ~255 

VARCHAR(M) 가변길이 문자열을 표현하는 유형 
M = 1 ~ 255 

TINYBLOB
TINYTEXT 255개의 문자를 저장 
BLOB : BINARY LARGE OBJECT의 약자 

BLOB
TEXT 63535개의 문자를 저장 

MEDIUMBLOB
MEDIUMTEXT 16777215개의 문자를 저장 

LONGBLOB
LONGTEXT 4294967295(4Giga)개의 문자를 저장


 3. desc 테이블 명 ; 테이블의 각 컬럼 형식 보기



4. 데이터 입력하기 

5.한꺼번에 데이터 입력하기


6. no 필드에 값을 입력하지 않아도 자동적으로 증가하는 것을 볼 수 있다.


7. 원하는 필드만 선택할때...


8. 조건으로 검색하기



9. 내림차순 정렬하기


10.오름차순정렬


11. 조건절과 정렬 함께 사용하기


12.데이터 수정하기(조건절이 없으면 전부 바뀐다.)


13. 데이터 삭제(조건이 없으면 전부 삭제된다)


14. 컬럼(필드) 추가해보기


15. 컬럼 삭제해보기


16. 컬럼 수정해보기



17. 테이블 삭제해보기


18. 합계 연습을 위해 임시 테이블 만들었음


19. 필드의 최대, 최소, 평균, 합계구해보기 
    as 임시필드명 해주면 임시로 필드명이 생성된다.


20. 필드의 총 개수 구해보기


21. 한꺼번에 최대값과 합산값, 평균구하기.
     between 으로 범위값 내에 있는 필드 구하기
    in 으로 지정한 필드만 뽑아내기


22. not in 은 그것을 제외한 필드를 구한다.
     %는 like 와 함께 쓰이며 '%강%'은 강을 기준으로 강을 포함한 앞뒤문자검색을 해준다.


23. a 이후에 문자열 검색
     b 이전에 문자열 검색


24. limit는 레코드 처음부터 2개만 뽑아온다. 범위와 함께 쓰일 수도 있다.


25. limit 시작레코드번호, 뽑아올 레코드 갯수


26. 컬럼명 바꾸기(컬럼명을 바꿀땐 데이터도 같이 바꿔줘야 한다.)
     테이블 명 바꾸기....(아래참고)



27. 날짜형 데이터넣기
     now() 함수는 날짜를 가지고 있는 내장합수인데 선언한 데이터형에 따라 들어가는 값이 
     아래처럼 다르게 들어간다.


'♨ DataBase > MySQL' 카테고리의 다른 글

MySQL 관련 10가지 TIP  (0) 2011.07.22
Mysql 함수 모음  (0) 2011.07.22
MySQL Query(쿼리)문 모음  (0) 2011.07.22
MYSQL 날짜 데이터 타입  (0) 2011.07.22
mysql 컬럼 삭제, 추가, 변경  (0) 2011.07.22
mysql에서 LIMIT의 사용법  (0) 2011.07.22
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST