반응형

SELECT로 데이터를 불러올 때 가상 칼럼을 추가해서 불러오는 방법입니다.

 

아래처럼 _id, createdAt, text만 있는 테이블에 type 칼럼을 추가 시키고 싶을 때 사용하는 방법입니다.

_id createdAt text type( 가상으로 추가하고 싶은 내용)
1 2023-09-04 안녕하세요 'like'
2 2023-09-05 빠이빠이 'like'
3 2023-09-06 어서오세요 'like'
4 2023-09-07 굿밤 'like'

 

기본적으로 아래처럼 테이블을 불러오면 _id, createdAt, text까지의 칼럼을 불러오게 됩니다.

SELECT * FROM 테이블;

 

가상 칼럼을 추가하는 방법은 아래처럼 추가해주면 됩니다.

SELECT *, 'like' AS 'type' FROM 테이블;

 

반응형
반응형

테이블에 DATETIME, TIMESTAMP등일 경우 사용가능한 내용입니다.

데이터 불러오기를 사용하다보면 오늘부터 어제까지의 데이터, 오늘부터 일주일 전까지의 데이터 등등 기간에 따라 데이터를 불러와야 할 때가 있습니다. 이럴때 DATE_ADD 함수를 사용해서 날짜나 시간에 일정한 값을 더하고 결과를 반환시킬 수 있습니다.

 

# 기본 구문
DATE_ADD(date, INTERVAL value unit);

# 시간 더하기
SELECT DATE_ADD(NOW(), INTERVAL 3 DAY);
# 시간 빼기
SELECT DATE_SUB(NOW(), INTERVAL 3 DAY);

파라미터

  • date: 날짜나 시간 값을 나타내는 인자입니다.
  • value: 더할 값입닏. 음수 값을 사용하면 뺄 수도 있습니다.
  • unit: 더할 값의 단위를 지정합니다. DAY, MONTH, YEAR, HOUR, MINUTE, SECOND등이 있습니다.

 

이제부터 BETWEEN을 사용해서 특정 범위 내의 값을 검색하는 방법입니다.

BETWEEN: 특정 범위 내의 값을 검색하는데 사용됩니다.

SELECT * FROM table_name WHERE table_name_column BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW();

위의 쿼리는 현재 날짜를 기준으로 7일 전부터 현재까지의 값을 검색합니다.

위와 비슷한 형태로 날짜 범위와 기간을 조절해서 쿼리를 생성할 수 있습니다.

반응형
반응형

AUTO_INCREMENT값을 초기화하는 방법입니다.

 

작업을 하다보면 아래처럼 Primary key를 자동으로 증가시키는 내용을 만들때가 있습니다.

위처럼 만들어진 키는 이전 데이터가 지워진다고해서 값이 재조정되지 않습니다.

 

세번째 네번째 PK를 지우고 다섯번째 PK를 생성하면 3번이 만들어지지 않고, 5번이 생성됩니다.

이럴때, 이 AUTO_INCREMENT 값을 초기화 하려면 아래처럼 쿼리를 실행시켜주면 됩니다.

 

테이블 명과 AUTO_INCREMENT를 시작할 값을 적어주면 됩니다. ( tests: 테이블명, 10: 시작할 번호 )

ALTER TABLE tests AUTO_INCREMENT = 10;

**주의: 새로 시작하는 값보다 높은값이 존재하면 안됩니다 !

 

아래 쿼리문은 현재 모든 값을 1부터 재조정하고, 다음 값을 마지막 번호 + 1로 정하는 명령어입니다.

ALTER TABLE tests AUTO_INCREMENT = 1;
SET @COUNT = 0;
UPDATE tests SET _id=@COUNT:=@COUNT+1;

 

아래처럼 초기화할 수 있습니다.

반응형
반응형

mySQL를 사용도중 - ( 하이픈 )을 인식하지 못하고 중간에 끊기는 현상이 발생했습니다.

 

Error: Unknown column '7abdb687' in 'where clause' at Packet.asError ~~

 

에러발생 EX::

`SELECT * FROM edits WHERE _id=7abdb687-1029-4161-9981-a1940a11fc59;`;

 

해결방법

`SELECT * FROM edits WHERE _id='7abdb687-1029-4161-9981-a1940a11fc59';`;

하이픈을 이어주기 위해서 '' 따옴표를 사용했습니다.

평소에는 아무생각없이 따옴표를 사용해서 작성을 했었는데, 이번에 한번 실수로 빼먹고 사용했더니 이런 에러가 나는것을 발견할 수 있었습니다.

반응형
반응형

환경변수 확인하기

 

Terminal

$ echo $PATH

기존에 지정되어있는 환경변수를 확인할 수 있습니다.

 

환경변수 설정하기

 

Terminal

$ sudo nano /etc/paths

암호를 입력하고 난 뒤, mysql/bin 폴더 경로를 입력해줍니다.

/usr/local/mysql/bin

control + x를 누르고 y를 누르고 enter를 누르면 저장하고 나와집니다.

이후, 터미널을 재시작 한 뒤, echo $PATH를 다시 입력해보면 mysql 경로가 저장되어 있을 것입니다.

 

반응형
반응형
mysql> show variables like 'datadir';

Database 저장 경로 확인하기

반응형
반응형

terminal

// mysql 루트 입장합니다.
$ mysql -u root -p

// privileges on은 DB에 모든 권한을 줍니다.
mysql> grant all privileges on *.* to 'username'@'%';

or

mysql> grant all privileges on *.* to 'username'@'localhost';

%란 무엇인가 ? 바로가기

 

특정권한만 부여하기

mysql> grant select, inser, update on databaseName.* 'username'@'%';

 

변경한 내용 즉시 적용하기

mysql> FLUSH PRIVILEGES;

권한을 부여해준 이후 이 내용을 즉시 적용하기 위해서는 FLUSH PRIVILEGES;를 해주어야합니다.

반응형
반응형

MySQL Workbench 열 플래그

 

아래처럼 MySQL Workbench에 table을 생성하려고 할 때, PK, NN, UQ, BIN, UN, ZF, AI의 열 플래그가 있습니다.

 

  설명
PK Primary Key, 중복이나 빈값이 들어올 수 없습니다.
NN Not Null, 빈값이 들어올 수 없습니다.
UQ Unique, 중복 값을 넣을 수 없습니다.
B 데이터를 이진 문자열로 저장합니다. ( 010101010처럼 0과 1로만 된 데이터 )
UN Unsigned data type, 음수가 아닌 숫자만 해당합니다. ( int, double 등의 경우 UN을 사용하면 -값 +값이던 범위가 -값은 없어지고 +값만 2배로 늘어납니다. ex: -500 ~ +500 => 0 ~ 1000 )
ZF Zero Filled, 0으로 채워집니다. ( 길이가 int(5)와 같이 5인 경우 모든 필드는 5번째 자리까지 0으로 채워집니다. ex: 12 => 00012, 1200 => 01200 )
AI 자동으로 값이 증가합니다.
G 생성된 열. 즉, 다른 열을 기반으로하는 수식에 의해 생성된 값입니다.

 

반응형
반응형

MySQL에서 가장 기본적인 SQL 문자 : [ SELECT | INSERT | UPDATE | DELETE ]

 

원하는 데이터를 가져와 주는 기본적인 SELECT ... FROM 

SELECT -- 열 이름
FROM -- 테이블 이름
WHERE -- 조건

 

USE 구문

SELECT문을 사용하려면 먼저 데이터베이스를 지정해야 한다. ( 데이터베이스를 지정 or 변경하는 구문 )

USE 데이터베이스_이름;

MySQL Workbench에서는 Schemas탭에서 더블클릭을 하거나 오른쪽 클릭 후 'Set as Default Schema'를 선택하면 된다.

 

만약 다른 데이터베이스가 지정된 상태에서 조회를 하면 에러 코드가 뜬다.

USE myDB;
SELECT * FROM mysql;

Error Code: 1146 Table "myDB.mysql"doesn't exist

myDB 데이터베이스에 mysql 테이블이 없기 때문에 테이블 에러가 나온다.

 

 

SELECT * FROM titles;

* : 전체( 모든 것 )를 의미. *가 사용된 곳이 열 이름이 나올 곳의 위치이므로 이곳의 *은 모든 열을 의미한다.

FROM : 테이블 / 뷰 등의 항목

:: 'titles테이블에서 모든 열의 내용을 가져와라'는 의미

 

원칙적으로 사용되는 형식 [ 데이터베이스이름.테이블이름 형식으로 사용됨 ]

SELECT * FROM myDB.titles;

현재 데이터베이스가 myDB이기 때문에 생략해도 된다.

 

테이블의 전체 열이 아닌 한가지 열만 가져오기

SELECT first_name FROM myDB;

이런식으로 사용하면 first_name의 열만 가지고 온다.

 

테이블의 한가지 열이 아닌 두가지 이상 열 가져오기

SELECT first_name, last_name, gender FROM myDB;

이런식으로 ,를 사용해서 구분하면 여러 열을 가져 올 수 있다. ( 순서 상관 없음 )

반응형
반응형

Workbench 메뉴의 Database --> Forward Engineer를 선택한다.

 

Stored Connection이 'Local stance ~'로 선택된 것을 확인하고 continue를 클릭한다.

이후 따로 설정할 필요없이 계속 continue를 눌러서 넘어가준다.

 

 

이전에 다이어그램에 만들었던 내용이 자동으로 SQL문으로 생성된것을 볼 수 있다.

continue를 클릭해준다.

문제없이 만들어 졌음을 확인할 수 있다.

 

여느때와 마찬가지로 Schemas로 넘어가서 오른쪽을 클릭하고 Refresh All을 클릭한다.

 

문제없이 ModelDB 테이블을 확인할 수 있다.

 

반응형

+ Recent posts