본문 바로가기

MySQL26

Query Processing Order FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT/OFFSET 2025. 6. 5.
1D1Q -- employees 테이블에서-- last_name이 E로 시작하고(like), -- 3번째 글자가 E인 직원을(예시 : erez)-- last_name을 대문자로 바꾸어서(ucase) -- 중복없이(distinct) 출력해주세요select distinct ucase(last_name)from employeeswhere last_name like 'E_E%' ; 2025. 5. 29.
1D1Q -- employees 테이블에서 -- last_name이 L로 시작하고 -- birth_date가 11월 13일인 -- 직원의 수를 모두 count 해주세요select count(*)from employees where last_name like 'L%'and birth_date like '%11_13'; 2025. 5. 28.
1 day 1 query -- INNER JOIN을 사용하여, -- title이 Senior Engineer이고, first_name이 'ram'으로 시작하고, salary가 100000 이상인,-- 모든 직원의 emp_no, first_name, salary, title을 조회하세요.select e.emp_no, e.first_name, s.salary, t.titlefrom employees as einner join salaries as s on e.emp_no = s.emp_noinner join titles as t on e.emp_no = t.emp_nowhere t.title = 'Senior Engineer' and e.first_name like 'ram%' and s.salary > 100000;create t.. 2025. 5. 16.
Group by & Having DROP TABLE IF EXISTS tb_student;-- IF EXISTS : 해당 테이블이 존재할 경우에만 삭제하도록 조건을 거는 옵션CREATE TABLE tb_student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, class CHAR(1) NOT NULL, score INT NOT NULL);INSERT INTO tb_student (name, class, score) VALUES('김민수', 'A', 85),('이서연', 'B', 75),('박지훈', 'A', 65),('최예린', 'A', 70),('정하윤', 'B', 95),('강동현', 'C', 88),('오소연', 'C', 92),('한지민.. 2025. 5. 16.
ANSI SQL standard 데이터베이스 관리 시스템(DBMS)의 호환성, 일관성, 이식성을 보장하기 위해 SQL(Structured Query Language) 표준을 정의합니다. ANSI SQL은 SQL:1992, SQL:1999, SQL:2011, SQL:2016 등 버전으로 발전하며, 각 버전은 윈도우 함수, JSON 지원 등 새로운 기능을 추가했습니다.-- ANSI 함수 사용해보기create database my_emp_db;use my_emp_db;CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10, 2), -- 최대 99999999.99 hire_date DA.. 2025. 5. 16.
IF -- MySQL 에서는 @ 기호를 사용하여 사용자 정의 변수를 선언하고 선언가능-- score 변수에 값 선언과 초기화SET @score = 85;-- 변수 출력select @score;-- 변수에 쿼리 결과 저장하기-- select * from tb_student;create table students( id int primary key, name varchar(50), score int ); insert into students values (1, 'Hong', 75), (2, 'Kim', 55);-- select... into @변수명, 문법을 사용하면 쿼리 결과를 변수에 저장 가능select score into @student_score from students where i.. 2025. 5. 15.
Variable @ 2025. 5. 15.
Alias 2025. 5. 15.
Inner and Outer join -- JOIN-- > Inner join and Outer join-- 1. Inner join -- 2. Outer join-- > Left join and right join-- 1) Inner join (cross join) - ON 조건 없이 사용할때 Inner join을 cross join이라 부른다-- 즉, cross join 은 inner join의 특수형태이다(많이 안씀)select * from tb_studentjoin tb_grade;select * from tb_grade;select * from tb_student;-- 보통 inner join 사용할때 on 조건을 설정함-- no | name | gender | age | grade | scoreselect * from tb_stu.. 2025. 5. 14.
Join -- drop database school;-- create database school;-- use school;-- 학생, 성적 등급 테이블 생성create table tb_grade( grade char(1) primary key, score int);create table tb_student( no int primary key, name varchar(20) not null, gender enum('F','M') not null, age int not null, grade char(1), foreign key(grade) references tb_grade(grade));insert into tb_grade (grade, score) values('A', 100),('B.. 2025. 5. 14.
DBdiagram.io https://dbdiagram.io/d dbdiagram.io - Database Relationship Diagrams Design Tool dbdiagram.io 2025. 5. 13.
Relation Degree = Relation between two relationsuse school;-- Relation degree?-- 사람과 여권의 관계 차수 = 1:1create table tb_person( person_id int auto_increment, name varchar(50) not null, primary key(person_id));create table tb_passport( passport_id int auto_increment, passport_number varchar(20) not null, person_id int unique, primary key(passport_id), foreign key(person_id) references tb_person(per.. 2025. 5. 13.
Index? -- drop database school;-- create database school;-- use school;-- Index?-- 1. 기본키, 고유키 사용시 자동으로 인덱스가 생성됨(primary, unique)-- 2. 필요시 직접 인덱스를 설정가능(SELECT, 데이터 엄청 많은 테이블, 수정이 적은 테이블)-- 2.1. 테이블 생성시 인덱스를 설정하는방법?create table student( id int primary key, name varchar(50) not null, grade int not null, major varchar(50) not null, english_score int not null, index idx_major(major) );-- 2.2.. 2025. 5. 13.
Key constraint use school;-- member table designcreate table member( id int primary key auto_increment, email varchar(100) unique, name varchar(50) not null, phone varchar(20) );select * from member;insert into member(email, name, phone) values ('a@naver.com' , '홍길동', '010-1111-1111'), ('b@naver.com' , '김영희', '010-1111-1111'), ('c@naver.com' , '이철수', '010-1111-1111'); -- 중복 이메일 데이터 삽입 실패(e.. 2025. 5. 12.