您的位置:首页 > 数据库 > Oracle

oracle学习(word文档备注不能正常显示,如有错误,忘不吝指正)

2014-04-30 08:41 253 查看
1. 客户端:Toad Plsql develop

2. 解锁scott账户:C:\Documents and Settings\administrator>sqlplus sys/flf1989317 assysdba

Alter user scott account unlock; 其中的sys以及斜杠后面的密码可以不输入。

3. Sql语言:select insertdelete update

查询语句:select语句

dml语句:数据操作语言insert update delete

ddl语句:数据定义语句建表,建视图等

事务控制语句:Transaction一系列的操作要么同时完成要么不完成;类似synchronization

4. Insert into values creat table update set

5. desc emp;描述雇员表 desc dept;部门表 desc salgrade;薪水等级

6. 命令行中ed + /

7. select * from salgrade;展示表中的数据

8. desc dual;空表;

9. 执行顺序:select from join where group by having order by

Select avg(sal) from emp where sal >1200 group by deptno having avg(sal) >1500 order byavg(sal) desc; rownum
执行顺序也在order by之前。

10. select 2*3 from dual;

11. select ename,sal*12 from emp;

12. select ename,sal*12 anuuak_sal from emp;给临时变量重命名,别名中有特殊字符要加双引号,不加双引号小写自动显示为大写,加了双引号是怎么样就是怎么样。

13. select sysdate from
dual;取系统时间

14. 空值不等于0;任何含有空值的数学表达式最后结果都是空值。

15. ||可以将字符串连接。selectename||sal fromemp; 字符串的表示,两个单引号引起来的字符串。字符串中有单引号时,用双单引号代替。

16. Select distinct deptno,job from emp;去除重复的;两个元素组合相同的才去除。

17. Select * from emp
where deptno = 10;where过滤条件

18. Select * from emp where ename =‘CLARK’;字符串比较用单引号;

19. 不等号 <> ; 字符串比较比较的是每个字母的ask2码,从第一个字符开始,接着下一个。

20. between A
and B 即 where sal >=A and sal<=B;

21. select ename,sal,comm from empwhere comm
is null或者is notnull;

22. select ename,sal,comm from empwhere sal in(800,1500,2000);谁的值等于800或者1500或者2000;

23. select ename,sal,comm from empwhere sal in(‘SMITH’,’KING’,’ABC’);

24. select ename,sal,hiredate fromemp where hiredate>’20-2月-81’;

25. and or not where sal
not in(800,1500);

26. 模糊查询:select ename fromemp where enamelike’%ALL%[f1] ’;

查询其中带有%的字符串,可以用默认转义字符\;

Select ename from emp where ename like
‘%$%%’[f2] escape‘$[f3] ’;

27. Select * from dept
order by deptnodesc;默认为升序asc(ascend)可以不写,加descend的前缀则为降序。

28. Where后面加order by

29. 也可以通过两个字段来排序select ename,sal,deptno from emp order by deptno asc,ename desc;先按照deptno升序排序,如果deptno相同,再按照enamel降序排列;

30. Select ename,sal*12 annual_salfrom emp where ename not like ’_A%’ and sal>800 order by sal desc;取出enamel,sal*12别名称为annual_sal项,其中ename中第二个字母中不含A,另外sal大于800,最后按降序排列;

31. Sql function:单行函数:一行输入一行输出;多行函数:多行输入,一行输出。

32. Select lower(ename) from emp; lower()是函数,将enamel列全部变为小写;

Select enamefrom emp where lower(ename) like ‘_a%’;选出 ename中第二个字母是A|a的

也可以写成:……where enamelike ‘_a%’ or ename like ‘_A%’;

upper

33. substr函数:selectsubstr(ename,1,3) from emp; 取enamel的第一个开始的连续3个字符;

34. chr()函数:selectchr(65) from dual;

35. ascii()函数:selectascii(‘A’) from dual;

36. round()函数: selectround(23.652)from dual;四舍五入

select found(23.652, 2) from dual; 第二个参数代表小数点后位数,可以为负数;

37. to_chr()函数: 把数字或者日期转换成某种特定格式;

select to_char(sal, ‘$99,999.9999’) from emp; 9代表一位数字,没有就不显示。小数点后面的全有。L代表本地货币,可以替换$; 0也可以代替一位数字,没有也要显示。s

selectto_char(hiredate, ‘YYYY-MM-DD HH:MI:SS’) from emp;

格式控制符:HH HH24 前面12进制后面24进制;

38. to_date()函数:selectename,hiredate from emp where hiredate > to_date(‘1981-2-20 12:34:56’, ‘YYYY-MM-DDHH24:MI:SS’); 将字符串转换成日期;

39. conn scott/flf1989317 转换用户

40. to_number()函数:将字符串转换成数字 select sal from emp where sal > to_number(‘$1,250.00’,‘$9,999.99’);

41. nvl()函数:处理空值 select ename,sal*12+nvl(comm,0) from emp;如果为空,则用0代替,否则用实际值。

42. select max(sal) from emp;取最高薪水值;

43. select min(sal) from emp;

44. select avg(sal) from emp;

45. select to_char(avg(sal), ‘9999999.99’) from emp;

46. select round(avg(sag), 2) fromemp;

47. select sum(sal) from emp;

48. select count(*) from emp;求这个表中有多少个记录;

49. select count(*) from emp wheredeptno = 10;

50. select count(comm) from emp; 计算不是null的字段的个数;

51. select count (distinct deptno)from emp;计算有多少部门;

52. select avg(sal) from emp groupby deptno;求各部门平均薪水;

53. group by 后面可以跟多个字段;

54. select ename from emp where sal = (select max(sal) fromemp);包含子查询;子查询可以在任何合适的地方。

55. select deptno, max(sal) fromemp group by deptno;正确

56. select ename, max (sal) fromemp group by deptno;不正确,因为薪水最大的可能有好几个人,max()函数只有一行输出;

group by规则:出现在select列表中的字段,如果没有出现在组函数(avg等)里面,必须出现在group
by 函数里面;eg:ename ;max()函数中只能有一个参数;

57. where语句对单条记录进行过滤,实际中,有where的情况下先执行where语句,再执行分组。对于分组之后还要处理的可以用having。having对分组进行限制。

58. select avg(sal) ,deptno fromemp group by deptno having avg(sal) >2000;nm

59. select ename ,sal from empwhere sal >(select avg(sal) from emp);

60. select ename, sal from emp join(select max(sal)max_sal,deptno from emp group by deptno ) t on (emp.sal = t.max_sal andemp.deptno = t.deptno);

61. 子查询的关键就是把他当做一张表。

62. 表连接。

63. Select e1.ename, e2.ename fromemp e1, emp e2 where e1.mgr = e2.empno;自连接,给同一个表2个不同的别名,当做2个表来使用。(Sql1992语法标准,在where语句中写连接的条件)。过滤条件,连接条件。

Select e1.ename, e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno);

64. Cross join 交叉连接(笛卡尔乘积);

65. Sql1999:where中只写数据过滤条件,不写连接条件(貌似带有前缀.)。

66. Select ename, dname from emp
cross join dept; ==select ename, dname from emp, dept;

67. 等值连接:

Select ename, dname from emp, dept where emp.deptno =dept.deptno; 等于

Select ename, dname from emp
join dept on(emp.deptno = dept. deptno);

Select ename, dname from emp join dept
using (deptno); 两张表都必须有这个字段,且类型相同;

68. 非等值连接:

Select ename , grade from emp e join salgrade s on(e.salbetween s.losal and s.hisal);

69. 三张表连接在一起:

Select ename, dname, grade from emp e
join dept d on(e.deptno =d.deptno)joinsalgrade s on(e.sal between s.losal and s.hisal)where ename not like ‘_A%’;

70. 外连接:左外连接left outer join 其中outer可以省略不写; rightouter join 右外连接; 全外连接 fullouter join 两边多余的都拿出来;

Select e1.ename, e2.ename from emp e1 left join emp e2on(e1.mgr = e2.empno);

71. 求部门中哪些人的薪水最高:emp表和部门薪水最高表连接

Select ename, sal from emp join(select max(sal) max_sal,deptno from emp group by deptno) t on(emp.sal = t.max_sal and emp.deptno =t.deptno);

求部门平均薪水的等级:部门平均薪水表和salgrade表连接

Select deptno, avg_sal, grade from(select deptno ,avg(sal)avg_sal from emp group by deptno) t join salgrade s on(t.avg_sal betweens.losal and s.hisal)

求部门平均的薪水等级:emp和薪水等级表连接

Select deptno,avg(grade) from (select deptno,ename,gradefrom emp join salgrade s on(emp.sal between s.losal and s.hisal)) t group bydeptno;

雇员中有哪些人是经理人:

Selectename from emp where empno in (select distinct mgr from emp);

不准用组函数,求薪水的最高值:

Select distinct sal from emp where sal not in(selectdistinct e1.sal from emp e1 join emp e2 on (e1.sal<e2.sal));

求平均薪水最高的部门的部门编号:

Select deptno,avg_sal from (select avg(sal) avg_sal, deptno from emp group by deptno) whereavg_sal =(selectmax(avg_sal) from (select avg(sal) avg_sal, deptno from emp group by deptno))[f4] ;

求平均薪水最高的部门的部门名称:

Select dname from dept where deptno = (select deptno from (selectavg(sal) avg_sal, deptno from emp group by deptno) where avg_sal =(selectmax(avg_sal) from (select avg(sal) avg_sal, deptno from emp group by
deptno)));

求平均薪水的等级最低的部门的部门名称:

Select dname, t1.deptno, grade,avg_sal from (select deptno,grade, avg_sal from(select deptno, avg(sal) avg_sal from emp group by deptno) tjoin salgrade s on (t.avg_sal between s.losal and s.hisal) )t1 join
depton(t1.deptno = dept.deptno) where t1.grade =( select min(grade) from (selectdeptno, grade, avg_sal from(select deptno, avg(sal) avg_sal from emp group bydeptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal)));

求部门经理人中平均薪水最低的部门名称:

Select dname from (select deptno, avg(sal) avg_sal from empwhere empno in(select mgr from emp) group by deptno ) t join dept on t.deptno =dept.deptno where avg_sal = (select min(avg_sal) from (select avg(sal)
avg_salfrom emp where empno in(select mgr from emp) group by deptno) t );

求逼普通员工的最高薪水还要高的经理人名称:注意空值处理

Select ename from emp where empno is(select distinct mgrfrom emp where mgr is not null) and sal>(select max(sal) from emp whereempno not in(select distnict mgr from emp where mgris not null));

求薪水最高的前5名雇员:rownum的执行顺序在order by之前伪字段rownum(oracle特有从1开始,注意小于大于的时候出错,那是因为第一行不满足要求,第二行的rownum就还是1,不过可以参考下面的显式增加rownum列来处理。)

select ename,sal from (selectename,sal from emp order by sal desc) whererownum<=5;

求薪水最高的第6到第10名雇员:

select ename,sal from (selectename,sal,rownum rfrom(select ename,sal from emp order

by sal desc))where r >=6 andr<=10;

72. 视图就是一张虚表,一个子查询(通常视图名字以v$字符开始):
create view v$_dept_avg_sal_infoas select deptno, grade, avg_sal from(select deptno, avg(sal) avg_salfrom emp group by deptno) t join salgrade s on (t.avg_sal between s.losal ands.hisal);

73. 以超级管理员身份登录数据库:conn sys/flf1989317 as sysdba;

授权给scott用户:grant create table, create view to scott;

74. Select * from emp where deptno= 10 and ename like ‘%A%’;第一个效率理论上高,deptno好查询,不对直接不用看后面的and了。

Select * from emp where ename like ‘%A%’ and deptno = 10;

实际数据库可能会优化。

75. drop user
用户名 cascade; 删除用户

76. show user;显示当前用户

77. 导出用户文件:exp = export

先进入一个单独的目录,然后exp,回车,登录scott账户;缓冲大小回车,导出文件回车,u yes yes yes;

78. 创建新用户: create user用户名 identified by密码 default tablespace
usersquota[f5]
10M on users;创建10兆空间

79. 分配权限: grant createsession[f6] ,create
table, create viewto 用户名;

80. 导入数据:imp = import登录新用户
后面的用户名写:导出时候的用户名

81. conn sys/flf1989317 as sysdba;conn scott/flf1989317;

82. rollback;回滚,撤销上一次操作;

83. create table emp2 as select *from emp; 复制emp并命名为emp2;

84. insert into dept2 values(50, ‘game’, ‘bj’);

insertinto dept2(deptno, dname) values(60, ‘game2’);

insertinto dept2 select * from dept; 子查询的结果和要插入的表的结构一样

85. 找出没选过“黎明”老师的所有学生姓名;

Select sname from s join sc on(s.sno = sc.sno) join c(c.cno= sc.cno) where c.teacher<>’黎明’;

列出2门以上(含2门)不及格学生姓名及平均成绩;

Select sname from where sno in(select sno from sc wherescgrade<60 group by sno having count(*) >=2);

既学过1号课程又学过2号课程所有学生的姓名;

Select sname from s where sno in(select sno from sc wherecno =1 and sno in(select sno from sc where cno =2));

86. update emp2
set sal = sal*2, ename= ename||[f7] ’-’
where deptno 10;

deletefrom emp2;

deletefrom dept2 where deptno =10;

87. create table t(a varchar2(10)constraint t_nn[f8] not
null, b varchar2(10) default ‘aaa’); drop table t;

88. commit rollback;执行dml语句之后调用

89. 事务起始于第一条dml语句;结束于rollback或者commit; rollback回退的是事务;

Commit 之后不能rollback;

90. 执行ddl语句或者dcl(授权control)语句时隐式commit;正常断开连接(exit),事务提交;非正常断开连接(断电等)事务回滚;

91. Varchar定长字符串,查找容易,效率高,浪费高; varchar2 变长字符串(4k)

Num; date; long(2G的变长字符串);

92. 5个约束(constraint)条件:非空not null,唯一unique(该字段的每个值都是唯一的不能重复,可以插null值,两个null值不认为是重复的),主键,外键,check;约束条件是一个对象,可以起一个名字。

93. 字段级限制,每个字段后面;表级约束(字段后面+, constraint别名 unique(字段1,字段2));

94. 主键:可以唯一标识整条记录的字段。Primary key;这个字段不能为空,必须是唯一的;

Constraintstu_id pk primary key(另外一个表主键字段);

95. 多对多关系一半设计成3张表,两边各自一张,关系一张;

96. 外键:涉及到2张表,加在一张表的2个字段上,或者两张表的2个字段上;涉及2个字段。References 另外一个表(另一个表的主键);
constraintstu_class_id foreign key(本表中的外键字段) references另外一个表名(主键字段);

另一个表中的为被参考字段,必须为主键;

97. In
, not in;

98. Check约束:数据检查;check();

99. 修改现有表的结构:alter table表名 add(字段名 varchar2(100));

alter table
表名 drop(字段名); alter table表名 modify(字段名 varchar2(50));

100. 删除或者增加约束条件:
alter table 表名 drop constraint约束别名;

Alter table 表名 addconstraint
别名 foreignkey(class) references class(id);[f9]

101. 数据字典表:user_tables; desc user_tables; selecttable_name from
user_tables;

Select view_namefrom
user_views;select constraint_namefromuser_constraints;

102. 数据字典表的表,一个有多少个数据字典表;
dictionary 一共600多个数据字典表;

103. 索引,新的数据库对象;

104. 创建索引: create index名字 on表名(字段名1,字段名2);

105. 删除表 删除视图 drop; 删除数据 delete

106. 删除索引:drop index索引名字; select index_namefrom user_indexes;

107. 加主键或者唯一约束的时候oracle自动建立该字段的索引;

108. 索引的作用是访问的时候效率更高; 修改数据的时候效率降低;访问量大,效率低的时候可以考虑建立索引;一般不要建立索引;索引也会占用空间;

109. 视图:表结构改的时候可能也要更改视图,维护的时候更难;视图可以用来更新数据,但是很少这么去用;视图就是一个虚表,一个子查询,帮助我们简化查询,帮助我们保护私有数据;

110. Oracle特有:序列sequence( 其他数据库也有类似作用的机制):产生一个为一的不间断的数字序列,一般用作主键;

111. Create sequence seq;对象 select seq.nextval from dual; sequence对象内部已经做了同步机制

Insert into 表名 values (seq.nextval,字段2,字段3); seq对象自创建出来就逐次增加,自己可以指定从几开始,每次增加多少;Create sequence seq startwith 1 increment by 1;

112. 删除序列:dropsequence 序列名;

113. create sequence NCME_QUESTION_SEQ minvalue 1 maxvalue 999999999999 start with 1 increment by 1 nocache;

114. 优化表,让效率高点,首先考虑建索引,最后再考虑改变结构等;

115. 数据库设计3范式:主要目的:不存在冗余数据,

第一范式:要求一,要有主键;要求二,列不可分(字段不可分,注意字符串拼接,有多个信息)(列信息不能重复,冗余);实际问题实际对待。

第二范式(学生、教师多对多关系这种表设计的时候应该遵循的规则):当一张表中有多个字段作为主键的时候,非主键字段不能够依赖于部分主键,即不能存在部分依赖;多对多关系表设计解决方法:分为3张表:学号,姓名;教工号,姓名;学号,教工号。

第三范式:不能存在传递依赖,不是主键的任何其他字段必须直接依赖于主键,属性不能依赖于其他非主键属性。例如:员工表:id 姓名 所属部门id ,主键为id后面不能再跟部门名字,部门简介等,这样的话部门名字和部门简介就依赖于员工表的非主键了。解决方法:再建立一个部门表:部门id
部门名字 部门简介。

116. 只有一个字段做主键的时候谈不上部分依赖。每个范式都是在前一范式的基础上增加新条件而形成的。

117. Pl-sql 在oracle里面的编程语言,写存储过程,oracle内部存储程序,写触发器,写函数等,基本上每一种数据库都有这么一种语言。Sql server 有 T sql;

118. pl-sql 面向过程的语言(Procedure language,带有分支和循环)和sql结合起来的一种语言。

119. declare(可选)声明变量,游标 begin(必要),exception相当于catch到任何异常的时候执行的东西,end(必要)后面必须跟个分号;

120. begindbms_output[f10] .put_line[f11] (‘helloWorld!’);
end; /

set serveroutput on;[f12]

121. pl-sql :中变量声明是以推荐以“v_”开头;

declare v_name[f13] varchar2(20[f14] );begin
v_name :=[f15] ‘myname’;dams_output.put_line(v_name);end;

122. declare v_num number[f16] :=0[f17] ;
begin v_num :=2/v_num;dbms_output.put_line(v-num);exceptionwhen others then[f18]
dbms_output.put_line(‘error’);end;

123. 变量声明的规则:

变量名不能够实用保留字,如from、select等

第一个字符必须是字母

变量名最多包含30个字符

不要与数据库的表或者列同名

每一行只能声明一个变量

124. 常用变量类型:

binary_integer:整数,主要用来计数而不是用来表示字段类型

number:数字类型

char:定长字符串

varchar2:变长字符串

date:日期

long:长字符串,最长2GB

Boolean:布尔类型,可以取值为true、false和null值。不赋初值就是null值。

125. 字符串连接符“||”;constant 常量; not in约束;布尔类型的值不能用dbms_output.put_line打印,可以用if判段;

126. 变量存储表中字段的值;

127. Pl-sql: ——可以注释掉一行,/* */可以注释多行,%type属性(emp.empno%type)意思是emp表中empno的类型,%type也可以加在变量之后表示和前面变量类型相同。

128. 复合变量:

第一种 table(相当于java中的数组):

Declare type[f19] type_table_emp_empno[f20] is
table of emp.empno%type index by binary_integer[f21] ;
v_empnostype_table_emp_empno; begin v_empno(0) :=7369; v_empnos(2) := 7839;
v_empnos(-1) := 9999;dbms_output.put_line(v_empnos(-1)); end;

第二种record(相当于java中的类):

Declare type type_record_dept
is record (deptno dept.deptno%type, dnamedept.dname%type, loc dept.loc%type); v_temp type_record_dept; beginv_temp.deptno := 50;v_temp.danme := ‘aaaa’; v_temp.loc := ‘bj’;dbms_output.put_line(v_temp.deptno || ‘ ‘||v_temp.dname); end;

使用%rowtype 声明record变量

Declare v_temp dept%rowtype; begin v_temp.deptno := 50;v_temp.dname := ‘aaaa’; v_temp.loc := ‘bj’ ; dbms_output.put_line(v_temp.deptno|| ‘ ‘|| v_temp.dname); end;

129. Pl-sql中的select语句:必须并且只能返回一条记录;必须有一个into语句;

Declare v-ename emp.ename%type; v_sal emp.sal%type; beginselect ename,sal
intov_ename,v_sal from emp where empno = 7369; dbms_output.put_;ine(v_ename || ’ ’||v_sal); end;

130. Pl-sql中的insert delete undate直接拿来用,有可能使用变量,begin 中最后记得commit;

131. sql[f22] %rowcount[f23]

132. pl-sql中的ddl

begin executeimmediate[f24]
‘ create table T (nnnvarchar2(20) default ‘ ‘[f25] aaa’
’)’;

133. pl-sql分支和循环:

declare v_sal emp.sal%type; begin select sal into v_salfrom emp where empno = 7369;if(v_sal<1200)thendbms_output.put_line(‘low’);elsif(v_sal<2000)thendbms_output.put_line(‘middle’);else
dbms_output.put_line(‘high’); end if; end;

134. pl-sql 循环:

declare I binary_integer := 1; begin
loop dbms_output.put_line(i);i:= i+1;exit when(i>=11);end loop; end; 相当于java中的do while循环

declare j binary_integer := 1; begin
while j<11loop dbms_output.put_line(j);j := j+1;
end loop;end; 相当于java中的while循环

begin fork in
1..10[f26] loop dbms_output.put_line(k);
end loop; for k in reverse[f27]
1..10 loopdbms_output.put_line(k); end loop; end;相当于java中的for循环 其中的变量不需要声明

135. pl-sql中的exception :也有类型区别

too_many_rows异常种类 no_data_found 异常种类
others

136. 记录错误:首先创建一个表,以后产生的异常都记录在里面。

利用pl-sql编写操作语句,出错的时候记录下上面的表中,操作语句举例如下

SQLCODE出错代码(均为负值)
SQLERRM出错信息均为pl-sql中的关键字

137. 游标cursor:指在结果集上的一个指针。类似java迭代器。

is声明的时候不会去数据库取数据,
open的时候才会去执行select语句并拿取数据, fetch(拿出来) into(放进去),close,fetch之后游标字段往下移一格 最后一直指在最后一格记录上。

138. 游标4个属性:notfound(最近的一次fetch语句没有返回一条记录,返回true); rowcount 总数;found ;isopen。

do while

while

for

for中变量不用声明,不用open、close游标,不用fetch,自动fetch。

139. 带参数的游标:

140. 可更新(数据)的游标:forupdate ;current of c 当前游标指到的记录;注意等号。

141. 存储过程 stored procedure:带有名字的一个pl-sql程序块。

create orreplace procedure p is替换上面的declear即可

142. 存储过程的创建成功不是执行了已经。

143. 存储过程的两种执行方法:

exec p;

begin p;end;

144. 带参数的存储过程:存储过程没返回值,解决方法传出参数

in 传入参数;out传出参数;如果什么都没写默认为in;in out 既是传入也是传出;

调用

145. 创建存储过程的时候出错,不会提醒错误出在哪里,可以用show error

146. 删除存储过程:dropprocedure p;

147. 函数:function 可用在跟原来函数一样的地方(如max()函数)

148. 触发器 trigger:

谁在什么时间做了什么的表

触发器不能直接执行,必须依附在某张表上。下图的after(插入完成之后触发触发器)可以换成before(插入之前)。

For each row 触发器记录表中每有一个变更就产生一个记录,可以去除。

149. 触发器副作用:

:NEW :OLD

为什么现在可以,因为上面的触发器中dept表中的deptno改变之后,也相应的更改了参考它的表emp中的deptno。一般很少这么用。

150. Update的时候会先触发触发器,再检查约束条件。

151. 树状结构的存储和展示:

152. 使用存储过程展现树状结构,调用Recursion递归方法

153.

[f1]正则表达式

[f2]字符串中含有%正则表达式

[f3]自定义的转义字符

[f4]Selectmax(avg(sal))from
emp group by deptno 组函数嵌套

最多只能嵌套2层,多行输入产生一行输出。

[f5]配额

[f6]登录权限

[f7]连接符

[f8]给约束条件not null的别名

如果不加,系统自动加默认的

[f9]全局约束

[f10]相当于System.out

[f11]相当于println

[f12]要先执行该语句,就可以看见输出,因为serveroutput默认是off

[f13]变量名

[f14]变量类型

[f15]变量赋值

[f16]V_num的类型

[f17]v_num的初始赋值

[f18]当其他的情况出现的时候

[f19]定义一种新的类型

[f20]类型名,自己定义

[f21]相当于数组下标

[f22]刚才执行的sql语句

[f23]影响的行数,注意count(*)也是一条记录被影响,因为只产生一条记录

[f24]Ddl语句中必须加这2个词

[f25]单引号中需要引号用2个单引号,不是一个双引号

[f26]1到10相当于java中增强的for循环 foreach in

[f27]倒叙,即10到1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐