select * from empselect * from deptselect * from jobselect * from salarygrade-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述SELECTt1.mgr,t1.ename,t1.salary,t2.jname,t2.descriptionFROMemp AS t1,job AS t2WHEREt1.job_id = t2.id -- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置SELECTt1.ename,t1.salary,t2.jname,t2.description,  t3.dname,  t3.locFROMemp AS t1,job AS t2,  dept AS t3WHEREt1.job_id = t2.id and   t1.dept_id = t3.id-- 3.查询员工姓名,工资,工资等级SELECTt1.ename,t1.salary,  t2.gradeFROMemp AS t1,  salarygrade as t2where t1.salary BETWEEN t2.losalary and hisalary-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级SELECTt1.ename,t1.salary,  t2.jname,t2.description,  t3.dname,  t3.loc,  t4.gradeFROM  emp AS t1,job AS t2,  dept AS t3,  salarygrade as t4WHEREt1.job_id = t2.id    and   t1.dept_id = t3.id and t1.salary BETWEEN t4.losalary and t4.hisalary-- 5.查询出部门编号、部门名称、部门位置、部门人数SELECTt1.*, COUNT(t2.id) 部门人数FROMdept AS t1,emp AS t2WHEREt2.dept_id = t1.idGROUP BYt2.dept_idSELECT dept.*,t1.num from dept,(select dept_id,COUNT(*) num from emp GROUP BY  dept_id) t1where t1.dept_id = dept.id

  

SQL总结:********************************************************************************           1.ddl语句: 操作数据库或表               //创建数据库             create Database if not 数据库名称;                             //删除数据库             drop database if exists 数据库名称               //使用数据库             use 数据库名称               //查看数据库              show database               //查看当前使用的数据库              select database()               ---------------------------------------------------------------------               //查询该数据库下的所有表               select tables                              //查询表结构               desc 表的名称                          //创建表                create table 表的名称(字段1名称 数据类型  约束 ,字段2名称 数据类型  约束,字段3名称 数据类型  约束                                      )                //删除表                drop table if exists 表的名称               //修改表的名称               alter table 表的名称 rename to 新的表名                           //添加列              alter table 表的名称 add 列名 数据类型;                     //修改列的数据类型               alter table 表的名称 modify 列名 新的数据类型;               //修改列的名称以及数据类型                alter table 表的名称 change 列名 新列名 新数据类型               //删除列              alter table 表的名称 drop 列名 ;                     ********************************************************************************           2.dml语句:对数据进行操作             //添加数据【指定列添加】            insert into 表的名称 (字段名1,字段名2,字段名3,……)                           values(字段名1值,字段名2值,字段名3值,……)            //添加数据【给全部列添加数据】            insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……)//添加数据【给全部列添加数据,多条数据同时添加】            insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……),(字段名1值,字段名2值,字段名3值,……),(字段名1值,字段名2值,字段名3值,……);             //修改数据【指定列修改】update  表的名称 set 列名1=值1,列名2=值2,列名3=值3,……             where 条件【不指定条件就会将所有行的数据全部更改】            //删除数据             delete from 表的名称 where 条件【不指定条件就会将所有行的数据删除】 ********************************************************************************           3.dql语句:数据库查询语言                     ①select  from              查询                     ②distinct                  去重                     ③as                        别名                     ④条件{                             > 大于                            >=                  大于或等于                            != /              不等                            <                   小于                            <=                  小于或等于                            between …… and ……    在……范围内                            in()                 多选一                            like                 模糊查询【_代表单个任意字符 %代表多个任意字符】                            is null/is not null  不为空                            and /&&               和                             or /||               或                             not/!               非                           }⑤排序 order by 【ASC升序 DESC降序】                      ⑥聚合函数{                             count()  统计数量【不统计为null的列】                             max()      最大值                             min()      最小值                             sum()      求和                             avg()      平均值                           }                      ⑦分组  group by                                       ⑧分组后限定条件  having                      ⑨分组前的限定条件 where                       ⑩分页查询 limit 起始索引 , 查询条目数;                  ********************************************************************************           4.dcl:数据控制语言                 grant                   授权                 set                     设置                 @@autocommit            自动提交事务                 begin                   开启事务                 commit                  提交事务                 rollback                回滚事务           事务的四大特征:AICO  原子性【要么同时成功,要么都失败】一致性【数据总量不变】隔离性【开启多个事务查询数据】持久性【通过commit提交或rollback回滚实现数据更新】默认自动提加事务【要手动提交事务方法--》set @@autocommit =0 默认是1】一旦设置为手动提交事务则必须自主提交,不然数据无法更新


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 多表查询: 1.内连接 inner join on 【inner可以不写】 2.外连接 left join【左连接:查询左表的全部数据以及与右表交集部分数据】 right join【右连接:查询右表的全部数据以及与右表交集部分数据】 3.子查询 =(子查询语句【子查询语句输出的是单列单行数据时使用=】) in(子查询语句【子查询语句输出的是单列多行数据时使用in】) 约束: 1.非空约束 not null 2.唯一约束[自动添加] unique [auto_increment] 3.主键约束 primary key 4.默认约束 default 5.外键约束 constraint 外键名称 foreign key(外键字段名) references 主表名(主表列名) 数据库设计: 1.一对一 【例如:用户 和 用户详情 一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表, 不经常使用的字段放另一张表,用于提升查询性能】实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE) 2.一对多 【例如:部门 和 员工 一个部门对应多个员工,一个员工对应一个部门】实现方式:在多的一方建立外键,指向一的一方的主键 3.多对多 【例如:商品 和 订单 一个商品对应多个订单,一个订单包含多个商品】 实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键