Java实训笔记(八)之mysql
2011-08-16 12:59
741 查看
Java实训笔记(八)之MYSQL篇
今天首先进行函数的讲解,函数主要分为:
1、 聚合函数
2、 字符串函数
3、 日期函数
4、 数学函数
聚合函数:由一组值计算后产生一个值。
常用函数有:
在函数中还可以使用distinct来表示不重复数据。
问题:计算每门课程的参加考试的人数?(假定score来表示成绩表,此表中有sid表示学号、cid表示课程号、grade表示成绩)
解决问题方法:
1、统计人数使用count;
2、每门课程需要使用分组(group by)
答案:
Select count(*) from score where grade is not null group by cid;
字符串函数:在mysql字符串中第一个字符的编号从1开始。
常用函数有:
日期函数:用来处理日期的函数
1、 ADDDATE(date,INTERVAL expr type) ADDDATE(expr,days) (ADDDATE()就是DATE_ADD()的同义词)
例如:推迟一个月Select adddate(curdate(),interval 1 month);(curdate()获得当前日期,now()获得当前日期和时间,curtime()获得当前时间)2、 Datediff:两者日期之间的差值3、 DAY() 或者dayofmonth()4、 Dayname():5、 Dayofweek6、 Dayofyear7、 Extract():用来提取日期中某一个部分;问题:统计本周内的营业额.(销售表sale(sid,sname,sdate,count,number));解决问题方法:如何确定本周,在这里就要用到extract函数用来取出日期中的周数即可。代码:select sum(count*number) from sale Where extract(week from curdate()) = extract(week from sdate);数学函数Random():用来产生随机数。 多表查询:
实现多表查询主要通过连接和子查询来实现。
连接的方式:连接分为内连接和外连接,外连接分为做外连接和右外连接。
示意图:(通过学生信息表和成绩表,两张表有一个公共字段叫做学号)
代码示例:
三张示例表的结构:学生信息表stdinfo(sid pk,sname,sex ,address),成绩表 score(sid ,cid ,grade,pk(sid,cid)),课程表 course(cid pk,cname)注明:pk表示主键
问题:查询学生的考试成绩。
解决问题方法:根据以上信息需要用到几张表,然后在看获得的信息是否是两张表的共同的值。
代码:select sname,cid,grade from stdinfo s inner join score sc on s.sid = sc.sid;
问题:把对应的课程名称显示出来.
问题:显示所有学生的考试信息。
解决问题的方法:在这里需要用到内连接和左外连接。
子查询:在语句中含有select查询,称为子查询,子查询之外的称为外部查询,先计算子查询,然后在计算外部查询。
语法:select 列名 from 表名 where 。。(子查询)
外部查询可以是update或者delete,他们都有一个共同特点就是都含有where子句,在where中通过运算符与子查询连接,可用的运算符为比较运算符和in。
问题:查找和川大出版社在同一个城市的作者。
解决问题方法:首先要查出川大出版社所在的城市,然后在根据这个城市查找作者。
表结构:author(aid,author_name,sex,birth,city)
Publisher(pid ,publisher_name,city)
代码:select author_name,sex birth ,city from author where
City in (select city from publisher where publisher_name=’川大出版社’);
连接实现方式:
Select author_name,sex,birth,city from author inner join (select city from publisher where publisher_name=’川大出版社’) c on author.city = c .city;
今天首先进行函数的讲解,函数主要分为:
1、 聚合函数
2、 字符串函数
3、 日期函数
4、 数学函数
聚合函数:由一组值计算后产生一个值。
常用函数有:
函数名 | 函数意义 |
Count() | 统计非空行数 |
Max()、min() | 计算最大数、计算最小数 |
Avg() | 求平均 |
Sum() | 求和 |
问题:计算每门课程的参加考试的人数?(假定score来表示成绩表,此表中有sid表示学号、cid表示课程号、grade表示成绩)
解决问题方法:
1、统计人数使用count;
2、每门课程需要使用分组(group by)
答案:
Select count(*) from score where grade is not null group by cid;
字符串函数:在mysql字符串中第一个字符的编号从1开始。
常用函数有:
函数名 | 函数意义 |
Length()、bit_length() | 求字符串长度、二进制字符串的长度 |
Concat() | 字符串连接 |
Ascii() | 求平均 |
Char | 求和 |
Ltrim() | 去除左边空格 |
Rtrim() | 去除右边空格 |
Left() | 从左边开始取字符 |
Right() | 从右边取开始取字符 |
Instr() | 查找位置 |
Substring() | 取子串 |
Rerverse() | 字符串反转 |
Bin() | 二进制 |
Oct() | 八进制 |
Hex() | 十六进制 |
Locate() | 得到字符的出现的位置 |
Repeat() | 字符重复 |
Format() | 格式字符串 |
1、 ADDDATE(date,INTERVAL expr type) ADDDATE(expr,days) (ADDDATE()就是DATE_ADD()的同义词)
Type值 | type 值 |
MINUTE_SECOND | MICROSECOND |
HOUR_MICROSECOND | SECOND |
HOUR_SECOND | MINUTE |
HOUR_MINUTE | HOUR |
DAY_MICROSECOND | DAY |
DAY_SECOND | WEEK |
DAY_MINUTE | MONTH |
DAY_HOUR | QUARTER |
YEAR_MONTH | YEAR |
MINUTE_MICROSECOND | SECOND_MICROSECOND |
实现多表查询主要通过连接和子查询来实现。
连接的方式:连接分为内连接和外连接,外连接分为做外连接和右外连接。
示意图:(通过学生信息表和成绩表,两张表有一个公共字段叫做学号)
代码示例:
三张示例表的结构:学生信息表stdinfo(sid pk,sname,sex ,address),成绩表 score(sid ,cid ,grade,pk(sid,cid)),课程表 course(cid pk,cname)注明:pk表示主键
问题:查询学生的考试成绩。
解决问题方法:根据以上信息需要用到几张表,然后在看获得的信息是否是两张表的共同的值。
代码:select sname,cid,grade from stdinfo s inner join score sc on s.sid = sc.sid;
问题:把对应的课程名称显示出来.
问题:显示所有学生的考试信息。
解决问题的方法:在这里需要用到内连接和左外连接。
子查询:在语句中含有select查询,称为子查询,子查询之外的称为外部查询,先计算子查询,然后在计算外部查询。
语法:select 列名 from 表名 where 。。(子查询)
外部查询可以是update或者delete,他们都有一个共同特点就是都含有where子句,在where中通过运算符与子查询连接,可用的运算符为比较运算符和in。
问题:查找和川大出版社在同一个城市的作者。
解决问题方法:首先要查出川大出版社所在的城市,然后在根据这个城市查找作者。
表结构:author(aid,author_name,sex,birth,city)
Publisher(pid ,publisher_name,city)
代码:select author_name,sex birth ,city from author where
City in (select city from publisher where publisher_name=’川大出版社’);
连接实现方式:
Select author_name,sex,birth,city from author inner join (select city from publisher where publisher_name=’川大出版社’) c on author.city = c .city;
相关文章推荐
- JAVA实训笔记(九)之mysql
- 美少女Java实训笔记03
- Java实训笔记(七)之mysql篇
- java实训第九次可后笔记
- 学校 2012 8-9月 java 实训 简单 笔记
- Java笔记---CenOS下配置Mysql
- Linux java+tomcat+mysql+iptables笔记
- Java学习笔记之<JDBC连接MySQL的步骤>
- 【Java学习笔记】54:CentOS下安装MySQL的JDBC驱动并尝试连接
- NIIT实训 java笔记--3.14
- Java实训笔记(四)
- java实训笔记(十一)之静态网页技术
- 天生丽质小仙女java实训笔记02
- Linux+javaEE的学习笔记之MySQL的安装和备份、回复数据
- 很好的mysql,c++,db,java,hadoop等笔记收集
- 笔记:Java 创建txt文件并向其写入数据,再将数据存入到Mysql数据表
- 傻B自己看的java笔记:连接MYSQL
- 21天学通Java学习笔记-Day12(MYsql-JDBC)
- 傻B自己看的java笔记:连接MYSQL
- 实训笔记之java基础学习