카테고리 없음

마리아 디비

editor9386 2024. 12. 20. 17:45

비밀번호 치고 로그인
접속 완료(메인화면)

 

실행

sysdm.cpl

 

 

 

우클릭 -새로생성-테이블
새로 테이블 생성

 

 

 

 

CLI 로 TABLE 생성하는 방법

 

USE shopDB;

#테이블 내용 조회
SELECT * FROM membertbl;

#SELECT 열이름 FROM 테이블 이름;
# * :전부 다

SELECT memberName,memberAddress FROM membertbl;
SELECT memberAddress,memberName FROM membertbl;
#명령어 쓴 순서가 곧 출력 순서!!
#html 보낼 때 순서가 중요!!

SELECT memberName,memberAddress FROM membertbl WHERE memberName= '지윤이';
#WHERE 조건절 // 조건 열 이름 = '조건 내용'

#quiz 조건절 이용해서 "한주연 |Han + 인천 남구 주안" 으로 출력되게

SELECT memberName,memberID,memberAddress FROM membertbl WHERE memberName='한주연'


CREATE TABLE `my testTBL` (id INT);
#열이름은 공백 불가
#백틱 : 짝따박대(~밑에)
#짝따 or 큰따 => 문자열 만들어야하는데 // 백틱=> 공백가능
SELECT * FROM `my testTBL`;

-- SQL 주석처리
#다른 언어들에서 "#"많이 써서 지원해줌

DROP TABLE `my TBL` ;

#quiz 열이 2개 이상인 테이블 만들고 데이터 3행 추가

CREATE TABLE `my TBL` (id INT, NAME CHAR(30));
INSERT INTO `my TBL`(id,NAME)
VALUES 
(1, '서나리' ),
(2,'김은성');
(3,'김병구');


SELECT id,NAME FROM `my TBL`;


`my tbl`-- 테이블 생성
CREATE TABLE `my TBL` (
    id INT,
    NAME CHAR(50)
);

-- 데이터 삽입
INSERT INTO `my TBL` (id, NAME)
VALUES
    (1, '서나리'),
    (2, '유은성');
    

 

 

DROP DATABASE IF EXISTS sqlDB;
CREATE DATABASE sqlDB;

USE sqlDB;

CREATE TABLE userTBL(
userID CHAR(8) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
addr CHAR(2) NOT NULL,
mobile1 CHAR(3),
mobile2 CHAR(8),
height SMALLINT,
mDATE DATE
);

CREATE TABLE buyTBL(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
userID CHAR(8) NOT NULL,
prodName CHAR(8) NOT NULL,
groupName CHAR(4)
price  INT NOT NULL,
amount SMALLINT NOT NULL,
FOREIGN KEY(userID) REFERENCES userTBL(userID)
);




INSERT INTO userTbl VALUES('LSG',N'이승기',1987,N'서울','011','11111111',182,'2008-8-8');

INSERT INTO userTbl VALUES('KBS',N'김범수',1979,N'경남','011','22222222',173,'2012-4-4');

INSERT INTO userTbl VALUES('KKH',N'김경호',1971,N'전남','019','33333333',177,'2007-7-7');

INSERT INTO userTbl VALUES('JYP',N'조용필',1950,N'경기','011','44444444',166,'2009-4-4');

INSERT INTO userTbl VALUES('SSK',N'성시경',1979,N'서울','NULL','NULL',186,'2013-12-12');
INSERT INTO userTbl VALUES('LJB',N'임재범',1963,N'서울','016','66666666',182,'2009-9-9');
INSERT INTO userTbl VALUES('YJS',N'윤종신',1969,N'경남',NULL,NULL,170,'2005-5-5');
INSERT INTO userTbl VALUES('EJW',N'은지원',1972,N'경북','011','88888888',174,'2014-3-3');
INSERT INTO userTbl VALUES('JKW',N'조관우',1965,N'경기','018','99999999',172,'2010-10-10');
INSERT INTO userTbl VALUES('BBK',N'바비킴',1973,N'서울','010','00000000',176,'2013-5-5');


--위에 오류나서 새로만듬


USE sqlDB;

-- userTBL 테이블 생성
CREATE TABLE userTBL(
    userID CHAR(8) NOT NULL PRIMARY KEY,
    NAME VARCHAR(10) NOT NULL,
    birthYear INT NOT NULL,
    addr CHAR(2) NOT NULL,
    mobile1 CHAR(3),
    mobile2 CHAR(8),
    height SMALLINT,  -- 'heigh'를 'height'로 수정
    mDATE DATE
);

-- buyTBL 테이블 생성
CREATE TABLE buyTBL(
    num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    userID CHAR(8) NOT NULL,
    prodName CHAR(8) NOT NULL,
    groupName CHAR(4),
    price INT NOT NULL,
    amount SMALLINT NOT NULL,
    FOREIGN KEY(userID) REFERENCES userTBL(userID)
);

-- userTBL에 데이터 삽입
INSERT INTO userTBL VALUES('LSG', N'이승기', 1987, N'서울', '011', '11111111', 182, '2008-08-08');
INSERT INTO userTBL VALUES('KBS', N'김범수', 1979, N'경남', '011', '22222222', 173, '2012-04-04');
INSERT INTO userTBL VALUES('KKH', N'김경호', 1971, N'전남', '019', '33333333', 177, '2007-07-07');
INSERT INTO userTBL VALUES('JYP', N'조용필', 1950, N'경기', '011', '44444444', 166, '2009-04-04');
INSERT INTO userTBL VALUES('SSK', N'성시경', 1979, N'서울', NULL, NULL, 186, '2013-12-12');
INSERT INTO userTBL VALUES('LJB', N'임재범', 1963, N'서울', '016', '66666666', 182, '2009-09-09');
INSERT INTO userTBL VALUES('YJS', N'윤종신', 1969, N'경남', NULL, NULL, 170, '2005-05-05');
INSERT INTO userTBL VALUES('EJW', N'은지원', 1972, N'경북', '011', '88888888', 174, '2014-03-03');
INSERT INTO userTBL VALUES('JKW', N'조관우', 1965, N'경기', '018', '99999999', 172, '2010-10-10');
INSERT INTO userTBL VALUES('BBK', N'바비킴', 1973, N'서울', '010', '00000000', 176, '2013-05-05');




INSERT INTO buyTBL VALUES(NULL, 'KBS','운동화',NULL, 30,2);
INSERT INTO buyTBL VALUES(NULL, 'KBS','노트북','전자', 1000,1);
INSERT INTO buyTBL VALUES(NULL, 'JYP','모니터','전자', 200,1);
INSERT INTO buyTBL VALUES(NULL, 'BBK','모니터','전자', 200,5);
INSERT INTO buyTBL VALUES(NULL, 'KBS','청바지','의류', 50,3);
INSERT INTO buyTBL VALUES(NULL, 'KBS','메모리','전자', 80,10);
INSERT INTO buyTBL VALUES(NULL, 'EJW', '책', N'서적', 15, 2);
INSERT INTO buyTBL VALUES(NULL, 'EJW', '청바지', N'의류', 50, 1);
INSERT INTO buyTBL VALUES(NULL, 'BBK', '운동화', NULL, 30, 2);
INSERT INTO buyTBL VALUES(NULL, 'EJW', '책', N'서적', 15, 1);
INSERT INTO buyTBL VALUES(NULL, 'BBK', '운동화', NULL, 30, 2);

 

 

 

 

USE employees;
SELECT * FROM employees;

SELECT * FROM employees.titles;
#USE employess; 구문 생략가능
#employees .titles // db이름.테이블 이름

SELECT last_name,first_name,gender FROM employees;

SHOW TABLES;
#현재 DB안에서 갖고있는 테이블 정보 조회

SHOW TABLE STATUS;
#용량,업데이트 날짜 , 길이 등등

USE sqlDB;
SELECT * FROM userTBL;
SELECT * FROM userTBL WHERE NAME="김경호";
#where 조건절
#검색할 열 이름 = "조건"
#순서주의!

SELECT * FROM userTBL WHERE height>="182"; #키가 182보다 큰사람들 출력
SELECT * FROM userTBL WHERE birthyear>=1970 AND height>="182"; #키가 182보다 크고 생년이 1970보다 큰사람들만  출력
#조건의 순서는 안중요함

#BETWEEN
SELECT * FROM userTBL WHERE height>=180 AND height<="182"; #키가 181~182
SELECT * FROM userTBL WHERE height BETWEEN 180 AND 182; #키가 181~182
#사이값 출력 , 결과는 같다
#연속된 값 , 숫자에서만 가능


#IN
SELECT * FROM userTBL WHERE addr='경북' OR addr='경남'OR addr='전남'
SELECT * FROM userTBL WHERE addr IN('경북','경남','전남');
#조건이 문자열 일때 IN사용


#lIKE
SELECT * FROM userTBL WHERE NAME LIKE'김%';
#글자수 제한 없이 전부 출력 ,* 비슷한 의미
SELECT * FROM userTBL WHERE NAME LIKE'_종신';
#_ 글자 수만큼 언더바로 표현



#QUIZ employeesDB.employees
#-> 남사 , 입사일 1990이후
#-> 성이 M으로 시작


USE employees;
SELECT * FROM employees WHERE first_name LIKE'm%' AND gender ='M' AND hire_date>='1990-01-01';

USE sqldb;
#서브쿼리
#조건을 쿼리문으로 작성
#메인쿼리문 안에 서브쿼리문

SELECT *FROM userTBL WHERE height > 177;
SELECT *FROM userTBL WHERE height > 
(SELECT height FROM userTBL WHERE NAME='김경호')

#DB => 실시간으로 바뀌는 값을 바로 적용
# 평균 ,최대 ,최소값 ,중위값 등등  벼하는 값에 대응

#ANY
SELECT * FROM usertbl WHERE height>
(SELECT height FROM userTBL WHERE addr='경남');
#서브 하위 커리에 결과가 2개 나와서 에러가 발생한다

SELECT * FROM usertbl WHERE height>
ANY (SELECT height FROM userTBL WHERE addr='경남');
#height > 170 or height>173 // any와 같은 의미


#ALL
SELECT * FROM usertbl WHERE height>
ALL (SELECT height FROM userTBL WHERE addr='경남');
#결과를 모두 만족
#큰 값을 결과로 인식
#height > 170 or height > 173 // ALL와 같은 의미





#ORDER BY (정렬)
SELECT * FROM userTBL ORDER BY mDATE ;
#오른차순이 디폴트로 정렬

SELECT * FROM userTBL ORDER BY mDATE ASC;
#오름차순 안써도 오름차순댐

SELECT * FROM userTBL ORDER BY mDATE DESC;
#내림차순



#quiz employees-> 생일 순 정렬 (내림차순)/ 입사일 전체 평균(AVG())보다 최근 입사자만 (서브쿼리)
USE employees;
SELECT * FROM employees WHERE hire_date>(SELECT AVG(hire_date) FROM employees)
ORDER BY birth_date DESC ;

USE employees;
SELECT * 
FROM employees 
WHERE hire_date > (
    SELECT DATE(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(hire_date)))) 
    FROM employees
)
ORDER BY birth_date DESC;

USE sqldb
#DISTINCT (중복제거)

SELECT addr FROM userTBL ORDER BY addr;

SELECT DISTINCT addr FROM userTBL ORDER BY addr;
#양이 많아지면 중복 빼고 갯수 세는게 더어렵다
#duf dlfma dkvdp DISTINCT 위치 중요@@@


#LIMIT (출력 갯수 조절)

SELECT * FROM employees.employees;

SELECT * FROM employees.employees LIMIT 10;
#쿼리 구문 테스트 할 때 DB 서버 부담 줄이기
#DB가 여러개 다른 DB에 영향 미치는 경우의 수 x

#테이블 복사
CREATE TABLE buytbl2(SELECT * FROM buytbl);
SELECT * FROM buytbl2;
SELECT * FROM buytbl;
#제약조건, 키 등등 정보는 안가져옴
#데이터 UPDATE 구문 테스트 


#GRUOP BY 절
#집계 함수
#AVG(평균), MIN(최소),MAX(최대),COUNT(갯수),SUM(합)
#COUNT(DISTINT)행의 갯수, 중복은 하나만,STD(표준편차),VAR_SAMP(분산)

SELECT userID FROM buytbl GROUP BY userID;
#어러개 중복값을 하나로 묶는 효과

SELECT userID,SUM(amount) FROM buytbl GROUP BY userID;
SELECT userID,AVG(amount) FROM buytbl GROUP BY userID;

SELECT userID,MIN(amount) FROM buytbl GROUP BY userID;
SELECT userID,MAX(amount) FROM buytbl GROUP BY userID;
SELECT userID,STD(amount) FROM buytbl GROUP BY userID;

SELECT userID ,SUM(amount) AS '구매합' FROM buytbl GROUP BY userID;


#집계 함수의 활용
SELECT NAME, MAX(height),MIN(height) FROM usertbl;
#원하는 값이 안나옴
SELECT NAME, MAX(height),MIN(height) FROM usertbl GROUP BY NAME;
#원하는 값이안나옴
SELECT NAME, height FROM usertbl
WHERE height = (SELECT MAX(height) FROM usertbl)
OR height = (SELECT MIN(height) FROM usertbl);

SELECT COUNT(*) FROM usertbl;
SELECT COUNT(mobile1) FROM usertbl;
#null 값은 카운트 안함


#quiz salaries 급여가 평균 보다 높은 사람 -> enp_no
## 사번 이름 연봉정보 출력
USE employees;

SELECT e.emp_no, e.first_name, e.last_name, s.salary
FROM employees e
JOIN salaries s ON e.emp_no = s.emp_no
WHERE s.salary > (SELECT AVG(salary) FROM salaries);