~ tilde * asterisk, star ' apostrophe, qutation mark, quote ` backtick, grave accent - hyphen, dash " double qutation mark, double quoutes ! exclamation _ underscore , comma @ at + plus sign . dot # number sign, hash, sharp = equals sign / slash $ Dollar sign | vertical bar, pipe () round bracket, parentheses % percent \ backslash {} culry braket, brace ^ caret ; semicolon [] square bracket & am..
SELECT 문 SELECT 문은 데이터베이스에서 데이터를 검색할 때 사용하는 SQL의 가장 기본적인 쿼리입니다. 조회를 위한 명령어의 구조는 다음과 같습니다, --모든 열을 포함한 조회 SELECT * FROM 테이블명; --조회할 열이름을 나열 SELECT 열1, 열2 FROM 테이블이름; 기본적인 SELECT 문 가장 기본적인 형태의 SELECT 문은 * 를 이용해 모든 열(컬럼)을 선택하는 방법입니다. SELECT * FROM students; 특정 열(컬럼)을 선택하는 SELECT 문 특정 열을 선택해서 모든 열이 노출되지 않고 필요한 열만 검색할 때 사용합니다. 보통 SELECT 문을 만들 때는 모든 열이 필요하지 않으므로 특정 열만 선택해서 검색하는 것이 일반적입니다. SELECT stude..
INSERT 문 MySQL에서 INSERT 문은 Database에 새로운 행(레코드)를 추가하는 구문입니다. 데이터베이스에 값을 입력하는 기능을 하는 문장 정도로 생각하시면 됩니다. INSERT 구문의 기본적인 형태는 다음과 같습니다. 테이블명에 데이터를 삽입하기 위한 테이블을 기입하고 각 컬럽과 이에 대응하는 값을 VALUES 에 나열하면 됩니다. INSERT INTO 테이블명 (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); INSERT 문 예제 학생이라는 테이블이 있고 학생의 이름, 나이, 이메일을 삽입하는 예제를 만들어보겠습니다. INSERT INTO students (name, email, age) VALUES ('장발..
BETWEEN 구문 BETWEEN 구문은 데이터베이스에서 특정 범위의 값들을 선택하는 데 사용되는 SQL 구문입니다. 주로 숫자, 날짜 또는 문자열 값의 범위를 지정하여 해당 범위에 속하는 데이터를 추출하는 데 활용됩니다. 날짜를 예로 들어보면 다음과 같이 사용할 수 있습니다. 데이터베이스를 사용할 때 어디서 부터 어디까지의 범위의 데이터를 출력하고 싶을 때 사용됩니다. 대표적으로 어떤 기간내의 데이터를 출력하기 위해서 날짜와 연관해서 많이 사용됩니다. 다음 예제는 2024년 1월 1일 부터 2월 1일 사이의 데이터를 검색하기 위한 SQL입니다. SELECT * FROM [테이블 명] WHERE [컬럼명] BETWEEN '2024-01-01' AND '2024-02-01'; 다음과 같이 숫자의 범위를 통..
IN 연산자 IN 연산자는 데이터베이스에서 특정 조건을 만족하는 값들의 집합을 검색하는데 사용되는 SQL 구문입니다. 주로 WHERE 절에서 사용되며, 다수의 값 중에서 하나라도 조건을 만족하는 경우 해당 레코드를 선택합니다. 주로 WHERE 절에서 사용되며, 다수의 값 중에서 하나라도 조건을 만족하는 경우 해당 레코드를 선택합니다. SELECT * FROM [테이블명] WHERE [칼럼명] IN ([조건1], [조건2], [조건3]); IN 연산자 활용 OR를 통해서 특정 조건에 만족하는 값들의 집합을 검색해보겠습니다. 반복적인 구문을 사용해야 하기 때문에 번거롭고 가독성도 떨어집니다. SELECT * FROM users WHERE username = 'user1' OR username = 'user2..
LIKE 연산자 MySQL에서 LIKE 연산자는 패턴 매칭을 수행하는 데 사용됩니다. 이 연산자는 문자열의 일부 또는 전체를 비교하여 특정 패턴을 가진 데이터를 검색하는 데 유용합니다. SELECT * FROM [테이블명] WHERE LIKE [조건] LIKE 연산자 패턴 % : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%') _ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동') LIKE 연산자와 % 기호를 사용하는 경우, 패턴 매칭이 데이터베이스에서 모든 레코드에 대해 수행되어야 하기 때문에 성능에 영향을 미칠 수 있습니다. 일반적으로 다음과 같은 점을 고려할 수 있습니다: 인덱스 활용 여부 %로 시작하는 패턴 매칭은 인덱스를 사용하기 어려울 수 있습니다. 왜냐하면 와일드카드가 문자열의 처..
테스트 환경 및 mariadb 버전 10.6.12-MariaDB-0ubuntu0.22.04.1 Failed to Connect to MySQL at \[server ip:3306\] with user ... 데이터베이스에 연결시 문제가 되면 위와 같은 에러를 확인할 수 있습니다. 사용자가 외부에서 접근할 수 있도록 권한을 주었다고 하더라도 mysql이나 mariadb 의 경우 bind-address에 대한 설정을 해주어야 합니다. 다만 대부분의 예제가 mysql 기준으로 되어 있고 mariadb도 이전 버전의 설치 경로로 설명되어 있어 비교적 최신 버전인 10.6.12 버전에서 bind-address 설정하는 방법을 알아보겠습니다. mariadb의 ip 대역을 확인하려면 다음과 같이 netstat 명령을..
집합함수 집합함수는 다음과 같은 특징이 있습니다. 집합함수는 값을 계산해서 하나의 값으로 반환하는 함수입니다. 보통 group by 자주 같이 사용됩니다. where 절에서 바로 사용할 수 없기 때문에 group by 이후에 having 또는 서브쿼리를 사용합니다. 함수 리턴타입 설명 count Long 개수를 구함 max, min Long 최대, 최소값 구함 avg Double 평균 구함 sum Long 합 구함 ▼ 예제의 Player 엔티티는 Team 엔티티와 관계하고 있습니다. ▼ max, min, avg, sum은 해당 값이 존재하지 않는 경우 null을 값으로 리턴합니다. 다음과 같이 TypedQuery를 생성해서 getSingleResult() 메서드를 실행하면 각각 salary의 평균과 최고..
JPQL 특정 속성 조회 JPQL 을 사용할 때 select 절에 선택한 대상이 두 개 이상일 때 결과 타입은 Object 배열이 됩니다. select 결과가 Object 배열이므로 getResultList() 메서드가 리턴한 List에 담긴 데이터도 Object 배열입니다. JPQL 특정 객체로 속성 조회 Object 배열을 사용해서 데이터를 조회하면 형변환이 필요하며 해당 객체를 사용하기 불편해집니다. 그래서 클래스를 만들어 새로운 객체에 대입하면 조회시 해당 클래스에 맞게 객체가 생성됩니다. 우선 다음과 같이 조회될 객체에서 필요한 속성을 포함한 클래스를 선언합니다. select 구분에 새로운 객체를 할당하고 데이터를 조회합니다.
ALTER TABLE MySQL에서 RENAME 명령은 테이블의 이름을 변경하는 명령어입니다. 다수의 테이블 명을 변경하는 것은 물론 다른 데이터베이스 스키마에 특정 테이블을 이동시킬 수도 있습니다. ALTER로 테이블을 변경하는 것과 RENAME으로 변경하는 것은 동일하지만 RENAME으로 변경할 시 여러 개의 테이블을 한 번에 변경할 수 있고 또한 다른 스키마에 테이블을 이동시킬 수도 있는 장점이 있습니다. ▼ 우선 ALTER를 이용해서 테이블 이름을 변경시켜보겠습니다. (예: shopdb 데이터베이스의 dept 테이블을 emp 테이블로 변경해보겠습니다.) ALTER는 테이블의 정의를 변경하는 명령으로 이전 글 데이터베이스 기초 - 테이블(Table) 정의에 정리되어 있습니다. https://code..
스키마 생성 ▼ 새로운 스키마(데이터베이스)를 생성합니다. 사용자 관리 ▼ 사용자를 생성하고 권한을 부여합니다. ▼ 사용자의 비밀번호를 변경합니다. ▼ 사용자를 삭제합나다. ▼ 사용자의 권한 정보를 확인합니다. 사용자 관리 실습 ▼ 마지막으로 다음 조건에서 사용자를 생성하고 권한을 부여해보겠습니다. manager 계정을 만듭니다. IP 주소 (HOST) 192.168.0.77 에서 접근합니다. mydb에 모든 데이터베이스 권한을 부여합니다. 비밀번호를 paasword12 로 지정합니다. ▼ 해당 사용자가 데이터베이스에 추가되었는지 확인합니다.
Too many connections 개발을 하다 보면 여러 서버를 만들어서 데이터베이스에 접근하게 됩니다. 하지만 다음과 같은 에러를 마주하면 최대 접속 숫자를 늘려줘야 합니다. # ERROR 1040 (08004): Too many connections # Host 192.168.0.X Host is blocked because of many connection errors MySQL ▼ max_connecions 값을 확인합니다. 동시접속에 대한 값입니다. 기본값은 보통 151로 지정되어 있습니다. ▼ 다음 명령을 통해 현재 접속 중인 커넥션을 확인할 수 있습니다. ▼ 이제 max_connections 숫자를 변경해보겠습니다. 별도로 서버를 재시작하지 않더라도 잘 동작합니다만 만약 MySQL 서버를..