MySQL-DML
3361 ワード
DML(データ操作文)
CREATE TABLE emp(ename VARCHAR(10), hiredate DATE, sal DECIMAL(10, 2), deptno INT(2));
CREATE TABLE dept(deptno INT(2), deptname VARCHAR(10));
一、挿入記録
1.フィールドの指定
2.フィールドを指定しない
valuesの後ろの順序はフィールドの順序と一致する必要があります
二、記録の更新
1.単一テーブルの更新
2.マルチテーブル更新
三、削除記録
四、照会記録
1.クエリー
2.クエリー指定フィールド
3.再照会
4.クエリーのソート
5.マルチフィールドソート
6.問合せ数量制限
7.返される結果の開始インデックスと終了インデックスを指定します(0から)
8.重合
(1)統計総数
(2)各部門の総数を集計する
(3)各部門の総数と全部の総数を統計する
(4)統計人数が1人より多い部門
(5)全従業員の給与総額、最高および最低賃金を集計する
9.テーブル接続内接続:2つのテーブルで一致するレコード のみを選択する.外部接続:2つのテーブルで一致するレコードのみを選択し、一致しないデータ も含む.
(1)内部接続
(2)外部接続左接続:左のすべてのテーブルのレコード、さらに右のテーブルに一致しないレコードを含む 右接続:右側のすべてのテーブルのレコード、さらに左のテーブルに一致しないレコードを含む 左の接続
右接続
10.サブクエリ
クエリに入るときに必要な条件が別のSELECT文の結果である場合(キーワード:in,not in,=,!=,exists,not existsなど) MySQL4.1以前はサブクエリがサポートされていなかったが、サブクエリを実装するためにテーブル接続が必要な機能 .テーブル接続は、多くの場合、サブクエリ を最適化するために使用される.
11.連合
2つのテーブルのデータを一定のクエリー条件でクエリーした後、結果をすべて並べて表示します.ユニオンALL:結果セットを直接統合する ユニオン:ユニオンALLの結果を一度DISTINCTし、重複する結果を除去する UNION ALL
UNION
CREATE TABLE emp(ename VARCHAR(10), hiredate DATE, sal DECIMAL(10, 2), deptno INT(2));
CREATE TABLE dept(deptno INT(2), deptname VARCHAR(10));
一、挿入記録
1.フィールドの指定
INSERT INTO emp(ename, hiredate, sal, deptno) VALUES('zzx1', '2000-01-01', '2000', 1);
2.フィールドを指定しない
valuesの後ろの順序はフィールドの順序と一致する必要があります
INSERT INTO emp VALUES('zzx1', '2000-01-01', '2000', 1);
二、記録の更新
1.単一テーブルの更新
/*ename hiredate sal deptno
------ ---------- ------ --------
zzx1 2000-01-01 200.00 1*/
UPDATE emp SET sal=400 WHERE ename='zzx1';
2.マルチテーブル更新
UPDATE emp a, dept b
SET a.sal=a.sal*b.deptno, b.deptname=a.ename
WHERE a.deptno = b.deptno;
三、削除記録
DELETE FROM emp WHERE ename='zzx1';
四、照会記録
1.クエリー
#
select * from emp;
#
SELECT * FROM emp WHERE ename='zzx1';
2.クエリー指定フィールド
SELECT ename, sal FROM emp WHERE ename='zzx1';
3.再照会
# deptno
SELECT DISTINCT deptno FROM emp;
4.クエリーのソート
# sal
SELECT * FROM emp ORDER BY sal;
5.マルチフィールドソート
# deptno sal
SELECT * FROM emp ORDER BY deptno, sal DESC;
6.問合せ数量制限
# 1
SELECT * FROM emp LIMIT 1;
7.返される結果の開始インデックスと終了インデックスを指定します(0から)
# 1 , 2
SELECT * FROM emp ORDER BY sal LIMIT 1,2;
8.重合
(1)統計総数
SELECT COUNT(*) FROM emp;
(2)各部門の総数を集計する
SELECT deptno, COUNT(1) FROM emp GROUP BY deptno;
(3)各部門の総数と全部の総数を統計する
SELECT deptno, COUNT(1) FROM emp GROUP BY deptno WITH ROLLUP;
(4)統計人数が1人より多い部門
select deptno, count(1) from emp group by deptno having count(1) > 1;
(5)全従業員の給与総額、最高および最低賃金を集計する
SELECT SUM(sal), MAX(sal), MIN(sal) FROM emp;
9.テーブル接続
(1)内部接続
SELECT ename, deptname FROM emp, dept WHERE emp.deptno=dept.deptno;
(2)外部接続
SELECT ename, deptname FROM emp LEFT JOIN dept ON emp.deptno=dept.deptno;
右接続
SELECT ename, deptname FROM dept RIGHT JOIN emp ON dept.deptno=emp.deptno;
10.サブクエリ
クエリに入るときに必要な条件が別のSELECT文の結果である場合(キーワード:in,not in,=,!=,exists,not existsなど)
SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM dept);
# = in
SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept);
11.連合
2つのテーブルのデータを一定のクエリー条件でクエリーした後、結果をすべて並べて表示します.
SELECT deptno FROM emp
UNION ALL
SELECT deptno FROM dept;
UNION
SELECT deptno FROM emp
UNION
SELECT deptno FROM dept;