数据库和表的映射关系(关系模型与对象模型的映射):
1、类名对应表名;
2、属性对应字段;
3、属性类型对应数据类型;
4、一个对象对应表中的一行数据。

数据库创建表时需要遵循的四个完整约束性:
1、实体完整性约束:一个实体用一行表示,一般用主键约束,主键就是唯一确定一行数。
2、域完整性约束:字段的完整性约束。比如:男和女,年龄不能小于0或者超过150.
3、引用完整性约束;
4、自定义完整性约束。

SQL语句:
1、设置主键: primary key;
2、主键的自增: primary key auto_increment;
3、添加(insert into): insert into 表名 (字段1,字段2…) values(值1,值2…);

4、修改(update):
1)、update 表名 set 字段1=值1,字段2=值2…
2)、update 表名 set 字段1=值1,字段2=值2… where 条件(如:id = 2); //带条件修改

5、删除(delete): delete from 表名 where 条件(如:id = 2); //带条件删除
6、查询(select):
1)、select ✲ from 表名; //查询整张表
2)、select ✲ from 表名 where 条件(如:id = 2); //查询条件的内容
3)、select name,age from 表名 where 条件(如:id = 2); //查询条件的name和age

7、排序(order by):
1)、升序(asc):select name,sal from 表名 order by sal asc; // 按照sal升序排序

// 找出所有有提成(comm)的员工,列出名字、工资和提成,显示结果按工资从小到大,提成从大到小排序。
2)、降序(desc):select name,sal,comm from 表名 where comm is not null order by sal asc,comm desc;

8、统计函数:
1)、求平均值(avg): select avg(工资) from 表名;
2)、统计总数(count): select count(✲) from 表名;
3)、求最大数(max): select max(工资) from 表名;
4)、求最小数(min): select min(工资) from 表名;
5)、求和(sum): select sum(工资) from 表名;

9、分组查询(group by):
1)、求每一个部门(depton)的工资(sal)总和——表名(emp):
select depton,sum(sal) from emp group by depton;

2)、多个字段一起分组,求各个部门、职位的平均工资:
select depton,job,avg(sal) from emp group by depton,job;

3)、对方组的结果进行过滤(having),求部门总人数大于4的部门:
select depton,count(✲) from emp group by depton,having count(✲)> 4 ;

4)、查询部门工资高于1000的人数超过2个人的部门,列出部门编号:
select depton,count(✲) from emp where sal > 1000 group by depton having count(✲)> 2 ;

5)、求平均工资大于1500的部门人数:
select depton,avg(sal),count(✲) from emp group by depton having avg(sal)> 1500 ;

10、子查询: 找出平均工资最高的部门,列出部门编号、名称和所在位置:
select ✲ from dept where depton =
(select depton from (select depton,max(平均工资) as zuida from (select depton,avg(sal)as 平均工资 from emp group by depton) as t)as tmp)

11、多表连接查询:
1)、自连接: 自己表和自己表连接,使用别名的方式模拟一张新表;
如:查询员工的名称和他领导的名称:表数据如下:

empno(类别编号)

ename(类别名称)

mgr(父类别 )

1

计算机

null(最大的父类没有父类)

2

编程开发

1

3

Java

2

4

CPU

1

5

C++

2

select e.ename,e.mgr,m.ename,m.empno from emp e,emp m where e.mgr = m.empno ;

2)、多表连接查询: 查询工资最大的部门的名称和员工名称:
select ename,sal,dept,depton from emp,dept where emp.depton = dept.depton and emp.sal = (select max(sal) from emp e where e.depton = dept.depton)

3)、左外连接(left join): 查询所有员工,可是少了一个人的(KING),原因是KING的MGR字段为null(ps:在右表补空):
select e.empon,e.ename,e.mgr,m.empon, m.ename from emp e left join emp m on e.mgr = m.empon

4)、右外连接(rigth join): 查询员工和员工工作的部门,包括没有员工的部门也要查出来(聘ps:在左表补空):
select e.ename,d.dname from emp e rigth join dept d on e.depton = d.depton

5)、去重(distinct): select ✲ distinct 条件(工资、职位等) from 表名

6)、多条件查询(and和or):
1、and合并多个条件,是且的关系 &&:(查询工资大于等于1500小于等于2000的员工):
select name,sal from emp(表名) where sal >= 1500 and sal >= 2000

2、or合并多个条件,是或的关系 ||: (查询20号和30号部门的员工)
select name ,depton from 表名 where depton = 20 or depton = 30

7)、模糊查询(like):
1、查询名字里有“SM”的员工: select name from 表名 where name like 'SM’

2、查询名字里有“SM”又带“H”的员工(双重查询):select name from name like ‘SM’ and name like 'H’