pymysql
1. 커넥션 연결 connection
2. 커서 (데이터베이스의 로우를 가리키는 것) cursor
3. sql호출, %s parameter
4. 커서 → 커리 시행
5. 조회 :fetch , 생성 수정: commit
GROUP BY : 집계
WHERE에서 처리 후 GROUP BY
WHERE: 테이블에 실제 존재하는 데이터만 간섭할 수 있음
1. 테이블을 조건에 맞게 자름
2. 집계하여 임시테이블을 만듬
3. 다시 자름
HAVING 조건절
SELECT b.id, SUM(qty) AS sum_qty
FROM buy
GROUP BY b.product
HAVING sum_qty > 10
작가 이름별 도서관 책 보유량 (count)를 알고 싶습니다.
python으로 결과를 가져오면 될 것 같고, dataframe으로 예쁘게 내보냅시다.
단, 책 갯수가 10개보다 많아야 합니다.
SQL : 정형화된(데이터가 구조화, 틀, 규칙) 질의어
NOSQL: No 구조화된 질의어, 자유롭다. 트렌잭션↓, 대량의 데이터, 유연함
MongoDB: key, value → BSON (Binary 형태로 저장(압축) + Json)
스키마(데이터 구조) 유연 ← 스키마가 없는 것은 아님, 유연, key에 따라 분류되는 형식
use database; 하면 데이터를 만듬 존재, 실데이터 x
db.[컬렉션 이름]insertOne({"name":"User","count":1});
컬렉션 이름이 있으면 찾아주고 없으면 만들어줌.
db.testcol.insertOne({"name": "user2", a:1,b:2})
Query
find ({ "a":1})
find ({ "a":{lt: {}}})
db.inventory.find({"qty": {"$gt": 30}}).pretty()
#qty가 30 이상인 것 찾기
db.inventory.find({"qty": {"$gt": 50}}).pretty()
db.inventory.find({item : 'notebook'})
db.inventory.find({item: {$in: ["notebook"]}}).pretty()
db.inventory.find({item : {$in :['paper','planner']}},{'size':true})
python mysql 연결
python mongodb 연결
import pymongo
connection = pymongo.MongoClient("mongodb://localhost:27017/") # mongoda connection 연결
database=connection['test'] # 데이터 베이스를 찾는다.
collection= database['inventory'] # 컬렉션을 찾는다.
query={'status':'D'}
datas=collection.find(query) # 쿼리한다.
list2=[]
for data in datas: # 데이터가 여러건이면 for문에서 찾아온다.
list2.append(data)
df2=pd.DataFrame(list2)
df2['item']
import pymongo
connection = pymongo.MongoClient("mongodb://localhost:27017/")
database=connection['test']
collection= database['inventory']
query={"qty": {"$gt": 70}}
datas=collection.find(query)
list3=[]
for data in datas:
list3.append(data)
df3=pd.DataFrame(list3)
df3
import pymongo
connection = pymongo.MongoClient("mongodb://localhost:27017/")
database=connection['test']
collection= database['inventory']
query={'status':'A' , "qty": {"$lt": 30} }
datas=collection.find(query)
list4=[]
for data in datas:
list4.append(data)
df4=pd.DataFrame(list4)
df4
입력이 빠르다 (데이터 구조x)
원하는 데이터를 마음대로 넣을 수 있다.
구조 잡는 밑작업이 필요 없음 (있는 그대로를 MongoDB로 집어넣기 때문에)
테이블을 미리 만들어 놓고 들어가게끔 구조가 필요함.
명령어 형식이 아니라 insert를 해줘야함
aggregation : 집계 방법 (count, sum, max, min, group)
find : 데이터 검색

one
many
update(
{조건문},
{$set:{바꾸고 싶은 것}}
);
ex
db.inventory.updateMany( {status:"D"}, { $set: {status: "b"}})
데이터베이스 RDBMS
table을 조작하는 방법 : sql (s구조화된 q질의 l언어)
(CREAT [INSERT], READ [SELECT], UPDATE [UPDATE], DELETE [DELETE] )
#INSERT
INSERT INTO (컬럼) VALUES ~
#SELECT
SELECT 컬럼 FROM 테이블 WHERE 조건
#UPDATE
UPDATE 테이블 SET 컬럼 = 내용 WHERE 조건
#DELETE
DELETE FROM 테이블 WHERE 조건
INNER JOIN 테이블 ON 연결
OUTER JOIN (LEFT JOIN, RIGHT JOIN)
TRANSACTION START
COMMIT () # 처리 해주기
ROLLBACK() # 실패시 롤백 해야함
PK : 하나의 열을 대표하는키
FK : 관계를 나타내는 관계 정보를 갖고 있는 키
ALTER TALBE 명 ADD|DROP|MODIFY 하고싶은 것
관계
커넥션 → 커서 → query → 결과
구조가 없는 sql (MongoDB)
database - collection - document
MongoDB에 데이터 집어넣기
db.[컬렉션].insert | find | update | delete
find({조건},{가져올 데이터})
update({바꿀데이터},{$set:{바뀔데이터}})
꼼꼼한 학습일지 잘 읽었습니다~ 앞으로도 응원 드리겠습니다^.^ 남은 과정 끝까지 화이팅 화이팅~!