SQL.함수

BABY CAT·2022년 9월 24일
0

MySQL

목록 보기
3/6
/* ----SQL기본정보--------------------- */

/* 데이터보기 */
USE world; 
SHOW TABLES;
DESC city;
DESC country;
DESC countrylanguage;
SELECT * FROM city;
SELECT * FROM country;
SELECT * FROM countrylanguage; 

/* 기본문법순서 */
SELECT 필드명
FROM 테이블     //프롬조인온에서 프롬테이블이 왼쪽 조인테이블이 오른쪽으로 붙음
JOIN 테이블
ON 조인조건
WHERE 조건
ORDER BY 필드명 DESC내림차순 ASC또는생략 오름차순
GROUP BY 필드명
HAVING 그룹조건
LIMIT 숫자
OFFSET 숫자 

/* ------------------------- */

1. ROUND( )

ROUND(value가 소수인 field) => 소수점1의자리에서 반올림한다
.0 인 것도 버려서 소수점 . 자체도 지운다

ex)
USE world; 

SELECT continent, COUNT(*), sum(gnp), avg(gnp) 
FROM country 
GROUP BY continent;

SELECT continent, COUNT(*), round(sum(gnp)), avg(gnp) 
FROM country 
GROUP BY continent;

ㄱ. ROUND( ,num)

ex) num이 3이면 천의자리에서 만의 자리로 반올림하여 숫자 끝에 000 이 위치하고 소수점이 없게 한다

USE world; 

SELECT continent, COUNT(*), sum(gnp), avg(gnp) 
FROM country 
GROUP BY continent;

SELECT continent, COUNT(*), round(sum(gnp)), avg(gnp) 
FROM country 
GROUP BY continent;

SELECT continent, COUNT(*), round(sum(gnp),-4), avg(gnp) 
FROM country 
GROUP BY continent;

2. UPDATE SET WHERE

값 수정 밸류 수정  VALUE 수정하는 함수다

UPDATE 테이블명
   SET 필드명=, 필드명=, ... , 필드명=(수정할필드의값)
   WHERE 조건
   
ex) code가 abw인 것의 Name을 Aruba2로 수정 

USE world; 

SELECT * FROM country  ;

UPDATE country SET NAME="Aruba2" WHERE CODE="ABW";
   
SELECT * FROM country  ;
업데이트강화

UPDATE city, (SELECT * FROM city WHERE DISTRICT="CHOLLANAM") b
	SET city.population=b.population+50000 /* 플러스오만인구 */ /* 전남의 인구에 +오만 */
	WHERE city.id=b.id; /* 아이디가같으면 */

3. DELETE FROM WHERE

해당테이블(파일)에서 조건에 해당하는 것을 지운다

DELETE FROM 테이블명 
	WHERE 조건 
조건에 해당하는 행 전체를 지운다

ex)
USE world; 

SELECT * FROM citycopy  ;

DELETE FROM citycopy
	WHERE countrycode='nld';
	
SELECT * FROM citycopy  ;
	
DELETE FROM citycopy
	WHERE population<200000;

4. 테이블을 복사하는 방법

복사하기
CREATE TABLE citycopy LIKE city;   
 /* 시티를 시티카피란 이름으로 복사본만들기 */
SHOW TABLES; /* 확인 */
SELECT * FROM citycopy; /* 확인 */
INSERT INTO citycopy SELECT * FROM city;  
/* 시티데이터를가져와서 복사본에넣기 */
SELECT * FROM citycopy; /* 데이터들어왔는지확인 */

5. INSERT INTO VALUES

/* 행과 밸류 추가하기 */
/* 맨 아래에 넣어준다  */
INSERT INTO 테이블명
/* 필드명을 사용하면 일부칼럼(필드)만 채우겠다는 것이고 필드명을 사용하지 않으면 모든 필드 */
   (필드명)
   VALUES (필드명에 대한 값)

ex)
USE world; 

SELECT * FROM city  ;

INSERT INTO city (NAME,      countrycode,   district , population  )
VALUES           ('Cardinal', "afg",        "kabol"  , 111         );

SELECT * FROM city  ;

6. 테이블 생성하는 방법

ㄱ. CREATE TABLE 테이블

간단 테이블 생성
use 데이터베이스이름;
create table 테이블이름 (
id varchar(100),
pw varchar(100),
nick varchar(100)
)
/* [ ] 값은 옵션 ,낫널은 공백을 허용하지 않는다는 뜻 */
크리에이트테이블은 밸류가 아닌 테이블의 구조만 생성하는 것이다

create table 새로만들테이블명 (
   1번째 필드명 데이터타입 [not null] [KEY] [DEFAULT 디폴트해당값] [Extra],   
   2번째 필드명 데이터타입 [not null] [KEY] [DEFAULT 디폴트해당값] [Extra], 
   ...
   필드명 데이터타입 [not null] [KEY] [DEFAULT 디폴트해당값] [Extra]
) [Extra];  
야구단테이블 만들어보기

아래 코드로 타이거스2 테이블의 구조를  생성한다

USE world; 

create TABLE tigers2 (
	id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	player VARCHAR(10) NOT null,
	backNo INT,  /* 낫널이 없다 이건 공백을 허용 */
	POSITION VARCHAR(10) /* 바차는 배리어블캐릭터 - 가변적인(스트링)데이터라는뜻 */
);

SELECT * FROM tigers2;
DESC tigers;

이제 이 구조에 밸류를 넣는다
id값은 자동으로 디폴트값 들어감  AUTO_INCREMENT 속성

USE world; 

INSERT INTO tigers2 
VALUES   (DEFAULT, "양현종", 54, "투수");
SELECT * FROM tigers2;

INSERT INTO tigers2 (player,backno,POSITION)
VALUES   ("양현종", "54" , "투수");

INSERT INTO tigers2 (player,backno,POSITION)
VALUES   ("양현종1", "54" , "투수"),
("양현종2", "54" , "투수"),
("양현종3", 54 , "투수"),
("양현종4", "54" , "투수"),
("양현종5", 54 , "투수");

SELECT * FROM tigers2;

ㄴ. CREATE DATABASE 데이터베이스.테이블

/* 데이터베이스.새로만들테이블명 */
/* 아래로 데이터베이스 gis를만들고 */
CREATE DATABASE gis
USE gis; 
SHOW TABLES;
/* gis안에 test 라는 테이블을 만든다 */
CREATE DATABASE gis.test(
	id INT PRIMARY KEY  AUTO_INCREMENT,
	NAME VARCHAR(10)
) AUTO_INCREMENT=100;

7. 테이블 관련

ㄱ. DROP TABLE

/* drop table */
테이블을 삭제하려면 다음을 수행하십시오.
drop table 테이블명;

ㄴ. DELETE FROM

/* delete from */
테이블의 모든 밸류 value 행을 삭제하려면 다음을 수행하십시오.
delete from 테이블명;
특정 행 삭제 제거
/* delete from */
delete from 테이블명 where 조건;

ㄷ. TRUNCATE TABLE

/* 테이블의 모든 데이터 삭제 */
truncate table 테이블명;

ㄹ. RENAME TABLE TO

/* 테이블 이름 명 수정 변경 */
rename table 테이블명 to 변경할테이블명;

ㅁ. ALTER TABLE

/* 얼터테이블 */
/* 테이블 구조 변경 */
alter table  
   ADD 칼럼추가
   DROP 칼럼 삭제 열 삭제 필드 삭제
   MODIFY 칼럼순서바꾸기
   CHANGE 칼럼명변경, 칼럼자료형변경

▲ 컬럼 추가
alter table [테이블 명] add [컬럼명] 자료형; /* # 맨 뒤에 추가 */
alter table [테이블 명] add [컬럼명] 자료형 first; /* # 맨 앞에 추가 */
alter table [테이블 명] add [컬럼명] 자료형 after [앞 컬럼명]; /* 지정 컬럼 뒤에 추가 */
 ex)  alter table TIGERS2 add number INT; /* number칼럼(필드)추가 */
/* alter table address_table add gender char(2) not null; # 남/여 */

▲ 컬럼 삭제
alter table [테이블 명] drop [컬럼명];
  ex) alter table TIGERS2 drop number; 

▲ 컬럼 순서 바꾸기
alter table [테이블 명] modify [컬럼명] 자료형 first; /* 해당칼럼을 맨 왼쪽으로 이동 */
alter table [테이블 명] modify [컬럼명] 자료형 after [앞 컬럼명]; /* 앞칼럼명의 뒤로 이동 */
ex) alter TABLE tigers2   modify POSITION VARCHAR(10) first;
   SELECT * FROM tigers2;
   /* alter table address_book modify gender char(2) not null after name; */

▲ 컬럼명 변경, 컬럼 자료형 변경
alter table [테이블 명] change [기존 컬럼명] [새 컬럼명] 자료형;
   ex) USE world; 
alter table tigers2 change position `new position` VARCHAR(10);
SELECT * FROM tigers2;
포지션필드를 뉴포지션으로 필드명을 바꿈 +자료형

alter table [테이블 명] change [컬럼명] [컬럼명] 새 자료형; 
   /* 칼럼명을 똑같이 넣어서 자료형만 바꾸는 작업 */
/* alter table address_book change no aid  int(8);
alter table address_book change aid aid int(4) unsigned auto_increment; */
숫자의 속성 (숫자속성int varchar뒤에 띄어쓰기로 추가작성)
   unsigned 숫자가 양수값일 때 양수 최대치를 늘리기 위한 작업
   mysql은 자동으로 unsigned 속성을 추가한다 좌측부터0을채우려면양수로만값이입력되어야하기때문
   auto_increment 자동으로 숫자가 증가
INT(숫자) 괄호안의 값은 값의 자릿수를 의미한다
INT      디폴트는 11이기 때문에  int(11)과 같다

A. 디폴트 기본값 주기

* 디폴트 기본값 주기 0  Auto_increment 대신 0값으로 
Auto_increment는 테이블에서 하나만 줄 수 있고 그것이 자동으로 프라이머리키로 설정됨

특정 필드의 밸류들에 0을 디폴트 값으로 주기 (행추가할 때 자동으로 0 들어감)
ALTER TABLE 테이블 change 필드 필드(바꿀필드명) INT DEFAULT 0;

B. 타이거즈 테이블 만들기

타이거즈 테이블 만들기

CREATE TABLE if NOT exist tigers (
	id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
	player VARCHAR(10) NOT NULL,
	position VARCHAR(10)
	isDeleted DEFAULT 0;

0개의 댓글