基本的增删改查省略:下面是楼主总结的一些简单用法,综合一下可以查询一些有难度的sql语句,有疑问可在下方留言或者私聊楼主。
-- 分组查询
 SELECT 字段(可以跟多个) from 表名 group by 字段 DESC
 例如:
 -- 分组 
 SELECT id,name,sex
 from student
 group BY id DESC;
 ---------------------------------------------------------------------
 -- 回溯统计
 SELECT 字段(可以跟多个) from 表名 group by 字段 with RoLLUP
 例如:
 -- 回溯统计
 SELECT id,name
 from student
 GROUP BY id WITH ROLLUP;
 ---------------------------------------------------------------------
 -- 分组筛选
 select 字段(可以跟多个)
 form 表名
 group by  字段 desc,(可以跟多个)
 HAVING 字段 = 条件;
 -- 分组筛选
 例子:
 SELECT id,name,sex
 from student
 group BY id desc,name desc
 HAVING sex = '男';
 ---------------------------------------------------------------------
 -- 连接查询
 sele *
 from 表名,(可以跟多个)
 where 字段=条件;
 例子:
 select *
 from xs,xs_kc
 where xs.sid=xs_kc.sid;
 ---------------------------------------------------------------------
 -- 交叉连接
 select * from 表名 cross join 表名
 on xs.sid=xs_kc.sid;
 select x.sid,name,score
 from xs as x cross join xs_kc sc
 where x.credits>45; -- 一旦给表起了别名,则凡是需要用到表名的地方都需要使用别名,而不能再用原名了。
 ---------------------------------------------------------------------
 -- 给表起别名
 Select 字段 as 别名 
 from 表名
 ---------------------------------------------------------------------
 -- 联合查询
 联合查询只是查询条件有所改变,必须                       nnn]\[0000000000000返回一个字段的话可以通过普通查询代替
字段当作查询条件,(前提需要数据两个表内有相同数据)
 举例:
 SELECT Sname
 FROM studentid
 WHERE id =(SELECT id from student where id = 101);
 //拆开之后的
 SELECT id from student where id = 101;
 SELECT Sname
 from studentid
 where id = 101;
 ---------------------------------------------------------------------
 -- 内连接
 SELECT (字段名或者是*)
 from 表名 join 表名
 on 字段名=字段名;
 举例:
 select kc.cid,cname,term,sid,score
 from kc join xs_kc
 on kc.cid=xs_kc.cid;
 ---------------------------------------------------------------------
 -- 等价连接
 select student.id,studentid.id -- 字段可以设置多条显示
 from student,studentid
 where student.id=studentid.id 条件可以设置多条
 ---------------------------------------------------------------------
 -- 自然连接
 SELECT *
 from xs NATURAL join xs_kc;
 ---------------------------------------------------------------------
 -- 外连接outer join   left join    right join
 -- 根据数据连接到一起,根据某个同样字段想匹配
 select * 
 from xs left join xs_kc
 on xs.sid=xs_kc.sid;
 select *
 from xs_kc right join kc
 where kc.credit>4
 on xs_kc.cid=kc.cid;
 select *
 from xs_kc NATURAL right join kc;
 ---------------------------------------------------------------------
 -- 排序字段为多个。先按第一个排序字段进行排序,然后将排序结果再按第二个排序字段进行排序。
 select * 
 from xs
 order by specialty,gender desc;  -- desc 
 ---------------------------------------------------------------------
 -- 去掉重复行使用distinct关键字,如不加distinct关键则默认为all
 select DISTINCT specialty
 from xs;
 ---------------------------------------------------------------------
 -- 创建视图
 CREATE VIEW 视图名称
 AS
 SELECT * from 联系表名(可多表联系);
 视图内不可随意更改联系的表。
 可以更改可见视图内的字段的数据。
 ---------------------------------------------------------------------
 --子查询
 -- 子查询必须放在()中。
 -- 执行过程:(1)执行子查询,cid101
 -- (2)执行外部查询把101带入到外部查询的where子句中
 select sid
 from xs_kc -- 子查询是差两个表,且两表之间有一定关系。
 WHERE cid=(
select cid
from kc
where cname='计算机基础'
 );
 Exists子查询
 -- 存在  exists(子查询)—当子查结果集返回null,则返回值0 ,当子查询结果集不为null,返回1
 Exists是跟在where之后的
 where exists(子查询)
 -- 相关子查询不仅仅可以使用exists
 Where  cid=(子查询)
 -- 行子查询:子查询返回的结果是一行多列。
 构造一个行元素
(字段名1,字段名2,…)=(子查询)
---------------------------------------------------------------------
 索引:为了提高查询的效率,系统根据某种算法,将已有数据的中的某些字段单独建立一个文件(索引文件),
 这些文件能够实现快速的匹配数据,并且能够快速的找到数据在表中的对应行。
 分类:普通索引/唯一性索引/主键索引/全文索引
 举例:
 -- 创建索引
 create index 索引值
 on  表名(子段)
 -- 查看某个表的索引
 show INDEX FROM student;  
 -- 查看某个表的主键
 show keys from tblname;
 -- 删除某个表的索引
 drop index 索引名 on 表名










