SQL查询连续七天以上的用户(用户一天一次记录 & 一天多次记录)

SQL查询连续七天以上的用户

创建表格
create table orde(id varchar(10),date datetime,orders varchar(10));
insert into orde values(‘1’ , ‘2019/1/1’,10 )
insert into orde values(‘1’ , ‘2019/1/2’,109 )
insert into orde values(‘1’ , ‘2019/1/3’,150 )
insert into orde values(‘1’ , ‘2019/1/4’,99)
insert into orde values(‘1’ , ‘2019/1/5’,145)
insert into orde values(‘1’ , ‘2019/1/6’,1455)
insert into orde values(‘1’ , ‘2019/1/7’,199)
insert into orde values(‘1’ , ‘2019/1/8’,188 )
insert into orde values(‘4’ , ‘2019/1/1’,10 )
insert into orde values(‘2’ , ‘2019/1/2’,109 )
insert into orde values(‘3’ , ‘2019/1/3’,150 )
insert into orde values(‘4’ , ‘2019/1/4’,99)
insert into orde values(‘5’ , ‘2019/1/5’,145)
insert into orde values(‘6’ , ‘2019/1/6’,1455)
insert into orde values(‘7’ , ‘2019/1/7’,199)
insert into orde values(‘8’ , ‘2019/1/8’,188 )
insert into orde values(‘9’ , ‘2019/1/1’,10 )

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查询数据指从数据库获取所需要的数据。查询数据是数据库操作最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL是使用SELECT语句来查询数据的。在这一章将讲解的内容包括。 1、查询语句的基本语法 2、在单表上查询数据 3、使用聚合函数查询数据 4、多表上联合查询 5、子查询 6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) not null, STU_AGE smallint unsigned not null, STU_SEX char(2) not null ); insert into STUDENT values(2001,'小王',13,'男'); insert into STUDENT values(2002,'明明',12,'男'); insert into STUDENT values(2003,'红红',14,'女'); insert into STUDENT values(2004,'小花',13,'女'); insert into STUDENT values(2005,'天儿',15,'男'); insert into STUDENT values(2006,'阿猎',13,'女'); insert into STUDENT values(2007,'阿猫',16,'男'); insert into STUDENT values(2008,'阿狗',17,'男'); insert into STUDENT values(2009,'黑子',14,'男'); insert into STUDENT values(2010,'小玉',13,'女'); insert into STUDENT values(2011,'头头',13,'女'); insert into STUDENT values(2012,'冰冰',14,'女'); insert into STUDENT values(2013,'美丽',13,'女'); insert into STUDENT values(2014,'神乐',12,'男'); insert into STUDENT values(2015,'天五',13,'男'); insert into STUDENT values(2016,'小三',11,'男'); insert into STUDENT values(2017,'阿张',13,'男'); insert into STUDENT values(2018,'阿杰',13,'男'); insert into STUDENT values(2019,'阿宝',13,'女'); insert into STUDENT values(2020,'大王',14,'男'); 然后这是学生成绩表,其定义了外键约束 [sql] view plain copy create table GRADE( STU_ID INT NOT NULL, STU_SCORE INT, foreign key(STU_ID) references STUDENT(STU_ID) ); insert into GRADE values(2001,90); insert into GRADE values(2002,89); insert into GRADE values(2003,67); insert into GRADE values(2004,78); insert into GRADE values(2005,89); insert into GRADE values(2006,78); insert into GRADE values(2007,99); insert into GRADE values(2008,87); insert into GRADE values(2009,70); insert into GRADE values(2010,71); insert into GRADE values(2011,56); insert into GRADE values(2012,85); insert into GRADE values(2013,65); insert into GRADE values(2014,66); insert into GRADE values(2015,77); insert into GRADE values(2016,79); insert into GRADE values(2017,82); insert into GRADE values(2018,88); insert into GRADE values(2019,NULL); insert into GRADE values(2020,NULL); 一、查询语句的基本语法 查询数据是指从数据库的数据表或视图获取所需要的数据,在mysql,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy SELECT 属性列表 FROM 表名或视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING 条件表达式2]] [ORDER BY 属性名2 [ASC|DESC]] 属性列表:表示需要查询的字段名。 表名或视图列表:表示即将进行数据查询的数据表或者视图,表或视图可以有多个。 条件表达式1:设置查询的条件。 属性名1:表示按该字段的数据进行分组。 条件表达式2:表示满足该表达式的数据才能输出。 属性2:表示按该字段的数据进行排序,排序方式由ASC或DESC参数指定。 ASC:表示按升序的顺序进行排序。即表示值按照从小到大的顺序排列。这是默认参数。 DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。 如果有WHERE子句,就按照“条件表达式1”指定的条件进行查询;如果没有WHERE子句,就查询所有记录。 如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后面带着HAVING关键字,那么只有满足“条件表达式2”指定的条件的记录才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。 如果有ORDER BY子句,就按照“属性名2”指定的字段进行排序。排序方式由ASC或DESC参数指定。默认的排序方式为ASC。 二、在单表上查询数据 2.1、查询所有字段 [sql] view plain copy select * from STUDENT; 2.2、按条件查询 (1) 比较运算符 > , < ,= , != (),>= , 13; in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出 IN关键字可以判断某个字段的值是否在指定的集合。如果字段的值在集合,则满足查询条件,该纪录将被查询出来。如果不在集合,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql] view plain copy select * from STUDENT where STU_AGE in(11,12); between v1 and v2 在v1至v2之间(包含v1,v2) BETWEEN AND关键字可以判读某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该纪录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下: [ NOT ] BETWEEN 取值1 AND 取值2 [sql] view plain copy select * from STUDENT where STU_AGE between 13 and 15; (2)逻辑运算符 not ( ! ) 逻辑非 [sql] view plain copy select * from STUDENT where STU_AGE NOT IN(13,14,16); or ( || ) 逻辑或 OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同。使用OR关键字时,只要满足这几个查询条件的其一个,这样的记录将会被查询出来。如果不满足这些查询条件的任何一个,这样的记录将被排除掉。OR关键字的语法规则如下: 条件表达式1 OR 条件表达式2 [ …OR 条件表达式n ] 其,OR可以用来连接两个条件表达式。而且,可以同时使用多个OR关键字,这样可以连接更多的条件表达式。 [sql] view plain copy select * from STUDENT where STU_ID2015; and ( && ) 逻辑与 AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其一个,这样的记录将被排除掉。AND关键字的语法规则如下: 条件表达式1 AND 条件表达式2 [ … AND 条件表达式n ] 其,AND可以连接两个条件表达式。而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。 (3)模糊查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE '字符串' “NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。 通配符: % 任意字符 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '%王'; 表示匹配任何以王结尾的 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '阿%'; 表示匹配任何以阿开头的 _ 单个字符 比如说插入 [sql] view plain copy insert into STUDENT values(2021,'天下无镜',14,'男'); 然后 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下_'; 查询的结果为空 但是如果下后面加两个_符号 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下__'; 查询结果不为空 “字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别 “%”可以代表任意长度的字符串,长度可以为0; “_”只能表示单个字符。 如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。 (4)空值查询 IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下: IS [ NOT ] NULL 其,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。 IS NULL是一个整体,不能将IS换成”=”. 三、使用聚合函数查询数据 3.1、group by 分组 如下: [sql] view plain copy select * from STUDENT group by STU_SEX; 不加条件,那么就只取每个分组的第一条。 如果想看分组的内容,可以加groub_concat [sql] view plain copy select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX; 3.2、一般情况下group需与统计函数(聚合函数)一起使用才有意义 先准备一些数据: [sql] view plain copy create table EMPLOYEES( EMP_NAME CHAR(10) NOT NULL, EMP_SALARY INT unsigned NOT NULL, EMP_DEP CHAR(10) NOT NULL ); insert into EMPLOYEES values('小王',5000,'销售部'); insert into EMPLOYEES values('阿小王',6000,'销售部'); insert into EMPLOYEES values('工是不',7000,'销售部'); insert into EMPLOYEES values('人人乐',3000,'资源部'); insert into EMPLOYEES values('满头大',4000,'资源部'); insert into EMPLOYEES values('天生一家',5500,'资源部'); insert into EMPLOYEES values('小花',14500,'资源部'); insert into EMPLOYEES values('大玉',15000,'研发部'); insert into EMPLOYEES values('条条',12000,'研发部'); insert into EMPLOYEES values('笨笨',13000,'研发部'); insert into EMPLOYEES values('我是天才',15000,'研发部'); insert into EMPLOYEES values('无语了',6000,'审计部'); insert into EMPLOYEES values('什么人',5000,'审计部'); insert into EMPLOYEES values('不知道',4000,'审计部'); mysql的五种统计函数: (1)max:求最大值 求每个部门的最高工资: [sql] view plain copy select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (2)min:求最小值 求每个部门的最仰工资: [sql] view plain copy select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (3)sum:求总数和 求每个部门的工资总和: [sql] view plain copy select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP (4)avg:求平均值 求每个部门的工资平均值 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (5)count:求总行数 求每个部门工资大于一定金额的人数 [sql] view plain copy select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP; 3.3、带条件的groub by 字段 having,利用HAVING语句过滤分组数据 having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句定义的列和聚合表达式上。通常,你需要通过在HAVING子句重复聚合函数表达式来引用聚合值,就如你在SELECT语句做的那样。 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000; 查找平均工资大于6000的部门,并把部门里的人全部列出来 四、多表上联合查询 多表上联合查询分为内连接查询和外连接查询 (1)隐式内连接查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT,GRADE WHERE STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 查找大于90分的学生信息: (2)显式内连接查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT inner join GRADE on STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 用法:select .... from 表1 inner join 表2 on 条件表达式 (3)外连接查询 left join.左连接查询。 用法 :select .... from 表1 left join 表2 on 条件表达式 意思是表1查出来的数据不能为null,但是其对应表2的数据可以为null [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT left join GRADE on STUDENT.STU_ID=GRADE.STU_ID; right join就是相反的了,用法相同 用left join的时候,left join操作符左侧表里的信息都会被查询出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会显示出来 full join() 完整外部联接返回左表和右表的所有行。当某行在另一个表没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据 值。 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表的任何行不匹配的行。而外联接会返回 FROM 子句提到的至少一个表或 视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外 部联接两个表的所有行都将返回。 五、子查询 以一个查询select的结果作为另一个查询的条件 语法:select * from 表1 wher 条件1(select ..from 表2 where 条件2) 1、与In结合 [sql] view plain copy select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85); 查找大于85分的学生信息 2、与EXISTS结合 EXISTS和NOT EXISTS操作符只测试某个子查询是否返回了数据行。如果是,EXISTS将是true,NOT EXISTS将是false。 [sql] view plain copy select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100); 如果有学生成绩大于100,才查询所有的学生信息 3、ALL、ANY和SOME子查询 any和all的操作符常见用法是结合一个相对比较操作符对一个数据列子查询的结果进行测试。它们测试比较值是否与子查询所返回的全部或一部分值匹配。比方说,如果比较值小于或等于子查询所返回的每一个值,<=all将是true,只要比较值小于或等于子查询所返回的任何一个值,<=any将是true。some是any的一个同义词。 [sql] view plain copy select STU_ID from GRADE where STU_SCORE = any (select STU_ID from GRADE where STU_SCORE 80 order by STU_SCORE; 默认是按升序的, 也可以这么写 [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC; 结果如下: 如果想换成降序的: [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE desc; 7.2、limit limit [offset,] N offset 偏移量,可选,不写则相当于limit 0,N N 取出条目 取分数最高的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 5; 取分数最低的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE asc limit 5; 取分数排名在10-15之间的5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 10,5 八、为表和字段取别名 使用AS来命名列 [sql] view plain copy select STU_ID as '学号',STU_SCORE as '分数' from GRADE; 当表的名称特别长时,在查询直接使用表名很不方便。这时可以为表取一个别名。用这个别名来代替表的名称。 MySQL为表取别名的基本形式如下: 表名 表的别名 [sql] view plain copy select S.STU_ID,S.STU_NAME,S.STU_AGE,S.STU_SEX,G.STU_SCORE from STUDENT S,GRADE G WHERE S.STU_ID=G.STU_ID AND G.STU_SCORE >=90; 九、使用正则表达式查询 正则表达式是用某种模式去匹配一类字符串的一个方式。例如,使用正则表达式可以查询出包含A、B、C其任一字母的字符串。正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂查询。 MySQL,使用REGEXP关键字来匹配查询正则表达式。其基本形式如下: 属性名 REGEXP '匹配方式' 在使用前先插入一些数据: [sql] view plain copy insert into STUDENT values(2022,'12wef',13,'男'); insert into STUDENT values(2023,'faf_23',13,'男'); insert into STUDENT values(2024,'fafa',13,'女'); insert into STUDENT values(2025,'ooop',14,'男'); insert into STUDENT values(2026,'23oop',14,'男'); insert into STUDENT values(2027,'woop89',14,'男'); insert into STUDENT values(2028,'abcdd',11,'男'); (1)使用字符“^”可以匹配以特定字符或字符串开头的记录。 查询所有以阿头的 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^阿'; 以数字开头 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^[0-9]'; (2)使用字符“$”可以匹配以特定字符或字符串结尾的记录 以数字结尾 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9]$'; (3)用正则表达式来查询时,可以用“.”来替代字符串的任意一个字符。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$'; 以w开头,以数字结束,间有4个 (4)使用方括号([])可以将需要查询字符组成一个字符集。只要记录包含方括号的任意字符,该记录将会被查询出来。 例如,通过“[abc]”可以查询包含a、b、c这三个字母任何一个的记录。 使用方括号可以指定集合的区间。 “[a-z]”表示从a-z的所有字母; “[0-9]”表示从0-9的所有数字; “[a-z0-9]”表示包含所有的小写字母和数字。 “[a-zA-Z]”表示匹配所有字母。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9a-z]'; 查询所有包含有数字和小写字母的 使用“[^字符集合]”可以匹配指定字符以外的字符 (5){}表示出现的次数 正则表达式,“字符串{M}”表示字符串连续出现M次;“字符串{M,N}”表示字符串联连续出现至少M次,最多N次。例如,“ab{2}”表示字符串“ab”连续出现两次。“ab{2,4}”表示字符串“ab”连续出现至少两次,最多四次。 o出现2次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP 'o{2}'; (6)+表示到少出现一次 fa至少出现一次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '(fa)+'; 注意: 正则表达式可以匹配字符串。当表记录包含这个字符串时,就可以将该记录查询出来。如果指定多个字符串时,需要用符号“|”隔开。只要匹配这些字符串的任意一个即可。每个字符串与”|”之间不能有空格。因为,查询过程,数据库系统会将空格也当作一个字符。这样就查询不出想要的结果。 正则表达式,“*”和“+”都可以匹配多个该符号之前的字符。但是,“+”至少表示一个字符,而“*”可以表示零个字符。
先登陆服务器: telnet 192.168.0.23 公帐号: openlab-open123 tarena-tarena 再进入SQLsqlplus sd0807/sd0807 帐号:sd0807-密码同样 公帐号:openlab-open123 设置环境变量: ORACLE_SID=oral10g\ --变局部变量 export ORACLE_SID --变全局变量 unset ORACLE_SID --卸载环境变量 ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下 export ORACLE_HOME=/oracledata/.../bin: 一、注意事项: 大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。 “!”在SQL环境下执行Unix命令。 SQL语句是由简单的英语单词构成;这些英语单词称为关键字/保留字,不做它用。SQL由多个关键字构成。 SQL语句由子句构成,有些子句是必须的,有些是可选的。 在处理SQL语句时,其所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。 SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] [Group by group_by_expression] [Having group_condition] …… [Order by column]; --最后 三、常用简单语句: clear screen:清屏 edit:编辑刚才的一句。 desc/describe:(列出所有列名称) 用法: DESCRIBE [schema.]object[@db_link] dual:亚表,临时用。如:desc dual;/from dual; rollback:回溯,回溯到上次操作前的状态,把这次事务操作作废,只有一次(DDL和DCL语句会自动提交,不能回溯)。 可以用commit语句提交,这样就回溯不回了。 set pause on\off :设置分屏(设置不分屏) set pause "please put an enter key" 且 set pause on:设置带有提示的分屏 oerr ora 904 :查看错误 set head off :去掉表头 set feed off :去掉表尾 保存在oracle数据库的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。 当两个表有相同字段时必须加前缀,列名前需加表名和“.”,如“s_emp.id”。 1、用法:SELECT columns,prod2,prod3<列> FROM Table1,table2<表名> 分号结束 如: select id from s_emp; select last_name,name from s_emp,s_dept where s_emp.dept_id=s_dept.id;--列表每人所在部门 SELECT * FROM Products; --检索所有列。 数据太多时,最好别使用上句,会使DBMS降低检索和应用程序的性能。(*通配符) 2、对数据类型的列可进行运算(如加减乘除)。 3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号) 多表查询时,可给表起别名。(给列起别名,列<空格>列别名;给表起别名,表<空格>表别名;)。 如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E; 4、字段的拼接,可用双竖线(双竖线只能用于select语句里)。不同的DBMS可能使用不同的操作符;拼接的字段同样可以起别名。 如:Select first_name ||' '|| last_name || ', '|| title "Employees" From s_emp; 排他锁:Select id,salary From s_emp where id=1 For Update; 可以阻止他人并发的修改,直到你解锁。 如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait; FOR UPDATE :可以再加 OF 精确到某格。如: ... For Update OF salary ... 注意要解锁。 五、ORDER BY 子句,排序 Order by:按某排序列表(默认升序 asc,由低到高;可加 desc,改成降序由高到低) 检索返回数据的顺序没有特殊意义,为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字。 对空值,按无穷大处理(升序,空值排最后;降序排最前)。 1、用法:Select prod_id,prod_price,prod_name From Products Order By prod_price,prod_name; (从左到右执行排序,先排price) ORDER BY子句使用的列将是为显示所选择的列,但是实际上并不一定要这样,用非检索的列排序数据是完全合法的。 为了按多个列排序,列名之间用逗号分开。 2、支持按相对列位置进行排序。 输入 SELECT prod_id,prod_price,prod_name FROM Products ORDER BY 2,3 --(2指price,3指name) 3、升序、降序。默认是升序(asc,从小到大排序),想降序时用desc。 如:SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC; 注意:DESC 关键字只应用到直接位于其前面的列名。如果想在多个列上进行排序,必须对每个列指定DESC关键字。 升序是默认的,可不写,但降序必须写。 六、WHERE子句,选择、过滤 其后只能跟逻辑语句,返回值只有ture或false 如: select last_name,salary from s_emp where salary=1000;--找出工资1000的人 WHERE子句操作符: 1、逻辑比较运算符 = 等于 != 不等于,还有(<> ^= 这两个同样表示不等于) > 大于 >= 大于等于 < 小于 <= 小于等于 2、SQL 比较运算符 between…and… :在两者之间。(BETWEEN 小值 AND 大值) 如:select last_name,salary from s_emp where salary between 1000 and 1500; --工资1000到1500的人,包括1000和1500。 in(列表):在列表里面的。 如:select last_name,dept_id from s_emp where dept_id in(41,42);第41、42部门的人 like : 包含某内容的。模糊查询 可以利用通配符创建比较特定数据的搜索模式,通配符只能用于文本,非文本数据类型不能使用通配符。 通配符在搜索模式任意位置使用,并且可以使用多个通配符。 通配符%表示任何字符出现任意次数;还能代表搜索模式给定位置的0个或多个字符。下划线匹配单个任意字符。 如:select table_name from user_tables where table_name like 'S\_%' escape'\'; ' 找出“S_“开头的,由于下划线有任意字符的含义,故需另外定义转移符。 但习惯用“\”,为方便其他程序员阅读和检测,一般不改用其他的。 like 'M%':M开头的 like '_a%':第二个字符是a的 like '%a%'所有含a的 (“_”表示一个任意字符;“%”表示任意多个任意字符。) 单引号里面的内容,大小写敏感。单引号用来限定字符串, 如果将值与串类型的列进行比较,则需要限定引号;用来与数值列进行比较时,不用引号。 is null:是空。(NULL表示不包含值。与空格、0是不同的。) 如:SELECT prod_name,prod_price FROM Products WHERE prod_price IS NULL; 七、高级检索(逻辑运算符): 通常我们需要根据多个条件检索数据。可以使用AND或OR、NOT等连接相关的条件 计算次序可以通过圆括号()来明确地分组。不要过分依赖默认计算次序,使用圆括号()没有坏处,它能消除二义性。 and:条件与 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price<4 AND vend_id=‘DELL’ or:条件或 (注: and 的优先级比 or 更高,改变优先级可用括号) 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price<4 OR vend_id=‘DELL’ not:条件非。否定它之后所跟的任何条件 否定的SQL 比较运算符: NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL: (注意,按英语习惯用 is not,而不是 not is) NOT 与 IN 在一起使用时,NOT 是找出与条件列表不匹配的行。 IN 列表里有 NULL 时不处理,不影响结果;用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。 in :选择列表的条件 使用IN操作符的优点: 在长的选项清单时,语法直观; 计算的次序容易管理; 比 OR 操作符清单执行更快;最大优点是可以包含其他 SELECT 语句,使用能够动态地建立 WHERE 子句。 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id IN(‘DELL’,’RBER’,’TTSR’); 八、单行函数: 函数一般在数据上执行,它给数据的转换和处理提供了方便。不同的DBMS提供的函数不同。 函数可能会带来系统的不可移植性(可移植性:所编写的代码可以在多个系统上运行)。 加入注释是一个使用函数的好习惯。 大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price="" 这种写法是错的(不要受到corejava的影响) prod_price=NULL 这种写法是错的(不要受到corejava的影响) prod_price IS NULL 这种写法才是对的 NVL:处理空值,把空值转化为指定值。可转化为日期、字符、数值等三种(注意:转化时,两参数必须要同类型) 如:NVL(date, '01-JAN-95') NVL(title,'NO Title Yet') NVL(salary,0) 错误写法: Select last_name,title,salary*commission_pct/100 COMM From s_emp;--没提成的人没法显示工资 正确写法: Select last_name,title,salary*NVL(commission_pct,0)/100 COMM From s_emp;--把提成是空值的转化为0 DISTINCT:过滤重复 把重复的行过滤掉;多个字段组合时,只排除组合重复的。 DISTINCT必须使用列名,不能使用计算或者表达式。 所有的聚合函数都可以使用。如果指定列名,则DISTINCT只能用于COUNT(列名),DISTINCT不能用于COUNT(*)。 如:Select Distinct name From s_dept; Select Distinct dept_id,title From s_emp; 文本处理: TRIM()/LTRIM()/RTIRM():去空格。只能去掉头和尾的空格,间的不理。 trim(' heo Are fdou ') --> heo Are fdou 输入:select trim(' heo Are fdou ') from dual; -->:heo Are fdou LOWER:转小写 lower('SQL Course') --> sql course UPPER:转大写 upper(' SQL Course') --->SQL COURSE INITCAP:首字母转大写,其余转小写 initcap(SQL Course') '--> Sql Course CONCAT:合成。双竖线只能在select语句里面用,这个可用于任何语句。 Concat('Good','String') --> GoodString SUBSTR:截取。 Substr('String', 1 ,3) --> Str 第一个数字“1”,表示从第几个开始截取;若要从倒数第几个开始,用负数,如“-2”表示倒数第2个。 上式第2个数字“3”表示截取多少个。 LENGTH:统计长度。 Length('String') --> 6 NVL:转换空值 日期和时间处理: Oracle日期格式:DD-MMM-YYYY (D代表日期date,M代表月month,Y代表年year) 如:SELECT prod_name (DAY表示完整的星期几,DY显示星期的前三个字母) FROM Products WHERE prod_time BETWEEN to_date(’01-JAN-2008’) AND to_date(’31-DEC-2008’); 日期可以进行加减,默认单位是1天。日期与日期可以相减,得出天数;日期与日期但不能相加。 sysdate -> 系统的当天 Months_Between('01-Sep-95','11-Jan-94') --> 19.774194 相差多少个月,Between里面也可以填函数。 Add_months('11-Jan-94',6) --> 11-Jul-94 增加多少个月 Next_day('01-Sep-95','Friday') --> '08-Sep-95' 下一个星期五。其的'Friday'可用6替代,因为星期日=1 Last_day('01-Sep-95') --> '30-Sep-95' 这个月的最后一天 数值处理:可以运用于代数,三角,几何 ROUND:四舍五入 Round(45.925,2) -> 45.93 Round(45.925,0) -> 46 Round(45.925,-1) -> 50 逗号前一个数是要处理的数据源,后一个参数表示保留多少位小数。 后一参数是负数时,表示舍去小数点前的几位,例3是舍去个位及其后的。不写后一参数时,默认不保留小数。 TRUNC:舍去末位。直接舍去,不会进位。 Trung(45.925,2) -> 45.92 Trung(45.925,2) -> 45.92 Trung(45.925,2) -> 45.92 日期的舍取: 常用的数值处理函数有: ABS() 绝对值 ABS(-5741.5854) --> 5741.5854 PI() 圆周率 注意:oracle不支持 PI()函数;MYSql 支持PI()函数。 SIN() 正统值 Oracle还支持COS()、ASIN()、ACOS()函数 SQRT() 平方根 转化: TO_CHAR(number,'fmt'):把数值转换成字符串 显示数字的命令 9:正常显示数字; 0:显示包括0的数值形式,空位强制补0; $:以美元符号显示货币; L:按当前环境显示相关的货币符号; . 和,:在固定位置出现“.”点 和“,”逗号;不够位时,四舍五入。 例题:SQL> select 'Order'||To_char(id)|| 2 'was filled for a total of' 3 ||To_char(total,'fm$9,999,999') 4 from s_ord 5 where ship_date ='21-SEP-92'; TO_NUMBER(char):把字符转换成数字 九、链接 内链接:严格匹配两表的记录。 外链接分左链接和右链接: 会使用一方表的所有记录去和另一格表记录按条件匹配,空值也会匹配,这个表的所有记录都会显示, 数据库会模拟出记录去和那些不匹配的记录匹配。 左链接 加号在右面 如:有 TABLE1 TABLE2 1的一条记录在2里面没有匹配上,那么1里面的记录保留 2的一条记录在1里面没有匹配上 ,那么2丢弃 右链接正好相反 --例题:哪些人是领导。 select distinct b.id,b.last_name manager from s_emp a,s_emp b where a.manager_id=b.id(+); 左右顺序有区别,这是另外新建一个表,要显示的是第二个表格的内容。 +放在没有匹配行的表一侧,令表格能完整显示出来。 标准写法:内连接用INNER,左连接用LEFT,右连接用RIGHT。 select distinct b.id,b.last_name manager from s_emp a LEFT join s_emp b ON a.manager_id=b.id; 十、组函数: 分组允许将数据分为多个逻辑组,以便能对每个组进行聚集计算。 Group:分组 Group by:分组。(默认按升序对所分的组排序;想要降序要用 order by)可以包括任意数目的列。 如果嵌入了分组,数据将在最后规定的分组上进行汇总。 GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚集函数。 *如果在SELECT 使用表达式,则必须在GROUP BY子句指定相同的表达式,不能使用别名。 除聚合计算语句外,SELECT语句的每个列都必须在GROUP BY子句给出。 如果分组列具有NULL值,则NULL将作为一个分组返回。如果列有多行NULL,它们将分为一组。 Having:过滤。分组之后,不能再用where,要用having 选择过滤。Having不能单独存在,必须跟在group by后面。 WHERE在数据分组前进行过滤,HAVING在数据分组后过滤。 可以在SQL同时使用 WHERE和HAVING,先执行WHERE,再执行HAVING。 聚合函数: AVG:平均值 (忽略值为NULL的行,但不能用 AVG(*)) COUNT:计数 (Count(列)不计算空值;但 COUNT(*)表示统计表所有行数,包含空值) MAX:最大值 (忽略列值为 NULL 的行。但有些DBMS还允许返回文本列的最大值, 在作用于文本数据时,如果数据按照相应的列排序,则 MAX()返回最后一行。) MIN:最小值 (忽略值为 NULL 的行。不能用 MIN(*)。一般是找出数值或者日期值的最小值。 但有些DBMS还允许返回文本列的最小值,这时返回文本最前一行) SUM:求和 (忽略值为 NULL 的值。SUM 不能作用于字符串类型,而 MAX(),MIN()函数能。也不能 SUM(*)) 子查询:查询语句的嵌套 可以用于任意select 语句里面,但子查询不能出现 order by。 子查询总是从内向外处理。作为子查询的SELECT 语句只能查询单个列,企图检索多个列,将会错误。 如:找出工资最低的人select min(last_name),min(salary) from s_emp; 或者用子查询select last_name,salary from s_emp where salary=(select min(salary) from s_emp); E-R图:属性: E(Entity) -R(Relationship) * (Mandatory marked 强制的) 强制的非空属性 o (Optional marked 可选的) 可选属性(可以有值也可以没有) #* (Primary marked ) 表示此属性唯一且非空 约束:针对表的字段进行定义的。 PK:primary key (主键约束,PK=UK+NN)保证实体的完整性,保证记录的唯一 主键约束,唯一且非空,并且每一个表只能有一个主键,有两个字段联合作为主键, 只有两个字段放在一起唯一标识记录,叫做联合主键(Composite Primary Key)。 FK:foreign key (外建约束)保证引用的完整性,外键约束,外键的取值是受另外一张表的主键或唯一值的约束,不能够取其他值, 只能够引用主键会唯一键的值,被引用的表,叫做parent table(父表),引用方的表叫做child table(子表); child table(子表),要想创建子表,就要先创建父表,后创建子表,记录的插入也是如此,先父表后子表, 删除记录,要先删除子表记录,后删除父表记录, 要修改记录,如果要修改父表的记录要保证没有被子表引用。要删表时,要先删子表,后删除父表。 U:unique key(唯一键 UK),值为唯一,不能重复。 在有唯一性约束的列,可以有多个空值,因为空值不相等。 NN:NOT NULL,不能为空。 index(索引)是数据库特有的一类对象,实际应用一定要考虑索引,view(示图) 数量关系: 一对一关系 多对一关系 一对多关系 多对多关系 范式: 好处:降低数据冗余;减少完整性问题;标识实体,关系和表 第一范式(First normal form:1Nf),每一个属性说一件事情。所有的属性都必须是单值,也就是属性只表示单一的意义。 (记录可以重复,会有大量冗余,没有任何限制) 第二范式(2N范式),最少有一个属性要求唯一且非空PK,其他跟他有关联(记录不可重复,但是数据可能会出现冗余)。 第三范式(3N范式),非主属性只能依赖于主属性,不能依赖于其他非主属性。(解决数据冗余问题,不能存在推理能得出的数据) 一般情况会做到第三范式。 创建表: Create Table 表名 (字段名1 类型(数据长度)(default ...) 约束条件, 字段名2 类型(数据长度) 约束条件 ); 建表的名称: 必须字母开头;最多30字符;只能使用“A~Z、a~z、0~9、_、$、#”; 同一目录下不能有同名的表;表名不能跟关键字、特殊含意字符同样。 如:create table number_1 (n1 number(2,4), n2 number(3,-1), n3 number); create table t_sd0808(id number(12) primary key,name varchar(30) not null); MySQL的: create table student (oid int primary key, ACTNO varchar(20) not null unique, BALANCE double); --MySQL的number类型分小类了,Oracle只有number,且MySQL的数值型不用定大小 Oracle的: create table t_ad (oid number(15) primary key, ACTNO varchar(20) not null unique,BALANCE number(20)); INSERT:插入(或添加)行到数据库表的关键字。 插入方式有以下几种:插入完整的行;插入行的一部分;插入某些查询的结果。 对于INSERT操作,可能需要客户机/服务器的DBMS的特定的安全权限。 插入行(方式一) INSERT INTO products VALUES(2008,’TV’,222.22,’US’); 依赖于表定义的顺序,不提倡使用。有空值时需要自己补上。 插入行(方式二) INSERT INTO products(id,name,price,vend_name) VALUES(2008,’TV’,222.22,’US’); 依赖于逻辑顺序,会自动补上空值,提倡使用。 插入检索出的数据:可以插入多条行到数据库表 INSERT INTO products(*,*,*,*) SELECT *,*,*,* FROM products_copy; 如果这个表为空,则没有行被插入,不会产生错误,因为操作是合法的。 可以使用WHERE加以行过滤。 复制表: 将一个表的内容复制到一个全新的表(在运行创建,开始可以不存在) CREATE TABLE 新表名 AS SELECT * FROM 表名; INSERT INTO 与 CREATE TABLE AS SELECT 不同,前者是导入数据,而后者是导入表。 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY。 可利用联接从多个表插入数据。不管从多少个表检索数据,数据都只能插入到单个表。 更新数据 UPDATE 语句 需要提供以下信息:要更新的表;列名和新值;确定要更新的哪些行的过滤条件。 UPDATE 表名 SET vend_name = ‘HP’, prod_name = ‘NEWCOMPUTER’ WHERE vend_name = ‘IBM’; --UPDATE 语句可以使用子查询,使得能用SELECT语句检索出的数据更新列数据。也可以将一个列值更新为 NULL。 删除数据 DELETE 语句 DELETE FROM products WHERE prod_name = ‘COMPUTER’; 全行删除,不要省略WHERE,注意安全。 DELETE不需要列名或通配符。删除整行而不是删除列。DELETE是删除表的内容而不是删除表。 如果想从表删除所有内容,可以使用TRUNCATE TABLE语句(清空表格),它更快。 数字字典表: Sequence:排列。存储物理地址 Index:索引。依附于表,为提高检索速度。 View:视图。看到表的一部分数据。 限制数据访问。简化查询。数据独立性。本质上是一个sql查询语句。 Create[or Relace][Force|noForce] View 视图名 [(alias[,alias]…)] 别名列表 As subquery [With Check Option [Constraint ……]] [With Read Only] 注意:有些DBMS不允许分组或排序视图,不能有 Order by 语句。可以有 Select 语句。 删除视图: DROP VIEW 视图名 Rownum:纬列。内存里排序的前N个。 在where语句,可以用=1,和<=N 或 <N;但不能用=N 或 >N。 因为这是内存读取,没有1就丢弃再新建1。只能从1开始。需要从间开始时,需二重子rownum语句需取别名。 经典应用: Top-n Analysis (求前N名或最后N名) Select [查询列表], Rownum From (Select [查询列表(要对应)] From 表 Order by Top-N_字段) Where Rownum <= N 分页显示: --取工资第5~10名的员工(二重子rownum语句,取别名) select rn,id,last_name,salary From ( select id,last_name,salary,Rownum rn From (Select id,last_name,salary from s_emp order by salary desc) where rownum <= 10) where rn between 5 and 10; Union:合并表 Select … Union Select… 把两个Select语句的表合并。 要求两表的字段数目和类型按顺序对应。合并后的表,自动过滤重复的行。 Intersect:交。 同上例,把两个Select表相交。 Minus:减。 把相交的内容减去。 not exists 除运算。 添加字段(列): Alter Table 表名 Add (column dataype [Default expr][Not Null] [,column datatype]…); 添加有非空限制的字段时,要加Default语句 字段名字不可以直接改名,需要添加新字段,再复制旧字段后删除旧字段。 添加约束: Alter Table 表名 Add [CONSTRAINT constraint] type (column); 添加非空约束时,要用Modify语句。 查看约束名时,可以违反约束再看出错提示;或者查看约束字典desc user_constraints 减少字段: Alter Table 表名 Drop (column [,column]…); 删除约束: Alter Table 表名 Drop CONSTRAINT column; 或: Alter Table 表名 Drop Primary Key Cascade; 暂时关闭约束,并非删除: Alter Table 表名 Disable CONSTRAINT column Cascade; 打开刚才关闭的约束: Alter Table 表名 Enable CONSTRAINTcolumn; 修改字段: Alter Table 表名 Modify (column dataype [Default expr][Not Null] [,column datatype]…); 修改字段的类型、大小、约束、非空限制、空值转换。 删除表: 会删除表的所有数据,所有索引也会删除,约束条件也删除,不可以roll back恢复。 Drop Table 表名 [Cascade Constraints]; 加 [Cascade Constraints] 把子表的约束条件也删除;但只加 [Cascade]会把子表也删除。 改表名: Rename 原表名 To 新表名; 清空表格: TRUNCATE TABLE 表名; 相比Delete,Truncate Table清空很快,但不可恢复。清空后释放内存。 Delete 删除后可以roll back。清空后不释放内存。
我们今天以企业用户常用的CRM系统,来看一看标准的SaaSCRM应该是一个什么样子。   实际上,很多用户对于CRM并不陌生,早在2000年的时候,有一些企业就已经开始尝试CRM系统。在很多人眼,CRM就是一套C/S或者B/S的应用系统。   而当CRM进入了SaaS,他在架构上会是一个什么样子呢?我们以361CRM为例,来看一下SaaSCRM的架构。   361CRM系统采用分布式架构。采用企业级的多层次、多应用的系统结构的SaaS在线CRM平台平台架构从大的层次上来分主要为四层,根据调用关系依次为应用层、缓冲层、服务层以及存储层,如下图所示:   应用层   从浏览器发送过来的请求,直接由应用层来进行直接响应;   平台是多租赁用户的在线多应用来实现的,由于每个用户的具体业务需求不同,因此每个租赁用户的应用是相互隔离的,但应用层的结构却都是相同,从上到下主要分为业务展现层、业务逻辑层、业务模型层、实体访问层;   业务展现层主要为用户数据的不同视图表现,为用户呈现各种易于浏览、便于理解的各种数据表现方式,如表单、表格、报表、图表等;   业务逻辑层主要是业务逻辑的具体实现层,对于用户动作、触发事件以及工作流程等由业务逻辑层来实现业务的处理以及响应,通过业务逻辑层对下层业务模型的访问来实现具体的逻辑处理;   业务模型层主要是业务对象的具体定义与封装,是对于现实业务在平台的最直接的映射;   实体访问层是对于业务逻辑层对于业务模型操作的封装,业务模型的实体状态的更新、删除、查询等都是通过实体访问层来实现。   缓冲层   缓冲层主要对于静态资源以及动态数据的缓存。静态资源主要是指应用层展现层所要使用到的静态资源文件,以及由用户在业务操作产生的文件等,如图片、上传的文件等;   而动态数据是指用户在使用平台的过程所产生的业务数据,在实现业务,这部分数据大部分都是读操作比较多,而写操作比较少,因此可以针对这部分数据根据特定的缓存失效策略机制来进行相应的缓存;   缓冲层的缓存针对应用层是透明的,而且针对多应用也是透明的,因此缓冲层具有更大的弹性与灵活性。   服务层   服务主要是指平台的核心服务,核心服务分为业务共通服务以及平台共通服务,平台共通服务是指与业务无关且是平台最基础的服务,如任务调度、消息队列、邮件服务、图片处   理、工作流引擎等;而业务共通服务指基于平台共通服务,而对于所有业务具有共通性的服务,如日志审核、操作回滚、数据安全、全文检索、权限角色等;   服务层是对于平台运营、维护最核心的服务实现,是平台正常运行的基础。   存储层   存储主要分为两部分:分布式文件存储以及分布式的数据存储;   由于是多应用的平台,因此随着平台的运营,会产生海量的业务数据以及资源文件,因此伴随着海量的数据而来的问题就是存储、检索、分析以及统计等问题;   针对上述问题,361CRM平台采用了分布式的存储系统,基于Map-Reduce来进行相应的检索、分析以及统计,实现了对于海量数据的统一操作。   这种结构能做到真正的分布式网络计算,有效降低网络流量,减轻客户端负担,还能安全、方便地与互联网接口。另外公司员工或客户分布或行走于全国各地,通常都有移动办公需求。   REST 架构   REST是基于HTTP的,因此天生就有在互联网上穿透防火墙的能力,REST可以简单地认为它是轻量级的WebService,但是它具有自己的一些显著特点:   所有的资源通过统一的接口访问(HTTP/HTTPSGET、POST、PUT、ELETE),而且接口比较统一,便于与第三方的集成;   因为是基于HTTP/HTTPS的,因此可以将资源(响应)分为可缓存的和不可缓存的,以及采用浏览器的标准压缩方式,有效地提升网络效能。也可以在客户和资源之间插入不同的间组件来提升性能和安全等,如,代理服务,缓存服务,网关服务等;   因为是基于HTTP/HTTPS的资源请求,因此本次连接和下一次到服务器的连接之间没有状态。由于361CRM平台采用了REST架构,因此也就决定了361CRM平台天然就具备以下几方面的优势:   由于REST本身无状态的特性,361CRM平台天然就是分布式的,决定了后台通过根据业务量而弹性地增加服务器就可以实现平台计算能力的线性增加;   所有的请求都是统一通过RESTAPI进行相应的资源与服务的请求,这样就能够保证系统提供的服务都是解耦的,极大的简化了系统,从而改善了系统的交互性和可重用性,同时也能够根据业务进行相应统一且透明的内存缓存   客户端浏览器能够轻松通过Ajax实现REST资源的异步调用处理,同时也可以有效地减少应用服务器地压力   通过提供开放的RESTAPI,能够轻松实现与第三方的集成   平台服务   平台服务层的调用是通过RESTAPI进行的,由于REST的特点,通过在URI添加资源路径以及版本信息,很方便地能够实现平台的平滑升级以及数据兼容性问题。   平台服务层实现的都是共通的服务,服务之间是独立的,而且是插件式的方式来实现的,平台选用了面向分布式计算的Erlang语言来实现的,因此保证了这些插件式的服务能够热拔插地部署,实现真正地不宕机地部署与更新。   平台服务层的插件式架构,决定了平台的无限扩展能力,能够根据不断变化地用户需求而进行平台的不断地在线迭代与更新,与用户的需求形成一个良性的循环。配置定制平台通过服务器(Apache)的自定义开发,实现了企业用户应用的透明隔离,因此平台具有面向不同企业用户根据不同需求进行个性化定制的能力。不同的企业用户,一般主要有几方面的自定义需求:业务对象、工作流程、报表、布局等,而361CRM平台的平台框架就决定着能够很好地满足用户的自定义需求,主要分为以下几个方面:   由于用户使用的是文档数据库,有着松散的数据结构,因此用户根据需求,而可以随意自定义自己的业务对象;   361CRM平台后台的平台服务层,有相应的实时的工作流引擎,提供给用户强大的自定义工作流程功能;   361CRM平台有业内是丰富的报表模板,用户只需要根据自己的需要来选择即可,针对一些自定义的动态数据,还提供模板的再定义功能,能够很好地满足用户的报表需求;   由于平台是应用隔离的,因此针对着页面的布局,可以很容易地实现个性化地定制;   361CRM平台的配置功能的强大,并不以损失平台应用的易用性为基础,361CRM平台在操作上采用引导式操作,以及提供方便易用的在线帮助,大大地降低了系统使用的复杂度,使系统更加地人性化、简易化。   实时即时   361CRM平台的平台服务层与通常的应用服务不同,它是实时运行的服务,平台服务层有相应的任务调度机制,邮件服务、消息队列以及实时的工作流引擎等,这些服务都是实时运行的,因此当企业用户的业务对象或者业务流程发生变化时,通过这些平台服务就可以把即时的状态消息(通过邮件、短信或者其它的IM工具)推送给用户,让用户真正了解到业务的即时与实时的状态信息。   而通常的应用服务是静态的,只有当用户登录时,才会进行相应的业务状态的检查,这样就严重影响了业务处理的速度,对于即时性业务,就会带来很大的损失。   多级负载   平台是一个多租赁用户的在线SaaS系统,因此会给平台带来大量的高并发的请求,361CRM平台是一个多层次的结构,而且采用了REST架构,REST天生就是分布式,因此通过物理部署就可以实现高并发带的负载均衡。   四层负载在链路层解决来自互联网的并发请求压力,使用LVS+Heartbeat的主从双备的架构,保证不会出现单点故障;   Web应用的大部分压力都来自于资源的请求,如图片,静态文件,样式表等文件的请求,服务器压力的70%都来自于这些资源的请求,因此对于这些静态资源的请求,通过静态资源缓冲层就能够很好解决这些请求对于后台造成的压力;   经过实测,经过一段时间稳定运行之后,静态资源缓冲层能够命前台请求的80%以上,有效地缓解了应用服务器的压力;   七层负载层主要是做业务、以及资源的请求分流,把负载均衡到多台文件服务器以及应用服务器上;   文件服务器与应用服务器是分布式的,通过Map-Reduce进行任务的拆分与结果的合并,充分利用多台服务器的并行计算能力,提升整体平台的运行性能;   文件缓存采用多级缓存策略,解决命率高的文件的频繁请求。而数据缓存则通过业务标签以及时效性策略进行数据的缓存,并且进行缓存的增量更新,有效地解决了对于后台的   数据读写压力;   分布式的存储系统有效地解决了海量数据的存储、检索、分析以及统计等问题。   可见,当传统的CRM系统转换为SaaS服务后,其架构方面还是发生了不少的变动的,也只有这样的变动,才使得CRM能够在SaaS平台上更好的为客户所服务。   附:什么是REST架构   REST软件架构是当今世界上最成功的互联网的超媒体分布式系统。它让人们真正理解我们的网络协议HTTP本来面貌。它正在成为网络服务的主流技术,同时也正在改变互联网的网络软件开发的全新思维方式。AJAX技术和Rails框架把REST软件架构思想真正地在实际很好表现出来。今天微软也已经应用REST并且提出把我们现有的网络变成为一个语义网,这种网络将会使得搜索更加智能化。   REST与HTTP协议   REST软件架构是由RoyThomasFielding博士在2000年首次提出的。他为我们描绘了开发基于互联网的网络软件的蓝图。REST软件架构是一个抽象的概念,是一种为了实现这一互联网的超媒体分布式系统的行动指南。利用任何的技术都可以实现这种理念。而实现这一软件架构最著名的就是HTTP协议。通常我们把REST也写作为REST/HTTP,在实际往往把REST理解为基于HTTP的REST软件架构,或者更进一步把REST和HTTP看作为等同的概念。   今天,HTTP是互联网上应用最广泛的计算机协议。HTTP不是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件的协议。它不仅仅能够对于互联网资源进行唯一定位,而且还能告诉我们对于该资源进行怎样运作。这也是REST软件架构当最重要的两个理念。而REST软件架构理念是真正理解HTTP协议而形成的。有了REST软件架构理念出现,才使得软件业避免了对HTTP协议的片面理解。只有正确的理论指导,才能避免在软件开发的实际工作过程少走弯路。   REST与URI(资源定位)   REST软件架构之所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不管你的文件是图片、文件Word还是视频文件,也不管你的文件是txt文件格式、xml文件格式还是其它文本文件格式。它利用支持HTTP的TCP/IP协议来确定互联网上的资源。   REST与CRUD原则   REST软件架构遵循了CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建、获取(Read)、更新和销毁就可以完成对其操作和处理了。其实世界万物都是遵循这一规律:生、变、见、灭。所以计算机世界也不例外。这个原则是源自于我们对于数据库表的数据操作:(生)、select(见)、(变)和(灭),所以有时候CRUD也写作为RUDI,其的I就是,这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。   REST与网络服务   尽管在Java语言世界网络服务目前是以SOAP技术为主,但是REST将是是网络服务的另一选择,并且是真正意义上的网络服务。基于REST思想的网络服务不久的将来也会成为是网络服务的主流技术。REST不仅仅把HTTP作为自己的数据运输协议,而且也作为直接进行数据处理的工具。而当前的网络服务技术都需要使用其它手段来完成数据处理工作,它们完全独立于HTTP协议来进行的,这样增加了大量的复杂软件架构设计工作。REST的思想充分利用了现有的HTTP技术的网络能力。在德国电视台上曾经出现过一个这样的五十万欧元智力题:如何实现网络服务才能充分利用现有的HTTP协议?该问题给出了四个答案:去问微软;WSDL2.0/SOAP1.2;WS-Transfer;根本没有。这个问题告诉我们HTTP并不是一个简单的数据传来传去的协议,而是一个聪明的会表现自己的协议,这也许是REST=RepresentationalStateTransfer的真正含义。   实际上目前很多大公司已经采用了REST技术作为网络服务,如Google、Amazon等。在Java语言重要的两个以SOAP技术开始的网络服务框架XFire和Axis也把REST作为自己的另一种选择。它们的新的项目分别是ApacheCXF和Axis2.Java语言也制定关于REST网络服务规范:JAX-RS:JavaAPIforRESTfulWebServices(JSR311)。相信还会出现更多与REST相关的激动人心的信息。   REST与AJAX技术   尽管AJAX技术的出现才不到两年时间,但是AJAX技术遵循了REST的一些重要原则。AJAX技术充分利用了HTTP来获取网络资源并且实现了HTTP没有的对于异步数据进行传输的功能。AJAX技术还使得软件更好地实现分布性功能,在一个企业内只要一个人下载了AJAX引擎,其它企业内部的人员,就可以共享该资源了。AJAX技术遵守REST准则的应用程序简单和可伸缩的架构,凡是采用AJAX技术的页面简洁而又丰富,一个页面表现了丰富多彩的形态。   AJAX技术还使用了一种不同于XML格式的JSON文件格式,这个意义在哪里呢?在REST软件架构下我们不能对于XML文件进行序列化处理,这样程序员必须要使用自己的XML绑定框架。而以序列化的JavaScript对象为基础的JSON已经获得了广泛认可,它被认为能以远比XML更好的方式来序列化和传输简单数据结构,而且它更简洁。这对REST是一个极大贡献和补充。   当前的网络应用软件还违背了REST的“无状态服务器”约束。REST服务器只知道自己的状态。REST不关心客户端的状态,客户端的状态自己来管理,这是AJAX技术的应用之地。通过AJAX技术,可以发挥有状态网络客户机的优势。而REST的服务器关心的是从所有网络客户端发送到服务器操作的顺序。这样使得互联网这样一个巨大的网络得到有序的管理。   REST与Rails框架   RubyonRails框架(简称Rails或者Rails框架)是一个基于Ruby语言的越来越流行的网络应用软件开发框架。它提供了关于REST最好的支持,也是当今应用REST最成功的一个软件开发框架。Rails框架(从版本1.2.x起)成为了第一个引入REST作为核心思想的主流网络软件开发框架。在Rails框架的充分利用了REST软件架构之后,人们更加坚信REST的重要性和必要性。Rails利用REST软件架构思想对网络服务也提供了一流的支持。从最直观的角度看待REST,它是网络服务最理想的手段,但是Rails框架把REST带到了网络应用软件开发框架。这是一次飞跃,让REST的思想从网络服务的应用提升到了网络应用软件开发。利用REST思想的simply_restful插件已经成为了Rails框架的核心内容。   REST安全性   我们把现有基于SOAP的网络服务和基于REST/HTTP网络服务作个比喻,前者是一种传统的寄信方式,而后者是现代网络的电子邮件方式。要是是寄信和电子邮件都有病毒存在的话,传统的寄信被送到对方就很危险,而电子邮件是开发的,电子邮件供应商比如Google为我们检查了电子邮件是否有病毒。这里并不是说明SOAP网络服务消息包含义病毒,而是说明HTTP是无法处理SOAP信息包究竟好不好,需要额外的软件工具解决这一问题,包括防火墙也用不上和管不了。   REST/HTTP网络服务的信息包可以被防火墙理解和控制。你可以按照操作和链接进行过滤信息包,如你可以规定从外部来的只能读取(GET操作)自己服务器的资源。这样对于系统管理员而言使得软件管理更为简单。REST的安全性还可以利用传输安全协议SSL/TLS、基本和摘要式认证(BasicundDigestAuthentication)。除了这些REST自身的安全性功能外,还可以利用像基于信息的WebServicesSecurity(JSR155)作为REST不错的补充。   我曾经遇到一个求职者,他的简历看起来不错,基本上没有大问题,但他就是没有收到任何回复。一天我半开玩笑似的问他是不是电话写错了,我一检查,果不其然。他改正后,立即收到了他所期望去的公司的面试电话。从这个故事我们得到一点教训:哪怕只剩最后一秒钟,也要检查你的联系方式两遍。这是理所当然应该做到的细节,早做比晚做好。
21天学习SQL V1.0.pdf 66 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 2 日期/时间函数......................................................................................................... 66 ADD_MONTHS................................................................................................ 67 LAST_DAY...................................................................................................... 68 MONTHS_BETWEEN....................................................................................... 69 NEW_TIME...................................................................................................... 70 NEXT_DAY...................................................................................................... 71 SYSDATE......................................................................................................... 72 数学函数................................................................................................................. 72 ABS ................................................................................................................. 73 CEIL 和FLOOR ............................................................................................... 73 COS COSH SIN SINH TAN TANH........................................................ 73 EXP................................................................................................................. 75 LN and LOG..................................................................................................... 75 MOD................................................................................................................ 76 POWER............................................................................................................ 77 SIGN ............................................................................................................... 77 SQRT ............................................................................................................... 78 字符函数................................................................................................................. 79 CHR................................................................................................................. 79 CONCAT .......................................................................................................... 79 INITCAP.......................................................................................................... 80 LOWER 和UPPER ........................................................................................... 81 LPAD 与RPAD................................................................................................. 82 LTRIM 与RTRIM............................................................................................. 83 REPLACE ........................................................................................................ 84 SUBSTR........................................................................................................... 85 TRANSLATE.................................................................................................... 88 INSTR ............................................................................................................. 88 LENGTH.......................................................................................................... 89 转换函数................................................................................................................. 89 TO_CHAR........................................................................................................ 90 TO_NUMBER................................................................................................... 91 其它函数................................................................................................................. 91 GREATEST 与LEAST...................................................................................... 91 USER............................................................................................................... 92 总结........................................................................................................................ 92 问与答.................................................................................................................... 93 校练场.................................................................................................................... 93 练习........................................................................................................................ 94 第五天SQL 的子句........................................................................................................... 95 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 3 目标.................................................................................................................... 95 WHERE 子句.......................................................................................................... 96 STARTING WITH子句............................................................................................ 98 ORDER BY 子句..................................................................................................... 99 GROUP BY 子句....................................................................................................104 HAVING 子句.........................................................................................................109 子句的综合应用.....................................................................................................112 总结.......................................................................................................................117 问与答...................................................................................................................117 校练场...................................................................................................................117 练习.......................................................................................................................118 第六天表的联合..................................................................................................................119 介绍.......................................................................................................................119 在一个SELECT 语句使用多个表.........................................................................119 正确地找到列..................................................................................................123 等值联合................................................................................................................124 不等值联合............................................................................................................129 外部联合与内部联合..............................................................................................130 表的自我联合.........................................................................................................132 总结.......................................................................................................................134 问与答...................................................................................................................134 校练场...................................................................................................................134 练习.......................................................................................................................135 第七天子查询内嵌的SQL 子句........................................................................................136 目标...................................................................................................................136 建立一个子查询.....................................................................................................136 在子查询使用汇总函数.......................................................................................140 子查询的嵌套.........................................................................................................141 相关子查询............................................................................................................144 EXISTS ANY ALL 的使用.................................................................................147 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 4 总结.......................................................................................................................151 问与答...................................................................................................................151 校练场...................................................................................................................152 练习...................................................................................................................153 第一周回顾............................................................................................................................154 预览.......................................................................................................................154 第二周概貌............................................................................................................................155 这一周都讲些什么..................................................................................................155 第八天操作数据..................................................................................................................156 目标.......................................................................................................................156 数据操作语句.........................................................................................................156 插入语句................................................................................................................157 INSERT VALUES 语句.....................................................................................157 INSERT SELECT 语句.....................................................................................161 UPDATE语句........................................................................................................163 DELETE 语句.........................................................................................................166 从外部数据源导入和导出数据.............................................................................169 Microsoft Access ..............................................................................................170 Microsoft and Sybase SQL Server ......................................................................171 Personal Oracle7...............................................................................................171 总结.......................................................................................................................172 问与答...................................................................................................................172 校练场...................................................................................................................173 练习.......................................................................................................................173 第九天创建和操作表...........................................................................................................174 目标...................................................................................................................174 CREATE DATABASE 语句......................................................................................174 建立数据库时的选项.......................................................................................175 设计数据库.....................................................................................................176 建立数据字典..................................................................................................176 建立关键字段..................................................................................................177 CREATE TABLE 语句.............................................................................................178 表名................................................................................................................179 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 5 FIRST NAME..................................................................................................179 空值属性.........................................................................................................180 唯一属性.........................................................................................................181 表的存储与尺寸的调整....................................................................................183 用一个已经存在的表来建表.............................................................................184 ALTER TABLE 语句...............................................................................................185 DROP TABLE 语句.................................................................................................186 DROP DATABASE语句..........................................................................................187 总结.......................................................................................................................188 问与答...................................................................................................................188 校练场...................................................................................................................189 练习.......................................................................................................................190 第10 天创建视图和索引.......................................................................................................191 目标.......................................................................................................................191 使用视图................................................................................................................192 列的重命名.....................................................................................................196 SQL 对视图的处理过程...................................................................................197 在SELECT 语句使用约束................................................................................201 在视图修改数据...........................................................................................201 在视图修改数据的几个问题.........................................................................203 通用应用程序的视图.......................................................................................204 删除视图语句..................................................................................................207 使用索引................................................................................................................207 什么是索引..................................................................................................207 使用索引的技巧..............................................................................................212 对更多的字段进行索引....................................................................................212 在创建索引时使用UNIQUE 关键字.................................................................214 索引与归并.....................................................................................................216 群集簇的使用...........................................................................................217 总结.......................................................................................................................218 问与答................................................................................................................219 校练场...................................................................................................................219 练习...................................................................................................................220 第11 天事务处理控制.........................................................................................................221 目标...................................................................................................................221 事务控制................................................................................................................221 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 6 银行应用程序..................................................................................................222 开始事务处理..................................................................................................223 结束事务处理..................................................................................................225 取消事务处理..................................................................................................228 在事务使用保存点.......................................................................................231 总结.......................................................................................................................234 问与答...................................................................................................................234 校练场...................................................................................................................235 练习.......................................................................................................................235 第12 天数据库安全............................................................................................................236 前提数据库管理员..............................................................................................236 流行的数据库产品与安全.......................................................................................237 如何让一个数据库变得安全....................................................................................237 Personal Oracle7 与安全..........................................................................................238 创建用户.........................................................................................................238 创建角色.........................................................................................................240 用户权限.........................................................................................................242 为安全的目的而使用视图................................................................................247 总结.......................................................................................................................251 问与答...................................................................................................................252 校练场...................................................................................................................252 练习.......................................................................................................................253 第13 天高级 SQL.................................................................................................................254 目标...................................................................................................................254 临时表...................................................................................................................254 Title ................................................................................................................257 游标.......................................................................................................................259 创建游标.........................................................................................................260 打开游标.........................................................................................................260 使用游标来进行翻阅.......................................................................................261 测试游标的状态..............................................................................................262 关闭游标.........................................................................................................263 游标的适用范围..............................................................................................264 创建和使用存贮过程..............................................................................................265 在存贮过程使用参数....................................................................................267 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 7 删除一个存贮过程...........................................................................................269 存贮过程的嵌套..............................................................................................270 设计和使用触发机制..............................................................................................272 触发机制与事务处理.......................................................................................273 使用触发机制时的限制....................................................................................275 触发机制的嵌套..............................................................................................275 在选择语句使用更新和删除................................................................................275 在执行前测试选择语句....................................................................................276 嵌入型SQL............................................................................................................277 静态SQL 与动态SQL.....................................................................................277 使用SQL 来编程....................................................................................................279 总结.......................................................................................................................280 问与答...................................................................................................................280 校练场...................................................................................................................280 练习.......................................................................................................................281 第14 天动态使用SQL ........................................................................................................282 目标.......................................................................................................................282 快速入门................................................................................................................282 ODBC .............................................................................................................282 Personal Oracle 7..............................................................................................283 InterBase SQL ISQL ...................................................................................283 Visual C++ ......................................................................................................284 Delphi.............................................................................................................284 设置.......................................................................................................................284 创建数据库............................................................................................................285 使用MS QUERY 来完成链接..................................................................................290 将VISUAL C++与SQL 结合使用...........................................................................292 将DELPHI 与SQL 结合使用..................................................................................296 总结.......................................................................................................................302 问与答...................................................................................................................303 校练场...................................................................................................................303 练习.......................................................................................................................303 第二周回顾............................................................................................................................304 第三周概貌............................................................................................................................305 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 8 应用你对SQL 的知识.............................................................................................305 第15 天对SQL 语句优化以提高其性能...............................................................................306 目标.......................................................................................................................306 让你的SQL 语句更易读.........................................................................................307 全表扫描................................................................................................................308 加入一个新的索引..................................................................................................309 在查询各个元素的布局.......................................................................................309 过程................................................................................................................311 避免使用OR...................................................................................................311 OLAP 与OLTP 的比较...........................................................................................313 OLTP 的调试...................................................................................................313 OLAP 的调试..................................................................................................314 批量载入与事务处理进程.......................................................................................314 删除索引以优化数据的载入....................................................................................316 经常使用COMMIT 来让DBA 走开........................................................................316 在动态环境重新生成表和索引.............................................................................317 数据库的调整.........................................................................................................319 性能的障碍............................................................................................................322 内置的调整工具.....................................................................................................323 总结.......................................................................................................................323 问与答...................................................................................................................324 校练场...................................................................................................................324 练习.......................................................................................................................324 第16 天用视图从数据字典获得信息................................................................................326 目标.......................................................................................................................326 数据字典简介.........................................................................................................326 用户的数据字典.....................................................................................................327 数据字典的内容..................................................................................................327 Oracle 的数据字典...........................................................................................328 Sybase 的数据字典..........................................................................................328 ORACLE 数据字典的内部结构...............................................................................328 用户视图.........................................................................................................328 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 9 系统数据库管理员视图....................................................................................336 数据库对象.....................................................................................................339 数据库的生长..................................................................................................343 动态执行视图..................................................................................................347 总结.......................................................................................................................349 问与答...................................................................................................................349 校练场...................................................................................................................350 练习.......................................................................................................................350 第17 天使用SQL 来生成SQL 语句....................................................................................351 目标.......................................................................................................................351 使用SQL 来生成SQL 语句的目的..........................................................................351 几个SQL*PLUS 命令.............................................................................................352 SET ECHO ON/OFF.........................................................................................353 SET FEEDBACK ON/OFF................................................................................353 SET HEADING ON/OFF ..................................................................................353 SPOOL FILENAME/OFF..................................................................................353 START FILENAME..........................................................................................354 ED FILENAME................................................................................................354 计算所有的表的行数...........................................................................................354 为多个用户赋予系统权限.......................................................................................359 将你的表的权限赋予其它的用户.............................................................................361 在载入数据时解除对数的约束................................................................................363 一次创建多个同义字..............................................................................................364 为你的表创建视图..................................................................................................368 在一个计划清除其所有的表的内容......................................................................369 使用SQL 来生成SHELL 脚本................................................................................371 再建表和索引.........................................................................................................372 总结.......................................................................................................................373 问与答...................................................................................................................373 校练场...................................................................................................................373 练习.......................................................................................................................374 第18 天PL/SQL 简介..........................................................................................................376 目标.......................................................................................................................376 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 10 入门.......................................................................................................................376 在PL/SQL 的数据类型........................................................................................377 字符串类型.....................................................................................................377 数值数据类型..................................................................................................378 二进制数据类型.....................................................................................................378 日期数据类型.........................................................................................................378 逻辑数据类型.........................................................................................................378 ROWID...........................................................................................................379 PL/SQL 块的结构...................................................................................................379 注释.......................................................................................................................380 DECLARE 部分......................................................................................................380 变量声明.........................................................................................................380 常量定义.........................................................................................................381 指针定义.........................................................................................................381 %TYPE 属性...................................................................................................382 %ROWTYPE 属性...........................................................................................382 %ROWCOUNT 属性........................................................................................383 Procdure 部分.........................................................................................................383 BEGIN … … END..............................................................................................383 指针控制命令..................................................................................................384 条件语句.........................................................................................................386 LOOPS 循环....................................................................................................387 EXCEPTION 部分..................................................................................................390 激活EXCEPTION 异常.............................................................................390 异常的处理.....................................................................................................391 将输入返回给用户..................................................................................................392 在PL/SQL 的事务控制........................................................................................393 让所有的事在一起工作....................................................................................394 示例表及数据..................................................................................................394 一个简单的PL/SQL 语句块.............................................................................395 又一个程序.....................................................................................................398 存储过程包和触发机制.......................................................................................403 总结.......................................................................................................................406 问与答...................................................................................................................407 校练场...................................................................................................................407 练习.......................................................................................................................407 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 11 第19 天TRANSACT-SQL 简介............................................................................................408 目标.......................................................................................................................408 TRANSACT-SQL 概貌............................................................................................408 对ANSI SQL 的扩展..............................................................................................408 谁需要使用TRANSACT-SQL..........................................................................409 TRANSACT-SQL 的基本组件..........................................................................409 数据类型................................................................................................................409 使用TRANSACT-SQL访问数据库......................................................................411 BASEBALL 数据库.........................................................................................411 定义局部变量..................................................................................................414 定义全局变量..................................................................................................414 使用变量.........................................................................................................415 PRINT 命令....................................................................................................417 流控制...................................................................................................................417 BEGIN … … END 语句......................................................................................418 IF … … ELSE 语句............................................................................................418 EXIST 条件.....................................................................................................421 WHILE 循环....................................................................................................422 使用WHILE 循环在表翻阅..........................................................................424 TRANSACT-SQL 的通配符.................................................................................426 使用COMPUTE 来生成摘要报告............................................................................426 日期转换................................................................................................................427 SQL SERVER 的诊断工具— — SET 命令..................................................................427 总结.......................................................................................................................428 问与答...................................................................................................................428 校练场...................................................................................................................429 练习.......................................................................................................................429 第20 天SQL*PLUS .............................................................................................................430 目标.......................................................................................................................430 简介.......................................................................................................................430 SQL*PLUS 缓存.....................................................................................................430 DESCRIBE 命令.....................................................................................................435 SHOW 命令............................................................................................................436 文件命令................................................................................................................438 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 12 SAVE GET EDIT 命令................................................................................438 运行一个文件..................................................................................................439 查询的假脱机输出...........................................................................................440 SET 命令...............................................................................................................442 LOGIN.SQL 文件...................................................................................................445 CLEAR 命令..........................................................................................................446 将你的输出格式化..................................................................................................446 TTITLE 与BTITLE..........................................................................................446 格式化列COLUMN HEADING FORMAT ..............................................447 报表与分类汇总.....................................................................................................449 BREAK ON.....................................................................................................449 COMPUTE......................................................................................................450 在SQL*PLUS 使用变量......................................................................................453 DEFINE ..........................................................................................................454 ACCEPT .........................................................................................................455 NEW_VALUE..................................................................................................457 DUAL 表........................................................................................................458 DECODE 函数.................................................................................................459 日期转换................................................................................................................462 运行一系列的SQL 文件.........................................................................................465 在你的SQL 脚本加入注释..................................................................................466 高级报表................................................................................................................467 总结.......................................................................................................................469 问与答...................................................................................................................469 校练场...................................................................................................................469 练习.......................................................................................................................470 第21 天常见的SQL 错误及解决方法..................................................................................471 目标...................................................................................................................471 介绍.......................................................................................................................471 常见的错误............................................................................................................471 Table or View Does Not Exist.............................................................................471 Invalid Username or Password ...........................................................................472 FROM Keyword Not Specified...........................................................................473 Group Function Is Not Allowed Here ..................................................................474 Invalid Column Name........................................................................................475 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 13 Missing Keyword .............................................................................................475 Missing Left Parenthesis ....................................................................................476 Missing Right Parenthesis ..................................................................................477 Missing Comma................................................................................................478 Column Ambiguously Defined ...........................................................................478 Not Enough Arguments for Function...................................................................480 Not Enough Values............................................................................................481 Integrity Constraint Violated--Parent Key Not Found ............................................482 Oracle Not Available .........................................................................................483 Inserted Value Too Large for Column ..................................................................483 TNS:listener Could Not Resolve SID Given in Connect Descriptor .........................484 Insufficient Privileges During Grants...................................................................484 Escape Character in Your Statement--Invalid Character .........................................485 Cannot Create Operating System File ..................................................................485 Common Logical Mistakes.................................................................................485 Using Reserved Words in Your SQL statement .....................................................486 The Use of DISTINCT When Selecting Multiple Columns.....................................487 Dropping an Unqualified Table ...........................................................................487 The Use of Public Synonyms in a Multischema Database.......................................488 The Dreaded Cartesian Product ..........................................................................488 Failure to Enforce File System Structure Conventions ...........................................489 Allowing Large Tables to Take Default Storage Parameters....................................489 Placing Objects in the System Tablespace............................................................490 Failure to Compress Large Backup Files ..............................................................491 Failure to Budget System Resources ...................................................................491 Preventing Problems with Your Data...................................................................491 Searching for Duplicate Records in Your Database................................................491 总结...................................................................................................................491 校练场...................................................................................................................492 练习.......................................................................................................................492 第三周回顾............................................................................................................................494 附件A 在SQL 的常见术语...............................................................................................495 ALTER DATABASE.........................................................................................495 ALTER USER..................................................................................................495 BEGIN TRANSACTION ..................................................................................495 CLOSE CURSOR.............................................................................................495 COMMIT TRANSACTION...............................................................................496 CREATE DATABASE.......................................................................................496 CREATE INDEX..............................................................................................496 CREATE PROCEDURE....................................................................................496 CREATE TABLE..............................................................................................497 CREATE TRIGGER..........................................................................................497 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 14 CREATE USER................................................................................................497 CREATE VIEW................................................................................................497 DEALLOCATE CURSOR.................................................................................498 DROP DATABASE...........................................................................................498 DROP INDEX..................................................................................................498 DROP PROCEDURE........................................................................................498 DROP TABLE..................................................................................................498 DROP TRIGGER .............................................................................................499 DROP VIEW....................................................................................................499 EXECUTE.......................................................................................................499 FETCH............................................................................................................499 FROM.............................................................................................................499 GRANT...........................................................................................................500 GROUP BY.....................................................................................................500 HAVING..........................................................................................................500 INTERSECT....................................................................................................500 ORDER BY.....................................................................................................500 ROLLBACK TRANSACTION ..........................................................................500 REVOKE.........................................................................................................500 SELECT..........................................................................................................501 SET TRANSACTION.......................................................................................501 UNION............................................................................................................501 WHERE..........................................................................................................501 *.....................................................................................................................501 附件B 在第14 天的C++源代码清单................................................................................502 附件 C 第14 天的Delphi 源代码清单...............................................................................521 附件D 参考内容..................................................................................................................524 书..........................................................................................................................524 Developing Sybase Applications ..................................................................524 Sybase Developer's Guide ...........................................................................524 Microsoft SQL Server 6.5 Unleashed, 2E ......................................................524 Teach Yourself Delphi in 21 Days ................................................................524 Delphi Developer's Guide ...........................................................................524 Delphi Programming Unleashed ..................................................................525 Essential Oracle 7.2 ...................................................................................525 Developing Personal Oracle7 for Windows 95 Applications ............................525 Teach Yourself C++ Programming in 21 Days ...............................................525 Teach Yourself Tansact-SQL in 21 Days .......................................................525 Teach Yourself PL/SQL in 21 Days ............................................................525 杂志...................................................................................................................526 DBMS.............................................................................................................526 Oracle Magazine...............................................................................................526 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 15 SQL 的互联网资源.................................................................................................526 附件E ACSLL 码表.............................................................................................................527 附件F 问题与练习答案........................................................................................................533 第一天SQL 简介.................................................................................................533 问题答案.........................................................................................................533 练习答案.........................................................................................................533 第二天查询— — SELECT 语句的使用..................................................................533 问题答案.........................................................................................................533 练习答案.........................................................................................................534 第三天表达式条件语句与运算.........................................................................535 问题答案.........................................................................................................535 练习答案.........................................................................................................535 第四天函数对获得数据的进一步处理...............................................................536 问题答案.........................................................................................................536 练习答案.........................................................................................................537 第五天SQL 的子句..........................................................................................538 问题答案.........................................................................................................538 练习答案.........................................................................................................538 第六天表的联接..................................................................................................540 问题答案.........................................................................................................540 练习答案.........................................................................................................541 第7 天子查询内嵌的SELECT 语句............................................................542 问题答案.........................................................................................................542 练习答案.........................................................................................................544 第八天操作数据..................................................................................................544 问题答案.........................................................................................................544 练习答案.........................................................................................................546 第九天创建和操作表...........................................................................................546 问题答案.........................................................................................................546 练习答案.........................................................................................................548 第10 天创建视图和索引.......................................................................................549 问题答案.........................................................................................................549 练习答案.....................................................................................................550 第11 天事务处理控制.........................................................................................550 问题答案.........................................................................................................550 练习答案.........................................................................................................551 第12 天数据库安全............................................................................................552 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL [email protected] 16 问题答案.........................................................................................................552 练习答案.........................................................................................................552 第13 天高级 SQL.................................................................................................553 问题答案.........................................................................................................553 练习答案.........................................................................................................553 第14 天动态使用SQL ........................................................................................554 问题答案.........................................................................................................554 练习答案.........................................................................................................554 第15 天对SQL 语句优化以提高其性能...............................................................555 问题答案.........................................................................................................555 练习答案.........................................................................................................555 第16 天用视图从数据字典获得信息................................................................557 问题答案.........................................................................................................557 练习答案.........................................................................................................557 第17 天使用SQL 来生成SQL 语句....................................................................558 问题答案.........................................................................................................558 练习答案.........................................................................................................560 第18 天PL/SQL 简介..........................................................................................561 问题答案.........................................................................................................561 练习答案.........................................................................................................561 第19 天TRANSACT-SQL 简介............................................................................562 问题答案.........................................................................................................562 练习答案.........................................................................................................562 第20 天SQL*PLUS .............................................................................................563 问题答案.........................................................................................................563 练习答案.........................................................................................................563 第21 天常见的SQL 错误及解决方法..................................................................564 问题答案.........................................................................................................564 练习答案.........................................................................................................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值