2017-05-03-SQL语句
Xplorist Lv6

2017-05-03-SQL语句

知识点1:

数据库结构:

1、连接

2、数据库

3、数据表

4、数据(数据行,数据列(字段:包括字段名和数据类型))

SQL语句分类

DML和DDL

DML:Data Manipulation Language 数据操作语言

DDL:Data Definiation Language 数据定义语言

DML主要是对数据进行操作,对数据内容进行操作。

DDL主要是对数据上级结构进行操作(比如说数据表,索引,存储过程,视图,数据库等进行操作),对数据结构进行操作。

对数据内容的操作:

增删改查

insert  into 表名(列名) values(每一列的数据);

delete from 表名 where 

update  表名 set 字段名=“”,字段名=“”;

selecte 字段名 from 表名 where 

对数据结构的操作:

创建、修改、删除

create 

alter

drop

一行数据就是一个对象的所有的属性。

数据库的数据表可以和面向对象的类来进行类比

数据库中的数据表相当于一个类,数据表中的每一行数据相当于一个类的实例对象,

每一行的数据和每一个实例对象的区别,实例对象通过对象的名字来区分,所以每个对象都是唯一的,

在数据表中的每一行数据如果没有定义主键的话,每一行的数据没有唯一性。

SQL语句真的是很神奇,SQL语言是第四代语言,比面向过程和面向对象的语言都还要高级。

distinct 修饰字段(列名)会影响后面所有的列名,会将其中重复的变为一行,而且distinct只能放在列名前面,如果其他的列名放在distinct前面的话语法是不支持的,

distinct会将直接修饰所有列名,对每一列的数据进行去重,如果每一行的数据的查询字段不完全相同,则就是两行不同的数据,不会合并为一行。

具体内容参考w3c的语法介绍。

具体还要多练才行。

SQL查询语句的核心在于脑子里面建立模型,还有语句执行顺序,一般是通过from表名来加载一个表,然后通过限定来进行数据行的筛选,最后通过选择列名进行显示数据行。

其中最重要的是执行顺序,然后执行之后对模型产生的影响,只要抓住这两点,基本上所有的查询语句都能够看懂了,自己写语句按照这个思路来思考基本上绝大多数的SQL语句

很容易写出来,还有就是有些特殊的用法和例子需要在实际操作中去进行积累。

基本上SQL的核心结构就是这些了,其他的细枝末节,在实战中慢慢积累。现在的心态很浮躁,重要的是自己去总结实践模型,对实践模块和专题进行训练。

实例专题总结和训练,就像做题一样来敲代码。

实例1:

显示多列数据,同时又使多列数据中的每行数据不重复

思路:

去重复:1.select distinct 字段来选出不同的字段的列的不同 ,2.通过group by 来将所有多列显示地同时并去重

核心代码:

1
select xs_name,xs_id from xs group by xs_name;

实例2:

– 作业:1 select xs_id as ‘学号’,avg(kc_cj) as ‘平均成绩’ from xs_kc group by xs_id;
– 修改上面的语句,使之能显示ID,名字,平均成绩
– 2 查询学生的成绩,xs_id ,xs_name,avg(kc_cj)
– 查询选修了“计算机基础”课程并且成绩在80分以上的学生学号、姓名、课程名及成绩
– 3 查询数据库中课程不同、成绩相同的学生的学号、课程号及成绩

1
2
3
4
5
6
7
8
9
-- 1
 select xs_kc.xs_id as '学号', xs.xs_name as '姓名' ,avg(xs_kc.kc_cj) as '平均成绩' from xs_kc,xs where xs.xs_id=xs_kc.xs_id group by xs_kc.xs_id;

-- 2
 select xs.xs_id,xs.xs_name,kc.kc_name,xs_kc.kc_cj from xs,xs_kc,kc where xs.xs_id=xs_kc.xs_id and kc.kc_id=xs_kc.kc_id and kc.kc_name='计算机基础' and xs_kc.kc_cj >80;

-- 3
 select a.xs_id,a.kc_id,a.kc_cj from xs_kc as a join xs_kc as b on a.xs_id =b.xs_id where a.kc_cj=b.kc_cj and a.kc_id <> b.kc_id;

 评论