SQL的使用总结

select * from emp
select * from dept
select * from job
select * from salarygrade



-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
SELECT
	t1.mgr,
	t1.ename,
	t1.salary,
	t2.jname,
	t2.description
FROM
	emp AS t1,
	job AS t2
WHERE
	t1.job_id = t2.id 
-- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
SELECT
	t1.ename,
	t1.salary,
	t2.jname,
	t2.description,
  t3.dname,
  t3.loc
FROM
	emp AS t1,
	job AS t2,
  dept AS t3
WHERE
	t1.job_id = t2.id and 
  t1.dept_id = t3.id


-- 3.查询员工姓名,工资,工资等级
SELECT
	t1.ename,
	t1.salary,
  t2.grade
FROM
	emp AS t1,
  salarygrade as t2
where t1.salary BETWEEN t2.losalary and hisalary
	

-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
SELECT
	t1.ename,
	t1.salary,
  t2.jname,
	t2.description,
  t3.dname,
  t3.loc,
  t4.grade
FROM
  emp AS t1,
	job AS t2,
  dept AS t3,
  salarygrade as t4
WHERE
	t1.job_id = t2.id 
   and 
  t1.dept_id = t3.id
 and t1.salary BETWEEN t4.losalary and t4.hisalary

-- 5.查询出部门编号、部门名称、部门位置、部门人数
SELECT
	t1.*, COUNT(t2.id) 部门人数
FROM
	dept AS t1,
	emp AS t2
WHERE
	t2.dept_id = t1.id
GROUP BY
	t2.dept_id



SELECT dept.*,t1.num 
from dept,(select dept_id,COUNT(*) num from emp GROUP BY  dept_id) t1
where 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.多对多 【例如:商品 和 订单 一个商品对应多个订单,一个订单包含多个商品】 实现方式: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

 

热门相关:最强狂兵   大神你人设崩了   网游之逆天飞扬   第一神算:纨绔大小姐   刺客之王