.header on을 하면 속성을 추가하여 출력해준다.
.mode tab을 누르면 아래 그림과 같이 속성간에 tab을 하여 출력한다.
table을 만들 때. NOT NULL을 지정해주면 반드시 입력해줘야 된다는 것이다. 입력하지 않으면
아래와 같이 출력된다.
그래서 데이터베이스를 만들시에는 설계를 잘해서 초기에 잘해야 한다. 물론 alter명령어로 속성이 변경 가능하지만,
변경할게 1000개, 10000개가 된다면 정말 답이 없다.
insert into A vlaues (1,'a')
-> 행에 값을 추가.
insert into A(id, type) vlaues (1,'a');
-> 행에 속성을 지정하여 추가
아랙 그림에서는 rval속성에는 추가하지 않고 id, type, note에만 값을 추가하였다.
위의 첫번째 문으로 하면 속성마다 타입이 다르고 제약사항이 있어서 입력이 잘 안될 수 있다.(바로 위그림처럼)
따라서 2번째 유형으로 명령어를 써서 추가하였다.
delete from A where type =='b';
type이 b인 행을 지운다.
조건을 주지않으면 행(tuple)이 전부 삭제 됨.
type 값이 d보자 작은 tuple 삭제
delete from A where type <'d';
수정
update A set note='FOUR' where id = 4;
id가 4인것에 note 속성을 four로 지정해라.
조건이 없으면 마찬가지로 모든 행에 note속성이 four로 바뀐다.
모든 rval 5.0으로 수정
-> where없이 지정하면 된다.
짝수 id의 rval을 수정
-> 조건을 주고 id%2 == 0;이면 짝수로 판단하여 10.0으로 바뀐다.
입력할 데이터가 많다면 text파일에 명령어를 써놓고 리다이렉션을 통해서 추가가 된다.
메모장에 아래와 같은 record를 추가한다. (전화번호는 privacy상 그림판에서 지웠다)
아래그림에 추간된 모습(전화번호는 privacy상 그림판에서 지웠다)
용어정리
attribute/column /field/열
테이블 속성 여기서는 rank, class가 해당.
tuple/row /recode/행 -> 테이블의 가로 행전체. 각 속성에 해당하는 값들이
존재. 각각 rank, class의 해당하는 가로 값 (1, a), (2 ,b)...등을 말함.
cardinality - tuple 갯수
degree = attribute갯수 id, type 이 존재하면 2개가 존재..
domain - attribute에 적용 가능한 값의모음
- 테이블에 정의된 attribute 타입이 적용가능한 모든 값.(에러체킹)
<union과 join>
select * from A union select * from B;
-> cardinaliy
select * from A union select * from B order by type;
-> 정렬도 가능.
Select -attribute 별명
select id as no, type as category from A;
->원래 테이블에 카테고리는 그대로 놔두고 출력만 별명으로 하는것.
select id as rank, type as class from A;
아래 그림은 에러. 앞쪽을 보면 select id, type에 대해서 별명을 지으지 않고 뒤쪽 odrer by class로 찾으려 해서 에러.
그러나 마찬가지로 별명을 앞쪽에는 짓지 않았으안, 뒤쪽에 union 다음 문장에서 B테이블 속성에 별명를 지어줌.
에러를 발생하지 않으며, class로 정렬을 하되, 출력(union 앞쪽)에는 지정을 하지않아, id, type을 출력.
즉, class를 type 대응하여 정렬은 해준다.
select * from A, B where A.id==B.id;
테이블.속성(attribute)
A,B id가 같은것만 join하는것.
select A.id,A.type,B.type from A, B where A.id==B.id;
select A.id,A.type,B.type from A inner join B on A.id=B.id;
=>요즘 형태. on뒤에 조건.
A inner join B
.mode column
=> 칼럼 형식으로 출력해준다.
A로 시작하는 앨범의 이름과 아티스트 이름의 tuple 리스트.
select albums.title, artists.name from albums inner join artists on albums.title like 'A%' and artists.name like 'A%';
limit도 가능하다.
inner join, left join 비교
inner join
-> 1:1 매칭으로 join
left join
왼쪽 테이블 기준으로 join 오른쪽 테이블을 가져다 붙인다. 즉, 왼쪽 테이블은 유지한채로 오른쪽만 조건에 맞게 붙인다.
where is b.type is NULL이면 type이 NULL인 것을 출력.
아티스트 ID, 앨벌 아티스트 id를 왼쪽 ,join을 하고 앨범 id가 없는 즉, 미발매된 앨범의 네임과 id를 출력.
select artists.artistid, artists.name, albums.albumid from artists left join albums on artists.artistid == albums.artistid where albums.albumid is NULL;
'네트워크 > database실습' 카테고리의 다른 글
6월 25일 mysql 실습 (0) | 2018.06.25 |
---|---|
6월 18일 데이터베이스 실습 복습 (0) | 2018.06.18 |
6월 4일 database alter, drop 실습 (0) | 2018.06.04 |
5월 28일 실습 (round, dataetime, str관련 함수) (0) | 2018.05.28 |
5월 21일 select문 실습(order by, distinct, where, offset (0) | 2018.05.21 |