Mysql建表插入數據


1)建立表

a )雇員表

drop table if exists emp;
   	create table emp(
   		empno int(4) primary key comment '雇員編號',
   		ename varchar(10) comment '官員姓名',
   		job varchar(9) comment '雇員職位',
   		mgr int(4) comment '領導編號',
   		hiredate datetime comment '入職日期',
   		sal double(7,2) comment '薪資',
   		comm double(7,2) comment '獎金',
   		deptno int(2) comment '部門編號'
   	);

向表中插入數據:

		insert into emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20);
		insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981-01-20',1600,300,30);
		insert into emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
		insert into emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,null,20);
		insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
		insert into emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,null,30);
		insert into emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,null,10);
		insert into emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,null,20);
		insert into emp values(7839,'KING','PRESIDENT',null,'1981-11-17',5000,null,10);
		insert into emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
		insert into emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,null,20);
		insert into emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,null,30);
		insert into emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,null,20);
		insert into emp values(7934,'MILLER','CLERK',7782,'1982-12-03',1300,null,10);
		commit;

檢查插入數據:

select * from emp;

b) 部門表

drop table if exists dept;
	create table dept(
		deptno int(2) primary key comment '部門編號',
		dname varchar(14) comment '部門名稱',
		loc varchar(13) comment '部門位置'
        );

插入數據:

	insert into dept values (10,'ACCOUNTING','NEW YORK'); #財務部
	insert into dept values (20,'RESEARCH','DALLAS');#研究部
	insert into dept values (30,'SALES','CHICAGO');#銷售部
	insert into dept values (40,'OPERATIONS','BOSTON');#運營部

c) 工資表

	drop table if exists bonus;
	create table bonus(
		ename varchar(20) comment '雇員姓名',
		job varchar(20) comment '雇員職位',
		sal int(6) comment '雇員薪資',
		comm int(6) comment '雇員獎金'
	);

d) 工資等級表

drop table if exists salgrade;
	create table salgrade(
		grade int comment '工資等級',
		losal int comment '該等級最低工資',
		hisal int comment '該等級最高工資'
	);

插入數據:

insert into salgrade values (1,700,1200);
	insert into salgrade values (2,1201,1400);
	insert into salgrade values (3,1401,2000);
	insert into salgrade values (4,2001,3000);
	insert into salgrade values (5,3001,9999);
	commit;
  1. group by 分組語句

    使用emp表根據部門分組,並查出部門編號及每個部門的人數

    select deptno,count(*) from emp group by deptno;

​ 利用group_concat()函數顯示出每組需要顯示的數據

    ```sql

select deptno,group_concat(ename) from emp group by deptno;
```

​ 利用with rollup 統計顯示內容的記錄總和

select deptno,group_concat(ename) from emp group by deptno with rollup;
  1. having 關鍵詞

    使用having關鍵字對分組后的數據進行過濾,having關鍵字和where關鍵字都可以用來過濾數據
    where 和 having關鍵字的不同之處:
    a. where作用於表和試圖,having作用與組;
    b. where查詢條件中不可以使用聚合函數,having查詢條件中可以使用聚合函數
    c. where在數據分組前進行過濾,having在數據分組后進行過濾

​ 根據sal字段進行分組,並使用having查詢分組后平均薪資在2000以上的員工部門編號,名字和薪資

select deptno,group_concat(ename),sal from emp group by sal having avg(sal)>2000;
  1. 空值查詢

    is null 為空
    is not null 不為空

#查詢emp表中沒有獎金的員工信息
select * from emp where comm is null;
    • between and 范圍查詢
      在多少到多少之間
      between 開始 and 結束
#查詢emp表中薪資在2000 到 3000 之間的員工信息
 select * from emp where sal between 2000 and 3000;
  • ​ limit 分頁查詢
    ​ limit 起始位置,記錄數
    ​ limit 記錄數 ;

    	#從第三條數據開始 顯示5條
    	select * from emp limit 2,5;
    	
    	#顯示前5條
    	select * from emp limit 5;
    	
    	#limit 可以和offset組合使用
    	limit 記錄數 offset 起始位置
    	
    	#從第一條記錄開始顯示5條
    	select * from emp limit 5 offset 0;
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM