选择命令及,查询数据必发365

一、实验素材:

查询(select)的基本格式:
select <列名> from <表名> [where <查询限定条件>]
解释:
select 查询的命令体
列名:要查询的列,多个列用逗号,隔开 星号(*)代表所有列
where:是选填的,不填查询的结果是整个列的数据
例子:
select 成绩 from 成绩表 where 姓名=’张三’
含义:查询成绩表中张三的成绩,只显示张三的分数。如果不加where
,则显示成绩表中成绩列所有值

1.1前言

附加学生信息表(student)

在 SQL server 中,select语句的语法:
select <列名> [into 新表名] from <表名>
[where 查询条件] [group by 分组条件] [having 查询条件] [order by
排序条件 [asc | desc ] ]
解释:
into:可选参数,用于把查询内容保存到新表中,不用再数据库中新建表。
where的查询条件字段由条件表达式或逻辑表达式。
group by:可选参数,指定查询结果的分组条件,通常是列名,但不能是别名。
having:可选参数,指定分组搜索条件,通常与group by字句一起使用。
order by:可选参数,指定查询结果的排序方式。排序条件
asc表示升序,desc表示降序,默认排序是asc升序。

Mysql是数据库开发使用的主要平台之一。sql的学习掌握与使用是数据库开发的基础,此处展示详细sql语句的写法,及各种功能下的sql语句。

必发365 1

各种查询例子:
1.查询成绩表中所有列。
select * from 成绩表
2.查询成绩表中姓名,成绩列内容。
select 姓名,成绩 from 成绩表
3.查询成绩表中张三的成绩,结果显示姓名和成绩
select 姓名,成绩 from 成绩表 where 姓名=’张三’
4.查询成绩表中成绩在90~100之间所有人员成绩。
select * from 成绩表 where 成绩 between 90 and 100
5.查询成绩表中成绩为80,90,95分的所有信息
select * from 成绩表 where 成绩 in (80,90,95)
6.查询成绩表中姓张的学生所有信息。
select * from 成绩表 where 姓名 like ‘张%’
7.查询成绩表中1班张三的所有信息。
select * from 成绩表 where 姓名=’张三’ and 班级=1
8.查询成绩表中备注不为空的人的所有信息
select * from 成绩表 where 备注 is not null
9.使用top关键字限制查询返回的行数, 查询成绩表中前10行数据。
select top 10 * from 成绩表
10.改变查询结果名称:查询成绩表中姓名和成绩两列数据
列名显示成英文的name,grade
select 姓名 as name,成绩 as grade from 成绩表
11.查询成绩表中所有人的总成绩,列名显示为‘总成绩’。
select sum(成绩) as 总成绩 from 成绩表
注:sum是求和函数。还可以省略as, 还可以写成 select 总成绩=sum(成绩)
from 成绩表
12.查询成绩表中所有信息,按照成绩从高到低显示结果。
select * from 成绩表 order by 成绩 desc
13.查询成绩表中所有人的平均成绩
select avg(成绩) as 平均成绩 from 成绩表
注:avg是求平均值函数。
14.查询成绩表中的最高分(max)和最低分(min)
select max(成绩) as 最高分,min(成绩) as 最低分 from 成绩表
15.查询成绩表中的所有行数。
select count(*) 总行数 from 成绩表
注:count是统计函数,用于返回表达式中非空值的计数,使用*可以不必指定特定列而计算所有行数。
16.查询成绩表中每个班级的总成绩。
select 班级,sum(成绩) as 总成绩 from 成绩表 group by 班级
17.查询成绩表中总成绩大于200的班级。
select 班级,sum(成绩) as 总成绩 from 成绩表 group by 班级 having
sum(成绩)>200
注:where 后边不能接函数, having 可以添加函数。
18.将成绩表中的所有数据插入新表“成绩表副本”
select * into 成绩表副本 from 成绩表
19.将成绩表中的1班成绩插入新表“一班成绩表”
select * into 一班成绩表 from 成绩表 where 班级=1
注:插入的新表,之前数据库不能存在该表。

基本命令使用是这样的。当然sql语句也可在其他平台使用。此处不多说明;

二、实验要求:

SQL语句详细如下:

1、  查询student表中所有学生的信息

1.2一、数据库操作

select  * from  student

创建一个名称为mydb1的数据库

2、  查询student表中“姓名”“所在班级”和“成绩”列内容

create database mydb1;

select  姓名,所在班级,成绩 from student

showdatabases;

3、  查询student表中7班的学生姓名

创建一个使用utf-8字符集的mydb2数据库。

select  姓名  from  student  where  所在班级=’7′

create database mydb2 charactersetutf8;

4、  查询student表中成绩为90—100分的学生所有信息

创建一个使用utf-8字符集,并带校对规则的mydb3数据库。

select  * from  student  where 成绩 between  90  and 100

create database mydb3 charactersetutf8 collate utf8_general_ci;

5、  查询student表中成绩低于90分或者高于95分的学生所有信息

查看前面创建的mydb2数据库的定义信息

select  * from  student
 where  成绩<90 or  成绩>95

showcreate database mydb2;

6、  查询student表中成绩为89分,90分的学生所有信息

删除前面创建的mydb1数据库

select  * from  student  where  成绩=89 
or  成绩=90

drop database mydb1;

7、  查询student表中姓刘的学生所有信息

查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312;

select  * from  student  where  姓名 
like  ‘刘%’

alter database mydb2 charactersetgb2312;

8、  查询student表中1班的名叫张红的学生信息

showcreate database mydb2;

select  * from  student
 where  所在班级=‘1’ and  姓名=‘张红’

使用当前数据库mydb1,即想对当前数据库进行操作之前使用的命令

9、  查询student表中备注不为空的学生所有信息

use mydb1;

select  * from  student  where  备注  is 
not null

1.3二、表的操作

10、查询student表中前3行的数据

1>表的创建演示

select   top 3  *  from student

创建一个员工表

11、查询student表中“姓名”和“身份证号”两列数据,查询结果“姓名”列名称显示为“name”,“身份证号”列名称显示为“idcard”

use mydb2;

select 姓名 as  name,身份证号 as 
idcard from  student

create table employee

12、查询student表中所有学生的总成绩,列名称显示为“总成绩”、

(

select sum(成绩)  as  总成绩  from 
student

idint,

13、 查询student表中所有学生信息,并按照成绩从高到低显示查询结果

name varchar(40),

select *  from  student order 
by 成绩 desc

sex varchar(4),

14、 查询student表中所有学生的平均成绩

birthday date,

select avg(成绩) as  平均成绩 
from student

entry_date date,

15、 查询student表中所有学生中的最高分和最低分

job varchar(40),

select max(成绩) as  最高分,min(成绩) as  最低分 
from  student

salary decimal(8,2),

16、 查询student表中所有行数

resume text

select count(*)总行数  from 
student

);

17、 查询student表中每个班级的总成绩

showtables;查看库的所有表(查看库里的表要先打开库)

student 所在班级,sum(成绩) as  总成绩 
from student  group  by  所在班级

showcreate table employee;查看表的创建细节

18、 查询student表中总成绩大于181分的班级

descemployee;看表结构

student  所在班级,sum(成绩) as  总成绩 
from student  group  by  所在班级 having sum(成绩)>181

2>对表的基本操作:增、删、改、查

19、 将student表中1班的学生信息保存在表student_1中

在上面员工表的基本上增加一个image列。

student *  into  aaa  from 
studentwhere 所在班级=‘1

altertableemployee add image varchar(20);

修改job列,使其长度为60。

altertableemployee modify job varchar(60);

删除sex列

altertableemployee drop sex;

表名改为user。

renametableemployee to user;

修改表的字符集为utf-8

altertableuser character set utf8;

列名name修改为username

altertabletest changecolumn address address1 varchar(30)

删除表

droptableuser;

3>增加、插入记录的sql语句详细

使用insert语句向表中插入三个员工的信息。

renametable user to employee;

insert into
employee(id,username,birthday,entry_date,job,salary,resume)values(1,’aaa’,’1980-09-09′,’1980-09-09′,’bbb’,90,’aaaaa’);

select* from employee;

插入数据的细节1

insert into
employeevalues(1,’aaa’,’1980-09-09′,’1980-09-09′,’bbb’,90,’aaaaa’);

插入数据的细节2

insert into
employeevalues(‘1′,’aaa’,’1980-09-09′,’1980-09-09′,’bbb’,’90’,’aaaaa’);

插入数据的细节3(插入中文)

要告诉mysql客户采用gb2312编码

show variables like’chara%’;

set character_set_client=gb2312;

insert into employee(id,username)values(‘3′,’张三’);

要想查看时不乱码

show variables like’chara%’;

set character_set_results=gb2312;

select* from employee;

4>删除记录的sql语句详细

删除表中名称为’zs’的记录。

deletefromemployee where username=’bbb’;

删除表中所有记录。

deletefromemployee;

使用truncate删除表中记录。

truncate table employee;

5>修改记录的sql语句详细

将所有员工薪水修改为5000元。

update employeesetsalary=5000;

将姓名为’bbb’的员工薪水修改为3000元。

update employeesetsalary=3000whereusername=’bbb’;

将姓名为’bbb的员工薪水修改为4000元,job改为ccc。

update employeesetsalary=4000,job=’ccc’whereusername=’bbb’;

将bbb的薪水在原有基础上增加1000元。

update employeesetsalary=salary+1000whereusername=’bbb’;

更新要注意的问题

update
employeesetusername=’ccc’,salary=9000,birthday=’1980-09-09′,…………………

updatewhereid=1;

6>查询记录的sql语句详细

查询表中所有学生的信息。

select*fromstudent;

查询表中所有学生的姓名和对应的英语成绩。

selectname,englishfromstudent;

过滤表中重复的英语数据。

selectdistinctenglishfromstudent;

在所有学生总分上加10分特长分。

selectname,(chinese+english+math)+10fromstudent;

统计每个学生的总分。

selectname,(chinese+english+math)fromstudent;

关于排序

将对象成绩过去

统计大于该成绩的人数即可

统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>80;

使用别名表示学生分数。

selectname as姓名,(chinese+english+math)+10as总分fromstudent;

selectname姓名,(chinese+english+math)+10总分fromstudent;

查询姓名为wu的学生成绩

select*fromstudentwherename=’王五’;

查询英语成绩大于90分的同学

select*fromstudentwhereenglish>’90’;

查询总分大于200分的所有同学

selectnamefromstudentwhere(chinese+english+math)>200;

查询英语分数在80-90之间的同学。

selectnamefromstudentwhereenglish>80andenglish<90;

selectnamefromstudentwhereenglish
between80and90;==selectnamefromstudentwhereenglish>=80andenglish<=90;

查询数学分数为89,90,91的同学。

select*fromstudentwheremath in(89,90,91);

查询所有姓李的学生成绩。

select*fromstudentwherename like ‘李%’;

select*fromstudentwherename like ‘李_’;

查询数学分>80,语文分>80的同学。

select*fromstudentwheremath>80andchinese>80;

分页查询,查询从第8条记录开始的3条记录;即:第8、9、10三条记录

intfrom=2;

intend =10;

String sql =”select * from student limit
“+from+”,”+end;//字符串类型的语句

select*fromstudent limit8,3;

1.4三、对数据记录的操作

查询统计排序等相关处理的sql语句

对数学成绩排序后输出。

selectname,mathfromstudent orderbymath;

对总分排序后输出,然后再按从高到低的顺序输出

selectname姓名,(chinese+english+math)总分fromstudent
orderby(chinese+english+math)desc;

selectname姓名,(chinese+english+math)总分fromstudent
orderby总分desc;

对姓李的学生成绩排序输出

select*fromstudentwherename like ‘李%’
orderby(chinese+english+math)desc;

统计一个班级共有多少学生?

selectcount(name)fromstudent;

selectcount(*)fromstudent;

统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>80;

统计总分大于250的人数有多少?

selectcount(*)fromstudentwhere(chinese+english+math)>250;

关于count的函数的细节(count只统有值的行)

统计一个班级数学总成绩?

selectsum(math)fromstudent;

统计一个班级语文、英语、数学各科的总成绩

selectsum(chinese),sum(english),sum(math)fromstudent;

统计一个班级语文、英语、数学的成绩总和

selectsum(chinese+english+math)fromstudent;

统计一个班级语文成绩平均分

selectsum(chinese)/count(*)fromstudent;

统计一个班级语文成绩平均分

selectavg(chinese)fromstudent;

求一个班级总分平均分

selectavg(chinese+math+english)fromstudent;

求班级最高分和最低分

selectmax(chinese+math+english),min(chinese+math+english)fromstudent;

对订单表中商品归类后,显示每一类商品的总价

selectproduct,sum(price)fromordersgroupbyproduct;

查询购买了几类商品,并且每类总价大于100的商品

selectproductfromordersgroupbyproduct
havingsum(price)>100;

按某一属性对记录进行排序

select*fromstudent orderbygradedesc;

希望能对你有所帮助!

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website