본문 바로가기

SQL

[SQL] where조건모음_select구조_그룹바이_형변환 * Like 3. % : 무엇이든 허용한다. 즉, ‘김’이 제일 앞 글자인 것들을 추출한다. 5. _ : 아무거나 한글자가 오는 값을 추출한다. > %, _ 가 검색할 문자열의 제일 앞에 들어가는 것은 성능에 나쁜 영향을 끼칠 수 있다. 인덱스를 사용하더라도 인덱스를 사용하지 않고 전체 데이터를 검색하게 된다. * any 5. 쿼리문 경남에 사는 회원은 2명이다. 3. 원래 서브쿼리는 1개의 데이터로 비교해야되지만 두명인경우 사용됨. 키가 173보다 크거나 같은 사람 또는 키가 170보다 크거나 같은 사람이 모두 출력됨. 즉, 170보다 크거나 같은 사람이 모두 출력됨. 또한 >= 기호가 = 기호였다고 가정해보자. 그럼 두명과 같아야하는데 any이므로 in 과 동일하게 쓰임.(or) * all 3. 위의.. 더보기
[Mysql MariaDB] 테이블_개체생성규칙_테이블삭제 1~20. 일부 DBMS에서는 CHAR와 VARCHAR는 영문자를 기분으로 1Byte를 할당하고, NCHAR와 NVARCHAR는 유니코드를 기준으로 2바이트를 할당한다. 그래서 영문자를 입력할 계획이라면 CHAR나 VARCHAR를, 한글을 입력할 계획이라면 NCHAR와 NVARCHAR를 사용한다. 하지만, UTF-8로 셋팅되어 CHAR, VARCHAR에 영문/숫자/기호를 입력하면 1바이트를 할당하고, 한글/중국어/일본어 등을 입력하면 내부적으로 3byte를 할당하므로 NCHAR와 NVARCHAR를 사용할 필요가 없다. 2~3. Char는 null 저장시에 char 공간을 모두 차지하지만, varchar는 공간을 차지하지 않는다. 따라서 null값을 많이 입력한다면 varchar가 좋다. - 데이터베이스 .. 더보기
[MySQL_MariaDB] Ansi_데이터베이스,테이블,열조회_알리아스 1. ANSI/ISO SQL : MySQL 외에도 많은 DBMS들이 있는데, 많은 DBMS사의 SQL의 표준이 필요했다. NCITS(국제 표준화 위원회)에서 위와 같은 명칭으로 SQL 표준을 관리. 이 중에서도 1992년에 제정된 ANSI-92 SQL과 1999년에 제정된 ANSI-99 SQL이라는 명칭의 표준이 대부분의 DBMS 회사에서 적용하는 기준이 되고 있다. 2. 각 회사들은 ANSI-92/99 SQL 표준을 준수하면서도 자신들의 제품의 특성을 반영하는 SQL에 별도의 이름을 붙였다. MySQL은 그냥 SQL, 오라클은 PL/SQL, SQL Server는 Transact SQL이라는 이름의 SQL문을 사용한다. 결국 MySQL이 사용하는 SQL은 ANSI-92/99 SQL의 내용을 포함하면서도 .. 더보기
[MySQL/MariaDB] 사용자 관리 모든 사용자에게 root의 비밀번호를 알려준다면, 고의든 실수든 문제발생시 데이터가 모두 유출되거나 증발하는 일이 생길수 있다. 따라서 각 DB에 알맞은 사용자와 그에 따른 권한을 부여할 필요성이 있다. 1. Navigator > Management > Users and Privileges 2. Add Account 3,4. 사용자 아이디/비밀번호 설정 왼쪽에 사용자가 생성되고, Account Limits 탭을 통해 최대 쿼리 수, 최대 업데이트 수, 시간당 최대 접속 수, 실시간 동시접속 최대 수 등을 설정할 수 있다. 모두 0이라면 특별히 제한이 없다는 의미. Administrative Roles : MySQL 자체에 대한 권한을 설정한다. Director는 모든 권한을 부여하려면 DBA는 모든 권한.. 더보기
[MySQL] 모델링_워크벤치ERD 1인 테이블의 키가 다의 테이블의 포린키로 생성된다. 모델DB입력 후 엑스 더블클릭 1. 테이블 생성 클릭 2. 빈화면에 마우스를 클릭하면 그 위치에 테이블이 생성된다. 3. 컬럼정보를 입력 테이블을 하나 더 만들고 관계를 생성할 수 있다. 워크벤치에 약간의 버그가 있어서 저장할 폴더명이 한글일 경우 저장 중 오류가 발생할 수 있다. 저장할 폴더를 위처럼 저장. 전부 닫은 후 모델링 파일을 실제 데이터베이스에 적용시켜보자. File Open Model 저장한 파일 오픈 Database > Forward Engineer 기본값 next 기본값 next 비번입력 ok 앞에서 모델링한 2개의 테이블을 확인할 수 있고, 필요하다면 Show Filter를 통해 내보내기할 테이블을 별도로 선택할 수도 있다. 디폴트.. 더보기
[MySQL_MariaDB] 백업_복사_insert_삭제 * 백업과 복원 > 서버의 하드가 깨져서 중요한 데이터를 잃어버릴 경우를 대비해 백업과 복원은 중요. 별도의 디스크를 준비하기 어려우므로 폴더를 다른 디스크라고 생각하자. 쇼핑몰DB에 producttbl테이블에 3개의 데이터가 있는 것을 확인 1,2. workbench의 Navigator > MANAGEMENT > Data Export(데이터 내보내기) > Data Export 창이 열린다. 3,4. Shopdb 데이터베이스를 선택하면, 오른쪽에 테이블, 뷰 등이 보인다. 모두 체크. 5. Object to Export 도 모두 체크해서 스토어드 프로시저, 스토어드 함수, 트리거 등도 백업을 한다. 6. 백업될 경로와 아래 모두 체크 : 모든 내용 백업 설정 7. 다됐으면 startExport Sql 문.. 더보기
[MySQL_MariaDB] 트리거 * 트리거(방아쇠) > 트리거는 사전적 의미로 방아쇠를 뜻한다. 방아쇠를 당기면 총알이 나가듯 테이블에 무슨일이 발생하면 자동으로 실행된다. > 테이블에서 insert나 update 또는 delete 작업이 발생되면 실행되는 코드 > 누군가 고의 혹은 실수로 테이블을 삭제한다면 누가 지웠는지 추적하는 일이 쉽지 않다. 이럴 때 트리거를 걸어놓는다면 이러한 문제를 해결할 수 있다. > 만약에 회원 중 당탕이가 회원탈퇴를 했다. 그런데 나중에 회원 탈퇴한 사람이 누구누구인지 알 방법은 없을까? - 데이터를 삭제하기 전에 다른 곳에 저장하면된다. 깜빡 잊을 수도 있다. > 위와 같은 경우에 삭제되기 전에 미리 다른 곳에 저장해주는 기능이 있다면 실수가 없을 것이다. 이것이 트리거의 대표적인 사용용도다. > 다.. 더보기
[MySQL_MariaDB] 스토어드프로시저_변수_if_case_while_에러처리_동적쿼리 * 스토어드 프로시저 > SQL을 하나로 묶어 편리하게 사용하는 기능. SQL을 묶는 기능 외에도 프로그래밍 언어와 같은 기능을 담당할 수도 있다. > 쿼리문의 집합으로 어떠한 동작을 일괄 처리하기 위한 용도로 사용된다. > DB서버로 긴 쿼리의 텍스트 문장을 전송하는 것이 아닌, 프로시저의 이름 및 매개변수 등 몇 글자의 텍스트만 전송하면 되므로 네트워크의 부하를 줄일 수 있다.(결과적으로 MySQL의 성능향상). 다른 DBMS에서는 스토어드 프로시저가 처음 호출 시 1회만 컴파일되고 메모리에 적재되어 사용하나, MySQL 프로시저는 호출할 때마다 컴파일됨. > 사용자테이블에 접근하려면 당연히 userTBL에 접근해야하지만, 테이블 정보없이 프로시저를 보내면 보안에 강할 수 있다. 매번 회원 테이블 당.. 더보기