c语言sscanf函数的用法是什么
231
2022-10-01
数据库Oracle基础
一、Oracle安装 Oracle是数据库管理系统,全球应用最广的,Top100有80家使用此数据库。 目前数据库技术: SQLServer,MySQL,DB2,Oracle 1.口令要求 长度:8位+ 规则:必须包含大写、小写英文字母、数字,如Disen666 2.安装路径 必须英文路径,且不带空格 3.安装要求 4g,20g硬盘 二、用户管理 1.链接Oracle 1)管理员sysdba a)sqlplus / as sysdba; b)conn /as sysdba; c)conn sys/ Disen666; d)sqlplus sys/Disen666; 2)sqlplus hr/hr; 3)conn hr/hr 2.创建用户 创建用户名:create user用户名 identified by 口令; CMD> sqlplus/as user SQL>show user SQL>create user disen identified by disen; 授权的语法: grant 权限 to 用户名; grant create table to disen; grant create session to disen; disen用户链接Oracle数据库: SQL>conn Disen666 /Disen666; 3.修改用户口令 SQL> alter user disen identified by d666; 4.锁定用户 SQL>alter user disen account lock; 5.用户解锁 SQL>alter user disen account unlock; 练习 1.给hr用户进行解锁 SQL>alter user hr account unlock; 2.修改hr的口令为hr SQL>alter user hr identified by hr; 3.查看hr下所有的表 SQL>conn hr/hr; SQL>select table_name from user_tables; 三、表查询 1.查看表结构 SQL>desc employees; 2.number数值类型 NUMBER(6)长度为6位的整数 NUMBER(8,2)长度为8位,小数点保留两位 VARCHAR(20)可变长度字符类型,根据内容决定 3.查看当前系统时间 SQL>select sysdate from dual SQL>select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss')from dual; 4.查看所有员工的ID,姓名,工龄,岗位,部门,工资,按工龄的高低排序 select EMPLOYEE_ID,FIRST_NAME,((sysdate-hire_date)/365)"工龄",JOB_ID,DEPARTMENT_ID,SALARY from employees order by hire_date; 5.查询的语法 select column1[[as]"别名"],column2[[as]"别名"],…… from table_name[表别名] where查询条件 group by 分组字段 having 分组字段的条件 order by排序字段ASC|DESC 6.查询练习1 1)查询80部门中工资大于6000的员工id,姓名,工资,入职时间 SQL>select employee_id "员工编号",first_name||'-'||last_name"姓名",salary,hire_date from employees where department_id=80 and salary>=9000; 扩展 SQL>set line 1000//当前行显示多少个字符 SQL>set wrap off//是否换行显示,off不换行 2)查询80部门中最高工资、最低工资、平均工资、部门人数 提示:max(),min(),avg(),count() SQL>select max(salary)"最高工资",min(salary)"最低工资",avg(salary)"平均工资,count(department_id) as 部门人数 from employees where department_id=80; 3)查询80部门中最高工资的员工id,姓名,工资,入职时间 select employee_id,first_name||' '||last_name "姓名",salary,hire_date from employees where department_id=80 and salary=(select max(salary) from employees where department_id=80); 4)查看所有员工的姓名,工资,奖金,入职年限,岗位,按照工资的高低排序 提示:nvl(cl,value)判断cl是否为空,若为空则返回value值 SQL>select first_name,salary,round(salary*nvl(commission_pct,0),2)"奖金",round((sysdate-hire_date)/365)"入职年限",job_id from employees order by salary desc; 7.多表查询 1)等值条件 有n个表连接,必须存在n-1个等子条件 1—1)查询所有人的ID,姓名,岗位,部门名称 提示:employees,departments,jobs SQL>select employee_id,first_name,job_id,department_name from employees e,departments d where e.department_id=d.department_id; 1-2)查询110部门的人员ID,姓名,岗位描述,工资,部门名称 select employee_id,first_name,job_title,salary,department_name from employees e,departments d,jobs where e.department_id=d.department_id and e.job_id=jobs.job_id and e.department_id=110; 2)自连接查询 一张表中存在两个字段,其中一个字段的取值来源于另外一个字段。 employees:employees_id,manager_id 2-1)查询所有员工的ID,姓名,工资,主管id,主管姓名,主管工资,主管入职时间 SQL>select e.employee_id,e.first_name,e.salary,e.hire_date, m.employee_id,m.first_name,m.salary,m.hire_date from employees e,employees m where e.manager_id=m.employee_id; 四、多表查询之join 语法: select 表1,字段1,表2,字段2 from 表1 join 表2 on (等值条件) where条件 order by 字段... 1.查询70部门员工的id,姓名,工资,部门名称,且按部门排序 SQL>select employee_id,first_name,salary,department_name from employees e join departments d on(e.department_id=d.department_id) where e.department_id=70; order by department_name; 2.查询所有员工的id姓名,salary,部门名称,包含没有部门的员工 没有部门员工:SQL> select employee_id,first_name from employees where department_id is null; SQL>select employee_id,first_name,salary,department_name from employees e left outer join departments d on(e.department_id=d.department_id) order by department_name; 3.查询所有部门的员工id,姓名,salary,部门名称,包含没有员工的部门 SQL>select rownum,employee_id,first_name,salary,d.department_id,department_name from employees e right outer join departments d on(e.department_id=d.department_id) order by department_id; 4.查询所有部门的员工的id,姓名,工资,部门名称,包含所有部门和员工 SQL>select rownum,employee_id,first_name,salary,d.department_id,department_name from employees e full outer join departments d on (e.department_id=d.department_id) order by department_id; 五、常用函数 1.字符函数 length(s) substr(s,n,len)截取字符,从n位置开始截取len长度的字符 concat(s1,s2)链接s1和s2两个字符,类似 lower(s)小写字符转换 upper(s)大写字符转换 initcap(s)首字符大写 instr(s,s1,n,m)从s的位置开始查找s1在s中第m次出现的位置 replace(s,s1,s2)将s中s1部分替换成s2 SQL>select length('abcdef') "Len" from dual; SQL>select substr('Disen hi',2,2) "Result" from dual; SQL>select upper(concat('hi','disn')) "rssult" from dual; SQL>select instr('abcdefabcbbcabcddfadc','abc',1,4) "Result" from dual; SQL>select replace('hi,disen','hi','hello') "Result" from dual; 1-1)查询50部门的员工id,姓名,要求姓名全大写显示 SQL>select employee_id,upper(first_name) from employees where department_id=50; 1-2)查询岗位为SA_REP的员工姓名,工资,部门名称 SQL>select first_name,salary,department_name from employees e join departments d on (e.department_id=d.department_id) where job_id=upper('sa_rep');//'SA_REP'; 1-3)查询姓名中包含'la'的所有员工的id,姓名,工资,岗位 提示:模糊查询->字段 like'%la%' ‘_la’,通配符:% 任意长度的任意字符,_一个任意字符 SQL>select employee_id,first_name,salary,job_id from employees where lower(fisrt_name) like '%la%'; 1-4)查询姓名中的第二个字符是'l'的所有员工的ID,姓名,工资,岗位 SQL>select employee_id,first_name,salary,job_id from employees where lower(first_name) like'_l%'; 1-5)查询姓名以'al'开头的员工姓名,工资,岗位,同时将'al'替换成'Di'进行显示 SQL>select replace(lower(first_name),'al','Di'),salary,job_id from employees where lower(first_name) like 'al%'; 2.数值函数 数值->字符 转换 to_char(99,[format]) 字符->数值 转换 to_number('99.85',[format]) 9:任意数字,指定位置不存在数值时,则不显示 0:任意数字,指定位置不存在数值时,则显示为0 ,: 千位符号 .: 小数点 $: 美元符号 L: 本地货币符号 SQL>select to_char(1998.56,'L9,999.0') "Result" from dual; SQL>select to_char(11998.56,'L99,999.0') "Result" from dual; 2-1)将'1,998.6'转成数值,在增加20000 SQL>select to_number('¥1,998.6','L9,999.0')+2000 "Result" from dual; SQL>select '¥1,998.6'+2000 "Result" from dual;--错误,必须对数值的字符转换为数值再计算 2-2)查询所有员工id,姓名,岗位,且工资要求格式化输出,同时按工资高低排序 SQL>select employee_id,first_name,to_char(salary,'L99,999.00') "Salary",job_id from employees order by salary desc; 3.日期函数 日期->字符 to_char(date,[format]); 字符->日期 to_date('',[format]); format: yyyy-MM-dd 年-月-日 dd 月中的日 dddd年中的日 day 星期几 hh12 12小时制 hh24 24小时制 mi 分钟 ss 秒 SQL->select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss day ddd') "Result" from dual; add_months(date,n) 给指定的时间增加六个月,返回六个月后的日期 next_day(date,'星期一')返回下个星期几 last_day(date)返回指定时间月的最后一天的日期 SQL->select last_day(sysdate) from dual; 3-1)查询2015年10月的最后一天的日期 SQL->select last_day(to_date('2015-10','yyyy/mm')) "Result" from dual; SQL->select last_day('01-10月-15') "Result" from dual; 注意:如果字符日期格式与系统的日期格式相同,则会自动转换成日期类型 扩展: 修改系统的日期格式,默认系统时间日期格式:dd-Month-yy SQL->alter session set nls_date_format='yyyy-MM-dd'; SQL->alter session set nls_date_format='yyyy-Month-dd'; SQL->select sysdate from dual; SQL->select add_months(sysdate,2)"实现小目标" from dual; SQL->select add_months(sysdate,2)"实现小目标",to_char(1300,'L9,999.0') "小目标" from dual; 4.通用函数 nvl(s1,s2)若s1不为空,返回s1,反之返回s2 nvl(s1,s2,s3...)返回第一个不为空的字符 case 分支 case 列|表达式 when 条件1 then 值1 when 条件2 then 值2 when 条件3 then 值3 else 值4 end "别名" 4-1)目标1300,如果收入500,返回"不满意",收入800,返回"尚可",收入1300,返回"满意", 收入2000,返回"高兴",收入10000,返回"意外",其他收入,返回"不可能" SQL->select to_char(10000,'L99,999.0')"收入", case 3000 when 500 then '不满意' when 800 then '尚可' when 1300 then '高兴' when 10000 then '意外' else '不可能' end"结果" from dual; decode(列|表达式,条件1,值1,条件2,值2,条件3,值3)别名 SQL->select to_char(800,'L99,999.0')"收入" decode(800,500,'不满意',800,'尚可',1300,'满意',2000,'高兴',10000,'意外','不可能') "结果" from dual; 4-2)查询岗位SA-REP、IT_PROG,ST_MAN,HR_REP的员工id,工资,岗位,奖金 并对SA-REP岗位的奖金增加5%,对IT_PROG岗位的奖金增加10%,对ST_MAN岗位的奖金增加12%,其他岗位不变 SQL->select employee_id,salary,job_id,salary*nvl(commission_pct,0) "奖金" from employees where upper(job_id) in('SA_REP','IT_PROG','ST_MAN','HR_REP'); SQL->select employee_id,salary,job_id, decode(job_id,'SA_REP',salary*(nvl(commission_pct,0)+0.05), 'IT_PROG',salary*(nvl(commission_pct,0)+.1), 'ST_MAN',salary*(nvl(commission_pct,0)+.12),salary *nvl(commission_pct,0)) "奖金" from employees where upper(job_id) in ('SA_REP','IT_PROG','ST_MAN','HR_REP'); 六、子查询 子查询即可以作为表达式或数据来源在查询语句中使用 1)查询大于80部门最高工资的员工id,姓名,工资,岗位,部门id SQL->select employee_id,first_name,salary,job_id,department_id from employees where salary > (select max(salary) from employees where department_id=80); 2)查询80部门工资最高的员工id,姓名,工资,岗位 SQL->select employee_id,first_name,salary,job_id from employees where salary = (select max(salary) from employees where department_id=80) and department_id=80; 3)查询工龄大于12年的所有员工的id,姓名,工资,岗位,工资要求格式化输出 SQL->select e.employee_id,first_name,to_char(salary,'$99,999.0'),y.years "工龄",job_id from employees e join (select employee_id,round((sysdate-hire_date)/365) "YEARS" from employees order by hire_date) y on(e.employee_id=y.employee_id) where y.years>12; SQL->select employee_id,first_name,salary,round((sysdate-hire_date)/365) "YEARS" from employees where employee_id in (select employee_id from (select employee_id,round((sysdate-hire_date)/365) "YEARS" from employees order by hire_date) where years>12); 4)查询工资在80部门的最高工资和90部门的最高工资之间的员工id,工资,入职时间,岗位 SQL->select employee_id,salary,to_char(hire_date,'yyyy-MM-dd hh24:mi:ss')"HIRE_DATE",job_id from employees where salary between(select max(salary) from employees where department_id=80) and (select max(salary) from employees where department_id=90); 七、增加(插入)、更新(修改)、删除及事务处理 1.插入语句 语法1:insert into 表名[(字段1,字段2,...)] value(字段1值,字段2值,...); 语法2:insert into 目的表名[(字段1,字段2,...)] select 字段1,字段2,... from 源表名 where... 1-1)插入一位员工到120部门,员工的姓名为"disen",编号666,邮箱8888@qq.com,入职时间为当天,岗位为IT_PROG SQL->insert into employees(employee_id,last_name,email,hire_date,job_id,department_id) values(666,'disen','8888@qq.com',sysdate,upper('it_prog'),120); SQL->select employee_id,last_name,email,hire_date,job_id from employees where department_id=120; 2.事务 commit 提交事务,之前进行的DML操作都生效 rollback 回滚事务,之前进行的DML操作都无效 savepoint 还原点名,在DML操作后,定义一个回滚的事件点 rollback to 还原点名,回滚事务到还原点名之后,还原点名之前的DML不受影响 扩展:在以下事件发生时,系统会自动提交事务 1)当执行DDL或DCL时 2)会话session(窗口)关闭时 3)执行commit时 4)执行trunk截断表时 3.插入三位员工,使用sql脚本方式 在d:\insert_emps.txt->insert_emps.sql SQL->start d:\insert_emps.sql 开始执行 4.删除语句 语法: delete from 表名 where 条件; 4-1)删除姓名(last_name)是disen的员工 SQL->select last_name from employees where last_name='disen'; SQL->delete from employees where last_name='disen'; SQL->savepoint delDisen; 5.修改语句 语法: update 表名 set 字段1=value1,字段value2,... where 条件 5-1)将120部门的员工工资改成12000,绩效百分比市值为10% SQL->update employees set salary=12000,commission_pct=.1 where department_id=120; 5-2)查询120部门员工的id,姓名,工资,奖金,实际工资 SQL->select employee_id,last_name,salary,commission_pct*salary"奖金",salary*(1+commission_pct) "实际工资" from employees where department_id=120; 5-3)将zxp的奖金的百分比提升到15%,工资增加200 SQL->savepoint updateSY; SQL->update employees set commission_pct=.15,salary=salary+200 where first_name='zxp'; 5-4)将120部门员工的奖金小于1200的员工的奖金增加200 SQL->savepoint up Salary; SQL->update employees set commission_pct=round((salary*commission_pct+200)/salary,2) where department_id=120 and(salary*commission_pct)<=1200; 5-5)将入职年限超过12年的员工工资增加1000,且岗位是FI_MGR SQL->update employees set salary=salary+1000 where(sysdate-hire_date)/365>=12 and job_id='FI_MGR'; SQL->select employee_id,last_name,salary,hire_date from employees where(sysdate-hire_date)/365>=12 and job_id='FI_MGR'; 八、五种约束 1.主键 primary key,表示主键的值不能为空,且是唯一的 2.外键 foreign key references,外键字段值的来源于references引用主表的主键 3.非空 not null,非空字段的值不能为null 4.唯一 unique,唯一列值在整个表中就唯一的 5.检查 check,列值必须符合check的条件 约束的数据字典: user_constraints user_cons_columns; 1)查询employees表的所有约束的名称,表名,字段名,类型 SQL->desc user_constraints; SQL->select c.constraint_name,c.table_name,cc.column_name,c.constraint_type from user_constraints c join user_cons_columns cc on(c.constraint_name=cc.constraint_name) where c.table_name=upper('employees'); 扩展: 设置列的显示宽度 col 列名 format a20; 20代表列宽 SQL->col column_name format a15; SQL->col constraint_name format a20; 2)将120部门的所有员工的主管id改为555,操作是否成功,为什么? SQL->update employees set manager_id=555 where department_id=120; 第 1 行出现错误: ORA-02291: 违反完整约束条件 (HR.EMP_MANAGER_FK) - 未找到父项关键字 解决方法 禁用EMP_MANAGER_FK约束 SQL->alter table employees disabled constraint emp_manager_fk; SQL->select c.constraint_name,c.status,cc.column_name,c.constraint_type from user_constraints c join user_cons_columns cc on(c.constraint_name=cc.constraint_name) where c.table_name=upper('employees'); 3)查询主管id为555的员工的id,工资,姓名,邮箱 SQL->select employee_id,salary,last_name,email from employees where manager_id=666; 4)将主管id为555的员工的主管id设置为空 SQL->update employees set manager_id=null where manager_id=666; SQL->commit; SQL->alter table employees disabled constraint emp_manager_fk; 九、DML 1.创建表 oracle数据类型: varchar2(len) 可变数据类型 char(len) 固定长度的字符类型 date number(m,n) 带小数点的数值类型 number(m) 整型数值 语法: create table 表名(column1 datetype(len)[约束][默认值], (column2 datetype(len)[约束][默认值], (column3 datetype(len)[约束][默认值],...) [as 子查询] 1-1)创建emp_high表,此表用于保存每个部门最高薪资的员工id,姓名,工资,入职时间,岗位 SQL->create table emp_high(employee_id number(6),name varchar2(20),salary number(8,2),hire_date date,job_id varchar2(10)); 1-2)修改emp_high表的salary数据长度为8位,小数点保留两位 SQL->alter table emp_high modify(salary number(8,2)); SQL->select * from emp_high; SQL->insert into emp_high select employee_id,last_name,salary,hire_date,job_id from employees e join (select department_id,max(salary) "MAXSALARY" from employees group by department_id) eh on(e.department_id=eh.department_id) where e.salary=eh.maxsalary; 1-3)修改emp_high表中name列名为employee_name SQL> alter table emp_high rename column name to employee_name; 1-4)将emp_high表中的employee_id的列名改成id,类型长度改为3位 修改列类型语法: alter table 表名 modify(列名 datetype[约束][默认值]); 修改列名的语法: alter table 表名 rename column 旧列名 to 新列名; SQL->alter table emp_high modify (employee_id number(8));//如果数据类型的长度比之前要小时,此列是空列。 SQL->alter table emp_high rename column employee_id to id; 1-5)查询emp_high中每个员工所在部门名称,岗位,姓名 SQL->select department_name,e.job_id,employee_name from employees e,departments d,emp_high n where e.employee_id=n.id and e.department_id=d.department_id; SQL->select department_name,e.job_id,employee_name from emp_high eh join employees e on(eh.id=e.employee_id) join departments d on(e.department_id=d.department_id); 1-6)将emp_high表中的job_id和salary两个字段删除 删除列的语法: alter table 表名 drop column 列名; SQL->alter table emp_high drop column job_id; SQL->alter table emp_high drop column salary; 1-7)删除emp_high表 删除表的语法: drop table 表名; SQL->drop table emp_high; 2.表和约束 2-1)创建班级表、学生表、课程表、成绩表 班级表 t_cls(id,title) 学生表 t_stu(id,name,age,sex,tel,cls_id) 课程表 t_course(id,title,pct) pct学分 成绩表 t_score(id,stu_id,course_id,score) SQL->start d:/chuangjian.sql 2-2)查询所有的学生的姓名,成绩,班级名 SQL->select s.name,cs.title,c.title,sc.score from t_stu s join t_cls cs on (s.cls_id=cs.id) join t_score sc on(s.id=stu_id) join t_course c on(sc.course_id=c.id) order by s.name; 2-3)向学生表添加组长ID列(mgr_id),取值为学生id 语法: alter table 表名 add (列名 datetype(length)[约束][默认值]); SQL->alter table t_stu add mgr_id number(12) unique; SQL->update t_stu set mgr_id='201503063240' where id='201503063240'; 十、View视图 1.创建视图的语法: create view 视图名[(列名1,列名2,...)] as 子查询; 删除视图: drop view 视图名; 1-1)查询80部门员工id,姓名,工资,岗位和部门名称,并将查询结果以视图的方式保存。 SQL->create view depart_80 as select employee_id,last_name,salary,job_id,department_name from employees e join departments d on (e.department_id=d.department_id) where e.department_id=80; SQL->select * from depart_80; SQL->create or replace view depart_80(id,name,salary,job_id,d_name) as select employee_id,last_name,salary,job_id,department_name from employees e join departments d on (e.department_id=d.department_id) where e.department_id=80; 1-2)查询SA_REP岗位员工的id,姓名,入职时间,工资,奖金,实发工资和部门名称, 按照入职时间早晚排序,并将查询结果以视图的方式保存。 SQL->create or replace view v_sa_rep as select employee_id,first_name,to_char(hire_date,'yyyy-MM-dd') "HIRE_DATE", to_char(salary,'L99,999.0')"SALARY", salary*nvl(commission_pct,0) "COMMISSON", salary*(1+nvl(commission_pct,0)) "RSALARY",department_name from employees e join departments d on(e.department_id=d.department_id) where job_id=upper('sa_rep') order by hire_date; SQL-> drop view v_sa_rep; 2.on delete cascade /on delete set null 主外键级应用 2-1)创建用户表和用户日志表,并设置用户表和日志表主外键关系,同时考虑级联删除。 用户表:t_user(id,name,passwd,nick_name,u_level,u_roles) 日志表:t_log(id,content,user_id,log_date,log_ip) SQL->create table t_user (id number(8) primary key, name varchar2(20) not null, passwd varchar(20) not null, nick_name varchar2(20), u_level number(2) default 1, u_roles varchar2(10) default 'comm', constraint user_name_un unique(name) ); SQL->create table t_log (id number(8) primary key, content varchar2(200), user_id number(6) references t_user(id) on delete casecade, log_date date default sysdate, log_ip varchar2(20) ); --on delete casecade 当user_id的记录从t_user删除时,那么t_log表中的所有user_id的记录会被全部删除 --on delete set null 当user_id的记录从t_user删除时,那么t_log表中的所有user_id的记录会被全部设置为null。 SQL->alter table t_log drop constraint SYS_C0011176;--删除t_表的SYS_C0011175约束 SQL->alter table t_log modify(user_id number(6) references t_user(id) on delete casecade); 2-2)查询t_log表的所有约束的名称,类型,表名,列名,状态 提示:user_constraints(table_name,constraint_name,type,status), user_cons_columns(table_name,constraint_name,column_name) SQL->create or replace view v_log_cons as select c.constraint_name,c.constraint_type,c.table_name,cc.column_name,c.status from user_constraints c join user_cons_columns cc on (c.constraint_name=cc.constraint_name) where c.table_name=upper('t_log'); SQL->col column_name format a20; SQL->select * from v_log_cons; 2-3)添加用户(1,'disen','888'),添加日志(1,'login',1),(2,'query goods',1),(3,'add goods',1) SQL->insert into t_user(id,name,passwd) values(1,'disen','888'); insert into t_log(id,content,user_id) values(1,'login',1); insert into t_log(id,content,user_id) values(2,'query goods',1); insert into t_log(id,content,user_id) values(3,'add goods',1); SQL->select name,content,log_date from t_user u join t_log l on(u.id=l.user_id); SQL->delete from t_user where id=1; SQL->alter table t_log drop constraint SYS_C0011176;--删除t_log表的SYS_C0011176约束 SQL->alter table t_log modify(user_id number(10) references t_user(id) on delete set null); 3.序列 创建序列的语法: create sequence 序列名 increment by 步长 start with 起始值 maxvalue 最大值 minvalue 最小值 cycle|nocycle cache n|nocache; 使用序列: 在插入语句中:序列名.nextval 序列的数据字典:user_sequences SQL->select sequence_name,increment_by,min_value,to_char(max_value),last_number from user_sequences; 3-1)为t_user表和t_表创建自增序列,起始位1,步长1,最大值999999 SQL->create sequence user_seq increment by 1 start with 1 maxvalue 999999 nocycle nocache; 3-2)使用user_seq序列作为user的id,向用户表插入两条记录。 SQL->insert into t_user(id,name,passwd) values(user_seq.nextval,'disen','888'); insert into t_user(id,name,passwd) values(user_seq.nextval,'sy','666'); 注意:当DML事务回退时,序列不回退。 4.复习java 1)数据类型 字符:char,String 数值: 整数: bype,short,int,long 精度:float,double 布尔:boolean(true,false) 2)数据类型的引用类 char-> Character byte->Byte int->Integer long->Long float->Float double->Double 3)Java命名规范:驼峰命名 a)类名:首字母大写,随后的每个词组的第一个字母大写。 b)属性(成员变量/字段)名:首字母小写,随后的每一个字母大写。 c)方法名:同属性命名方式。 eg.将"123"转成数值后加上100,打印结果 核心代码: String ns="123"; int number=Integer.parseInt(ns); number=number+100;//number+=100; System.out.println("number="+number); 4)Java类 a)静态块 b)构造方法 c)成员变量 d)成员方法 使用类中的成员时,必须先实例化。 5)集合ArrayList,Arrays排序 Collection(List->ArrayList,Set->HashSet) Map->HashMap,TreeMap 在bean包下:alt+[insert]->Class->User: ID PASSWD NICK_NAME U_LEVEL U_ROLSE ->生成setter和getter方法 ->生成构造方法 ->生成实例化方法(单例模式) 二、java 1.数据类型 "123.56"->int :Integer.parseInt("123"); "123.56"->float :Float.parseFloat("123.56"); 67.78->String :String.valueOf(67.78); "67.78" 2.语法 class,method,访问类型(public,default,proteted,private) if-elseif-else int a=100; switch(a){ case 90: System.out.println("a"); case 99: System.out.println("c"); case 100: System.out.println("d"); default: System.out.println("e"); } 结果:d e 成绩>=60及格,>=80良,>=90优,switch语句实现 switch(score){ case 60: case 70: System.out.println("及格");break; case 80: System.out.println("良");break; case 90: case 100: System.out.println("优");break; default: System.out.println("差");break; } while,do-while for(int i=0,i<=10;i++){ } 3.数组,初始化 int[] numbers={2,34,5,6,7}; int[] n2=new int[4]; int len=n2.length; change(n2); System.out.println(int[] abc){ abc=12;//当前执行的位置 } 4.类对象 三大特性:封装,继承,多态 多态: 1)父类的引用指向子类的对象 2)子类->父类:自动转换 父类->子类:强制转换 instanceof class User{ private String name; public User(){ this.name="disen" } public void setName(String name){ } public void getName(){ return this.name; } } public static void main(String[] args){ User user=new User(); User u2=new User("SY"); changName(u2); System.out.println(user.getName()); System.out.println(u2.getName()); } public static void changeName(User user); user.setName("YanYan"); } 开库 root 1.su - oracle//使用oracle 2.//打开监听器 3.sqlplus / as sysdba 4.sql>startup 5.alter system register 6.!lsnrctl status 7.vi /etc/hosts//修改ip clear//清屏 su - oracle sqlplus / as sysdba create user zhang identified by zhang; conn zhang/zhang; conn / as sysdba grant create session to zhang; sqlplus zhang/zhang; select *from tab; grant create table to zhang; create table t(id int,name char(10)); grant select on emp to zhang; revoke select onemp form zhang; delclare integer char varchar2 oerr ora 12899//查错 select nullif(1,0) from dual;//1 select nullif(0,0) from dual;//null date timestamp exception begin exception end; 关系型数据库 *数据是以二维表的形式来存储 *列不可再分 coll coll2 coll3 coll4 coll.1 coll.2 第一范式: *只要建立了列不可再分的二维表,就属于第一范式。 第二范式: *二维表中存在一列,该列的值没有重复,可以唯一地区分每一行记录。 第三范式: *在符合第二范式 SQL select * from emp where empno=7788 optimizer *简单查询 数据来源一个表 *复杂查询 数据来源于多个表,或者包含多个查询 *多表连接查询 *复合查询 union,intersect,minus *多表连接查询 *非关联子查询 select * from emp where sal>(select from emp where ename="jones"); select ename,a.deptno,sal,avgsal from emp a,(select deptno,AVG(sal) avgsal from emp group by deptno) b where a.deptno=b.deptno and sal>avgsal; 关联子查询 select ename,o.deptno,sal from emp o where sal>(select avg(sal) from emp 1 where i.deptno=o.deptno);
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~