为了之后的举例操作,首先创建表exam(id int primary key auto_increment, name varchar(20), english int, math int, chinese int);创建表exam的语句如下:
为了操作方便,首先插入若干条数据,如下:
1.查询所有记录中的某些数据:(distinct实现去重查询)
2.在所有学生的english加上10分,math加上20分,chinese不加分进行查询显示:
3.计算总分并查询(为表结构起别名)
4.使用where进行条件查询
5.使用百分号(%)和下划线(_)进行模糊查询
6.使用order by colum desc/asc对查询数据进行排序,desc表示降序排列,asc表示升序排列(默认的排列方式)
7.使用聚合函数进行查询(count,sum,avg)
count-----------用来统计符合条件的记录的个数
sum------------用来对符合条件的记录的指定列进行求和操作
avg------------用来计算符合条件的记录的指定列的平均数
max/min----查询符合条件的将记录的列中个最大的记录
对于某学生缺考,某一门课程的成绩为NULL的情况,在执行运算时,只要有null参与运算,整个计算的结果为null,此时需要用到ifnull函数,e.g. ifnull(math,0)表示如果当前记录的math这一项为null,则用0来代替这一项进行运算:
8.进行分组查询(group by/having)
为了方便举例,创建下面的表,并插入记录:
【注意】
查询语句中各个关键词出现的顺序为:
select from where groupby having orderby
~~~~~~~~~~~~~~~多表查询~~~~~~~~~~~~~~
多表查询的SQL语句格式如下:
select 字段名 from 表-1,表-2.... where 表-1.字段=表-2.字段 and 其他条件
举例:
select * from tb_student, tb_score where tb_student.userId = tb_score.sid and tb_student.userId = 1;
查找获得tb_student表和tb_score 表中,userId(tb_student中的字段)和sid(tb_score中的字段)相等且为1的记录的所有信息。