9月11日培训日记
2006-09-11 21:45 java ee spring 阅读(131) 评论(0) 编辑 收藏 举报1.讲解了MySQL的安装,对安装界面提示信息进行了解释,例如,数据库服务器程序与客户端程序的工作关系,数据库服务器程序与数据库空间的关系,MySQL InnoDB和MyISAM存储引擎的区别,事务的概念(一些过程要能同生同死,针对我们的项目,哪里用到事务?发license和扣减货币),OLAP与OLTP的区别。
2.多个逻辑相关的表形成一个数据库,一个数据库服务器上可以创建多个数据库,要先创建库再创建表。
3.如何启动mysql服务器,如何使用mysql命令连接mysql服务器,如何授权其他计算机上的用户访问mysql服务器,下面的语句仅供练习,实际应用中很不安全:
grant all previliges on *.* to 'root'@'%' identified by "";
4.讲解了与数据库操作相关的语句,与表操作相关的语句,与表中的记录操作相关的语句。如何使用一条insert into 语句插入多行记录,如何查看当前在哪个库下面?select database();
5.小知识:mysql 的char类型的字符串最大长度为64k,AND和OR可以混用,但AND比OR具有更高的优先级。进入mysql命令后:SOURCE子命令执行sql脚本文件。用“? 函数名”看函数帮助,所有函数列表看help_topic表即可。
6.在实际应用中要注意设置好用户的权限的实例讲解。一些安全方面的知识:局域网内监听,修改网站首页的攻击原理,sql注入攻击的分析。
String sqlLogon = "select * from user where name='" + name + "' and password='" + pass + "'";
对于sql server可以使用让name等于' or 1=1 --,结果语句为:select * from user where name='' or 1=1 --' and password='123'
但是更通用的做法是让pass等于' or 'x'='x,考虑到and优先级别高,让name等于这个值形成的如下语句也无法登录:
select * from user where name='' or 'x'='x' and password='123'
让pass等于' or 'x'='x,形成如下语句可以登录:
select * from user where name='zxx' and password='' or 'x'='x'
学员李杰(大学辍学)提议用两个or,形成如下语句,就非常保险了:
select * from user where name='' or 'x'='x' or 'x'='x' and password='123'
7.一个实际的sql应用:限制一个用户在45秒钟内不能连续发帖
8.在mysql中如何实现分页查询。
9.where从句中不能使用max等分组聚合函数进行判断。
10.多表查询的笛卡尔集的原理,多表条件查询的工作原理。编写多表查询语句时,一定要考虑查询效率的优化,例如,对用户表和帖子表进行关联查询,要查询出“清原卓也”这个用户所发表的帖子信息,两种查询语句的执行效率可能有着巨大差异。另外,要查询出“清原卓也”这个用户所发表的帖子信息,在编写程序时,可以简化sql语句,因为用户名已知,可以不进行多表的关联查询,而是采用如下语句:
select article.* from article where article.userid in(select user.id from user where user.name='清原卓也');
11.使用自关联查询出薪水大于'张三'的所有用户信息。
12.学员李杰(大学辍学)用SQL语句实现了对用户表中的每个用户进行排列组合的功能,如下:
select u1.name,u2.name from
(select name from user order by name) as u1, (select name from user order by name) as u2
where u2.name > u1.name
问题:
1.mysql配置向导工具是哪个程序?好象免安装版中没有提供。
2.学员发现spring中的bean的属性名的第二个字母不能大写,具体原因是怎么造成的呢?请汪大伦同学写个blog问问。
作业:
用sql语句计算出100天后的日期。