[SQL] 필수 My SQL 문법

Soo·2023년 10월 16일
0
post-thumbnail

백문이 불여일견이라고, 강의를 아무리 집중해서 보고, 다른 사람의 자료를 보더라도 손으로 쓰는 거만큼 머리에 남는게 없더라.
이것만은 짚고가자 하는 필수 SQL 문법 재정리하기!!

관련 노트 : 학습 과제 2 오답노트_비공개

SQL 작성 순서

SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT

SQL 실행 순서

FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY - LIMIT

✏️ 열기

mysql -u 유저네임 -p [데이터베이스]
mysql -h "엔드포인트" -P 3306 -u 유저네임 -p비밀번호 데이터베이스

✏️ 기초 type

  • CHAR 또는 CHARACTER: 고정 길이 문자열을 나타내는 데이터 타입( 지정된 길이만큼의 문자열을 저장)

  • VARCHAR 또는 CHARACTER VARYING
    : 가변 길이 문자열을 나타내는 데이터 타입 (최대 길이가 정해져 있으나 실제 데이터의 길이에 따라 유동적으로 조정됨)

  • TEXT
    : 긴 문자열을 나타내는 데이터 타입. 가변 길이의 문자열을 저장할 수 있음.

  • INTEGER
    : 정수 값을 나타내는 데이터 타입 (일반적으로 32비트 혹은 64비트로 표현)

  • REAL 또는 FLOAT
    : 실수 값

  • DOUBLE
    : 보다 높은 정밀도 제공

  • DECIMAL 또는 NUMERIC
    : 고정 소수점 숫자를 나타내는 데이터 타입, 정확한 소수 자리를 유지하기 위해 사용

  • DATE
    : 날짜 값을 나타내는 데이터 타입

  • TIME
    : 시간 값을 나타내는 데이터 타입

  • TIMESTAMP
    : 날짜와 시간을 나타내는 데이터 타입

  • BOOLEAN
    : 참(True) 또는 거짓(False) 값을 나타내는 데이터 타입

✏️ 테이블

💡 생성 (create)

create TABLE 테이블_이름 (열1_이름 type 그_외_옵션, 열2_이름 type 그_외_옵션)
# 예시 1
create table gas_brand (id int AUTO_INCREMENT,name varchar(16),primary key (id))

# 예시 2
create table gas_brand (id int AUTO_INCREMENT primary key,name varchar(16))
  • ,으로 데이터간 구분
  • 구성
    • id : 데이터 제목
    • int : type
    • AUTO_INCREMENT : 숫자 자동 생성
    • primary key (id) :

💡 자료(value) 입력 (insert into)

# 예시 1
insert into 테이블_이름 (열_이름1, 열_이름2) values ('데이터 내용1_string','데이터 내용2_string','데이터 내용3_string')
## (열_이름1, 열_이름2)은 전체 열 입력이 아닌 일부 열일 경우 작성하고, 전체 열 입력일 경우 안적어도 됨

# 예시 2
insert into gas_brand values (데이터 내용1_int, 데이터 내용2_int,데이터 내용3_int)
  • 데이터 타입에 따라 따옴표 사용하기

💡 조회

  • 테이블 타입 조회
desc 테이블_이름
  • 테이블 내용 조회
select * from 테이블_이름
  • * = 모든 value

💡 제약조건 (외래키)

✏️ Python

💡 시작하기

import mysql.connector

💡 커넥터 만들기

conn=mysql.connector.connect(
    host = "엔드포인트",
    port = 포트 넘버,
    user = '유저 이름',
    password = "비밀번호",
    database="데이터베이스 이름"
)

#즉, conn : 유저 정보가 담겨 있음

💡 커서 지정

cur=conn.cursor(buffered=True)

#conn에는 유저 정보

💡 명령&동작 시행

cur.execute("명령")
#명령이 길 경우 1,
sql = "insert into 테이블_이름 (데이터_제목) values ('데이터 내용1_string','데이터 내용2_string','데이터 내용3_string')"

cur.execute(sql)

#명령이 길 경우 2,(줄나눠도 인식시키는 방법)

sql = "INSERT INTO gas_station (a, b, c, d, e, f, g, h, i, j, k)" +\
"VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"

cur.execute(sql,(A,B,C,D,E,F,G,H,I,J,K))

💡 conn.commit()

  • 트랜잭션을 종료하고 다른 사용자에게 변경된 모든 사항을 보이도록 만드는 문
  • 일반적으로 트랜잭션 종료시 해당 업데이트를 확정한다는 의미에서 "커밋"이라고 사용
  • commit을 하면 바로바로 sql에 자료가 들어감
  • 업데이트를 취소 처리를 "롤백 (ROLLBACK)"이라고 하며, 이러한 제어를 "약속 제어"라고 부름
conn.commit()

💡 cur.fetchone( ) & cur.fetchall( )

  • . fetchone( )
    • fetchone을 호출할 때마다 로우 단위로 데이터를 얻을 수 있음
    • 아래 예시는 2개의 로우만 존재하므로 세번째부터 출력 X
In [5]: cursor.fetchone()
Out[5]: ('16.06.03', 97000, 98600, 96900, 98000, 321405)

In [6]: cursor.fetchone()
Out[6]: ('16.06.02', 99000, 99300, 96300, 97500, 556790)

In [7]: cursor.fetchone()

In [8]:
  • . fetchall( )
    • 한 번에 모든 로우를 읽기
In [9]: cursor.fetchall()
Out[9]: 
[('16.06.03', 97000, 98600, 96900, 98000, 321405),
('16.06.02', 99000, 99300, 96300, 97500, 556790)]

✏️ 연습 사이트

SQL 개념 연습하기 좋은 사이트 (1)

✏️ 출처

📚SQL 문법 정리
3) 데이터베이스로부터 데이터 읽기
COMMIT (SQL)
[SQL 24] 제약조건 - PK(Primary Key), FK(Foreign Key)
SQL 외래 키에 대한 이해
[SQL]작성 및 실행 순서를 이해하면 좋은 점

profile
데린이인데요 ໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა (잘못 된 부분은 너그러이 알려주세요.)

0개의 댓글

관련 채용 정보