当前位置:文档之家› [尚硅谷]_宋红康_plsql经典试题

[尚硅谷]_宋红康_plsql经典试题

[尚硅谷]_宋红康_plsql经典试题
[尚硅谷]_宋红康_plsql经典试题

—————————————————————————————

题目:PL-SQL经典试题

0. 准备工作:

set serveroutput on

hellowrold 程序

begin

dbms_output.put_line('hello world');

end;

/

[语法格式]

--declare

--声明的变量、类型、游标

begin

--程序的执行部分(类似于java里的main()方法)

dbms_output.put_line('helloworld');

--exception

--针对begin块中出现的异常,提供处理的机制

--when .... then ...

--when .... then ...

end;

*******************************************************************************

基本语法

******************************************************************************* 1. 使用一个变量

declare

--声明一个变量

v_name varchar2(25);

begin

--通过select ... into ... 语句为变量赋值

select last_name into v_name

from employees

where employee_id = 186;

-- 打印变量的值

dbms_output.put_line(v_name);

end;

—————————————————————————————2. 使用多个变量

declare

--声明变量

v_name varchar2(25);

v_email varchar2(25);

v_salary number(8, 2);

v_job_id varchar2(10);

begin

--通过select ... into ... 语句为变量赋值

--被赋值的变量与SELECT中的列名要一一对应

select last_name, email, salary, job_id into v_name, v_email, v_salary, v_job_id

from employees

where employee_id = 186;

-- 打印变量的值

dbms_output.put_line(v_name || ', ' || v_email || ', ' || v_salary || ', ' || v_job_id); end;

----------------------------------------------------------------

记录类型

----------------------------------------------------------------

3.1 自定义记录类型

declare

--定义一个记录类型

type customer_type is record(

v_cust_name varchar2(20),

v_cust_id number(10));

--声明自定义记录类型的变量

v_customer_type customer_type;

begin

v_customer_type.v_cust_name := '刘德华';

v_customer_type.v_cust_id := 1001;

dbms_output.put_line(v_customer_type.v_cust_name||','||v_customer_type.v_cust_id); end;

3.2 自定义记录类型

declare

—————————————————————————————--定义一个记录类型

type emp_record is record(

v_name varchar2(25),

v_email varchar2(25),

v_salary number(8, 2),

v_job_id varchar2(10));

--声明自定义记录类型的变量

v_emp_record emp_record;

begin

--通过select ... into ... 语句为变量赋值

select last_name, email, salary, job_id into v_emp_record

from employees

where employee_id = 186;

-- 打印变量的值

dbms_output.put_line(v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' || v_emp_record.v_salary || ', ' || v_emp_record.v_job_id);

end;

4. 使用%type 定义变量,动态的获取数据的声明类型

declare

--定义一个记录类型

type emp_record is record(

v_name https://www.doczj.com/doc/f88309121.html,st_name%type,

v_email employees.email%type,

v_salary employees.salary%type,

v_job_id employees.job_id%type);

--声明自定义记录类型的变量

v_emp_record emp_record;

begin

--通过select ... into ... 语句为变量赋值

select last_name, email, salary, job_id into v_emp_record

from employees

where employee_id = 186;

-- 打印变量的值

dbms_output.put_line(v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' || v_emp_record.v_salary || ', ' || v_emp_record.v_job_id);

end;

—————————————————————————————5. 使用%rowtype

declare

--声明一个记录类型的变量

v_emp_record employees%rowtype;

begin

--通过select ... into ... 语句为变量赋值

select * into v_emp_record

from employees

where employee_id = 186;

-- 打印变量的值

dbms_output.put_line(v_emp_https://www.doczj.com/doc/f88309121.html,st_name || ', ' || v_emp_record.email || ', ' || v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' || v_emp_record.hire_date); end;

6.1 赋值语句:通过变量实现查询语句

declare

v_emp_record employees%rowtype;

v_employee_id employees.employee_id%type;

begin

--使用赋值符号位变量进行赋值

v_employee_id := 186;

--通过select ... into ... 语句为变量赋值

select * into v_emp_record

from employees

where employee_id = v_employee_id;

-- 打印变量的值

dbms_output.put_line(v_emp_https://www.doczj.com/doc/f88309121.html,st_name || ', ' || v_emp_record.email || ', ' ||

v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' || v_emp_record.hire_date); end;

6.2 通过变量实现DELETE、INSERT、UPDATE等操作

declare

v_emp_id employees.employee_id%type;

—————————————————————————————begin

v_emp_id := 109;

delete from employees

where employee_id = v_emp_id;

--commit;

end;

*******************************************************************************

流程控制

******************************************************************************* -----------------------------------------------------

条件判断

-----------------------------------------------------

7. 使用IF ... THEN ... ELSIF ... THEN ...ELSE ... END IF;

要求: 查询出150号员工的工资, 若其工资大于或等于10000 则打印'salary >= 10000'; 若在5000 到10000 之间, 则打印'5000<= salary < 10000'; 否则打印'salary < 5000'

(方法一)

declare

v_salary employees.salary%type;

begin

--通过select ... into ... 语句为变量赋值

select salary into v_salary

from employees

where employee_id = 150;

dbms_output.put_line('salary: ' || v_salary);

-- 打印变量的值

if v_salary >= 10000 then

dbms_output.put_line('salary >= 10000');

elsif v_salary >= 5000 then

dbms_output.put_line('5000 <= salary < 10000');

else

dbms_output.put_line('salary < 5000');

end if;

(方法二)

declare

v_emp_name https://www.doczj.com/doc/f88309121.html,st_name%type;

v_emp_sal employees.salary%type;

v_emp_sal_level varchar2(20);

begin

select last_name,salary into v_emp_name,v_emp_sal from employees where employee_id

—————————————————————————————= 150;

if(v_emp_sal >= 10000) then v_emp_sal_level := 'salary >= 10000';

elsif(v_emp_sal >= 5000) then v_emp_sal_level := '5000<= salary < 10000';

else v_emp_sal_level := 'salary < 5000';

end if;

dbms_output.put_line(v_emp_name||','||v_emp_sal||','||v_emp_sal);

end;

7+ 使用CASE ... WHEN ... THEN ...ELSE ... END 完成上面的任务

declare

v_sal employees.salary%type;

v_msg varchar2(50);

begin

select salary into v_sal

from employees

where employee_id = 150;

--case 不能向下面这样用

/*

case v_sal when salary >= 10000 then v_msg := '>=10000'

when salary >= 5000 then v_msg := '5000<= salary < 10000'

else v_msg := 'salary < 5000'

end;

*/

v_msg :=

case trunc(v_sal / 5000)

when 0 then 'salary < 5000'

when 1 then '5000<= salary < 10000'

else 'salary >= 10000'

end;

dbms_output.put_line(v_sal ||','||v_msg);

end;

8. 使用CASE ... WHEN ... THEN ... ELSE ... END;

要求: 查询出122 号员工的JOB_ID, 若其值为'IT_PROG', 则打印'GRADE: A';

'AC_MGT', 打印'GRADE B',

'AC_ACCOUNT', 打印'GRADE C';

—————————————————————————————

否则打印'GRADE D'

declare

--声明变量

v_grade char(1);

v_job_id employees.job_id%type;

begin

select job_id into v_job_id

from employees

where employee_id = 122;

dbms_output.put_line('job_id: ' || v_job_id);

--根据v_job_id 的取值, 利用case 字句为v_grade 赋值

v_grade :=

case v_job_id when 'IT_PROG' then 'A'

when 'AC_MGT' then 'B'

when 'AC_ACCOUNT' then 'C'

else 'D'

end;

dbms_output.put_line('GRADE: ' || v_grade);

end;

-----------------------------------------------------

循环结构

-----------------------------------------------------

9. 使用循环语句打印1 - 100.(三种方式)

1). LOOP ... EXIT WHEN ... END LOOP

declare

--初始化条件

v_i number(3) := 1;

begin

loop

--循环体

dbms_output.put_line(v_i);

--循环条件

exit when v_i = 100;

--迭代条件

v_i := v_i + 1;

end loop;

end;

—————————————————————————————

2). WHILE ... LOOP ... END LOOP

declare

--初始化条件

v_i number(3) := 1;

begin

--循环条件

while v_i <= 100 loop

--循环体

dbms_output.put_line(v_i);

--迭代条件

v_i := v_i + 1;

end loop;

end;

3).

begin

for i in 1 .. 100 loop

dbms_output.put_line(i);

end loop;

end;

10. 综合使用if, while 语句, 打印1 - 100 之间的所有素数

(素数: 有且仅用两个正约数的整数, 2, 3, 5, 7, 11, 13, ...).

declare

v_flag number(1):=1;

v_i number(3):=2;

v_j number(2):=2;

begin

while (v_i<=100) loop

while v_j <= sqrt(v_i) loop

if (mod(v_i,v_j)=0) then v_flag:= 0;end if;

v_j :=v_j +1;

end loop;

if(v_flag=1) then dbms_output.put_line(v_i);end if;

v_flag :=1;

v_j := 2;

v_i :=v_i +1;

end loop;

—————————————————————————————end;

(法二)使用for循环实现1-100之间的素数的输出

declare

--标记值, 若为1 则是素数, 否则不是

v_flag number(1) := 0;

begin

for i in 2 .. 100 loop

v_flag := 1;

for j in 2 .. sqrt(i) loop

if i mod j = 0 then

v_flag := 0;

end if;

end loop;

if v_flag = 1 then

dbms_output.put_line(i);

end if;

end loop;

end;

11. 使用goto

declare

--标记值, 若为1 则是素数, 否则不是

v_flag number(1) := 0;

begin

for i in 2 .. 100 loop

v_flag := 1;

for j in 2 .. sqrt(i) loop

if i mod j = 0 then

v_flag := 0;

goto label;

end if;

end loop;

<

if v_flag = 1 then

—————————————————————————————dbms_output.put_line(i);

end if;

end loop;

end;

11+.打印1——100的自然数,当打印到50时,跳出循环,输出“打印结束”

(方法一)

begin

for i in 1..100 loop

dbms_output.put_line(i);

if(i = 50) then

goto label;

end if;

end loop;

<

dbms_output.put_line('打印结束');

end;

(方法二)

begin

for i in 1..100 loop

dbms_output.put_line(i);

if(i mod 50 = 0) then dbms_output.put_line('打印结束');

exit;

end if;

end loop;

end;

******************************************************************************

游标的使用

******************************************************************************* 12.1 使用游标

要求: 打印出80 部门的所有的员工的工资:salary: xxx

declare

--1. 定义游标

cursor salary_cursor is select salary from employees where department_id = 80;

v_salary employees.salary%type;

begin

--2. 打开游标

open salary_cursor;

—————————————————————————————

--3. 提取游标

fetch salary_cursor into v_salary;

--4. 对游标进行循环操作: 判断游标中是否有下一条记录

while salary_cursor%found loop

dbms_output.put_line('salary: ' || v_salary);

fetch salary_cursor into v_salary;

end loop;

--5. 关闭游标

close salary_cursor;

end;

12.2 使用游标

要求: 打印出80 部门的所有的员工的工资: Xxx 's salary is: xxx

declare

cursor sal_cursor is select salary ,last_name from employees where department_id = 80;

v_sal number(10);

v_name varchar2(20);

begin

open sal_cursor;

fetch sal_cursor into v_sal,v_name;

while sal_cursor%found loop

dbms_output.put_line(v_name||'`s salary is '||v_sal);

fetch sal_cursor into v_sal,v_name;

end loop;

close sal_cursor;

end;

13. 使用游标的练习:

打印出manager_id 为100 的员工的last_name, email, salary 信息(使用游标, 记录类型)

declare

--声明游标

cursor emp_cursor is select last_name, email, salary from employees where manager_id = 100;

—————————————————————————————

--声明记录类型

type emp_record is record(

name https://www.doczj.com/doc/f88309121.html,st_name%type,

email employees.email%type,

salary employees.salary%type

);

-- 声明记录类型的变量

v_emp_record emp_record;

begin

--打开游标

open emp_cursor;

--提取游标

fetch emp_cursor into v_emp_record;

--对游标进行循环操作

while emp_cursor%found loop

dbms_output.put_line(v_emp_https://www.doczj.com/doc/f88309121.html, || ', ' || v_emp_record.email || ', ' || v_emp_record.salary );

fetch emp_cursor into v_emp_record;

end loop;

--关闭游标

close emp_cursor;

end;

(法二:使用for循环)

declare

cursor emp_cursor is

select last_name,email,salary

from employees

where manager_id = 100;

begin

for v_emp_record in emp_cursor loop

dbms_output.put_line(v_emp_https://www.doczj.com/doc/f88309121.html,st_name||','||v_emp_record.email||','||v_emp_record. salary);

—————————————————————————————end loop;

end;

14. 利用游标, 调整公司中员工的工资:

工资范围调整基数

0 - 5000 5%

5000 - 10000 3%

10000 - 15000 2%

15000 - 1%

declare

--定义游标

cursor emp_sal_cursor is select salary, employee_id from employees;

--定义基数变量

temp number(4, 2);

--定义存放游标值的变量

v_sal employees.salary%type;

v_id employees.employee_id%type;

begin

--打开游标

open emp_sal_cursor;

--提取游标

fetch emp_sal_cursor into v_sal, v_id;

--处理游标的循环操作

while emp_sal_cursor%found loop

--判断员工的工资, 执行update 操作

--dbms_output.put_line(v_id || ': ' || v_sal);

if v_sal <= 5000 then

temp := 0.05;

elsif v_sal<= 10000 then

temp := 0.03;

elsif v_sal <= 15000 then

temp := 0.02;

else

temp := 0.01;

end if;

—————————————————————————————

--dbms_output.put_line(v_id || ': ' || v_sal || ', ' || temp);

update employees set salary = salary * (1 + temp) where employee_id = v_id;

fetch emp_sal_cursor into v_sal, v_id;

end loop;

--关闭游标

close emp_sal_cursor;

end;

使用SQL中的decode 函数

update employees set salary = salary * (1 + (decode(trunc(salary/5000), 0, 0.05,

1, 0.03,

2, 0.02,

0.01)))

15. 利用游标for 循环完成14.

declare

--定义游标

cursor emp_sal_cursor is select salary, employee_id id from employees;

--定义基数变量

temp number(4, 2);

begin

--处理游标的循环操作

for c in emp_sal_cursor loop

--判断员工的工资, 执行update 操作

--dbms_output.put_line(c.employee_id || ': ' || c.salary);

if c.salary <= 5000 then

temp := 0.05;

elsif c.salary <= 10000 then

temp := 0.03;

elsif c.salary <= 15000 then

temp := 0.02;

else

temp := 0.01;

end if;

--dbms_output.put_line(v_id || ': ' || v_sal || ', ' || temp);

—————————————————————————————update employees set salary = salary * (1 + temp) where employee_id = c.id;

end loop;

end;

16*. 带参数的游标

declare

--定义游标

cursor emp_sal_cursor(dept_id number, sal number) is

select salary + 1000 sal, employee_id id

from employees

where department_id = dept_id and salary > sal;

--定义基数变量

temp number(4, 2);

begin

--处理游标的循环操作

for c in emp_sal_cursor(sal => 4000, dept_id => 80) loop

--判断员工的工资, 执行update 操作

--dbms_output.put_line(c.id || ': ' || c.sal);

if c.sal <= 5000 then

temp := 0.05;

elsif c.sal <= 10000 then

temp := 0.03;

elsif c.sal <= 15000 then

temp := 0.02;

else

temp := 0.01;

end if;

dbms_output.put_line(c.sal || ': ' || c.id || ', ' || temp);

--update employees set salary = salary * (1 + temp) where employee_id = c.id;

end loop;

end;

17. 隐式游标: 更新指定员工salary(涨工资10),如果该员工没有找到,则打印”查无此人”信息

begin

update employees set salary = salary + 10 where employee_id = 1005;

—————————————————————————————if sql%notfound then

dbms_output.put_line('查无此人!');

end if;

end;

*******************************************************************************

异常处理

******************************************************************************* [预定义异常]

declare

v_sal employees.salary%type;

begin

select salary into v_sal

from employees

where employee_id >100;

dbms_output.put_line(v_sal);

exception

when Too_many_rows then dbms_output.put_line('输出的行数太多了');

end;

[非预定义异常]

declare

v_sal employees.salary%type;

--声明一个异常

delete_mgr_excep exception;

--把自定义的异常和oracle的错误关联起来

PRAGMA EXCEPTION_INIT(delete_mgr_excep,-2292);

begin

delete from employees

where employee_id = 100;

select salary into v_sal

from employees

where employee_id >100;

dbms_output.put_line(v_sal);

exception

—————————————————————————————when Too_many_rows then dbms_output.put_line('输出的行数太多了');

when delete_mgr_excep then dbms_output.put_line('Manager不能直接被删除');

end;

[用户自定义异常]

declare

v_sal employees.salary%type;

--声明一个异常

delete_mgr_excep exception;

--把自定义的异常和oracle的错误关联起来

PRAGMA EXCEPTION_INIT(delete_mgr_excep,-2292);

--声明一个异常

too_high_sal exception;

begin

select salary into v_sal

from employees

where employee_id =100;

if v_sal > 1000 then

raise too_high_sal;

end if;

delete from employees

where employee_id = 100;

dbms_output.put_line(v_sal);

exception

when Too_many_rows then dbms_output.put_line('输出的行数太多了');

when delete_mgr_excep then dbms_output.put_line('Manager不能直接被删除');

--处理异常

when too_high_sal then dbms_output.put_line('工资过高了');

end;

18. 异常的基本程序:

通过select ... into ... 查询某人的工资, 若没有查询到, 则输出"未找到数据"

declare

--定义一个变量

—————————————————————————————v_sal employees.salary%type;

begin

--使用select ... into ... 为v_sal 赋值

select salary into v_sal from employees where employee_id = 1000;

dbms_output.put_line('salary:' || v_sal);

exception

when No_data_found then

dbms_output.put_line('未找到数据');

end;

declare

--定义一个变量

v_sal employees.salary%type;

begin

--使用select ... into ... 为v_sal 赋值

select salary into v_sal from employees;

dbms_output.put_line('salary:' || v_sal);

exception

when No_data_found then

dbms_output.put_line('未找到数据!');

when Too_many_rows then

dbms_output.put_line('数据过多!');

end;

19. 更新指定员工工资,如工资小于300,则加100;对NO_DATA_FOUND 异常, TOO_MANY_ROWS 进行处理.

declare

v_sal employees.salary%type;

begin

select salary into v_sal from employees where employee_id = 100;

if(v_sal < 300) then update employees set salary = salary + 100 where employee_id = 100;

else dbms_output.put_line('工资大于300');

end if;

exception

when no_data_found then dbms_output.put_line('未找到数据');

when too_many_rows then dbms_output.put_line('输出的数据行太多');

end;

20. 处理非预定义的异常处理: "违反完整约束条件"

—————————————————————————————

declare

--1. 定义异常

temp_exception exception;

--2. 将其定义好的异常情况,与标准的ORACLE 错误联系起来,使用EXCEPTION_INIT 语句

PRAGMA EXCEPTION_INIT(temp_exception, -2292);

begin

delete from employees where employee_id = 100;

exception

--3. 处理异常

when temp_exception then

dbms_output.put_line('违反完整性约束!');

end;

21. 自定义异常: 更新指定员工工资,增加100;若该员工不存在则抛出用户自定义异常: no_result

declare

--自定义异常

no_result exception;

begin

update employees set salary = salary + 100 where employee_id = 1001;

--使用隐式游标, 抛出自定义异常

if sql%notfound then

raise no_result;

end if;

exception

--处理程序抛出的异常

when no_result then

dbms_output.put_line('更新失败');

end;

*******************************************************************************

存储函数和过程

******************************************************************************* [存储函数:有返回值,创建完成后,通过select function() from dual;执行]

[存储过程:由于没有返回值,创建完成后,不能使用select语句,只能使用pl/sql块执行]

—————————————————————————————

[格式]

--函数的声明(有参数的写在小括号里)

create or replace function func_name(v_param varchar2)

--返回值类型

return varchar2

is

--PL/SQL块变量、记录类型、游标的声明(类似于前面的declare的部分)

begin

--函数体(可以实现增删改查等操作,返回值需要return)

return 'helloworld'|| v_param;

end;

22.1 函数的helloworld: 返回一个"helloworld" 的字符串

create or replace function hello_func

return varchar2

is

begin

return 'helloworld';

end;

执行函数

begin

dbms_output.put_line(hello_func());

end;

或者:select hello_func() from dual;

22.2 返回一个"helloworld: atguigu"的字符串,其中atguigu 由执行函数时输入。

--函数的声明(有参数的写在小括号里)

create or replace function hello_func(v_logo varchar2)

--返回值类型

return varchar2

is

--PL/SQL块变量的声明

begin

--函数体

return 'helloworld'|| v_logo;

end;

尚硅谷_宋红康_sql面试题

SQL面试用题 id 和它的平均工资. 5. 查询平均工资最低的部门信息 6. 查询平均工资最低的部门信息和该部门的平均工资 7. 查询平均工资最高的 job 信息 8. 查询平均工资高于公司平均工资的部门有哪些? 9. 查询出公司中所有 manager 的详细信息. 10. 各个部门中最高工资中最低的那个部门的最低工资是多少 11. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary 12. 查询 1999 年来公司的人所有员工的最高工资的那个员工的信息. 13.返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的 员工号、姓名、job_id 以及salary ************************answers********************* 1.查询每个月倒数第 2 天入职的员工的信息. select last_name, hire_date from employees where hire_date = last_day(hire_date) – 1 2.查询出 last_name 为 'Chen' 的 manager 的信息.

1). 通过两条 sql 查询: select manager_id from employees where lower(last_name) = 'chen' --返回的结果为 108 select * from employees where employee_id = 108 2). 通过一条 sql 查询(自连接): select m.* from employees e, employees m where e.manager_id = m.employee_id and https://www.doczj.com/doc/f88309121.html,st_name = 'Chen' 3). 通过一条 sql 查询(子查询): select * from employees where employee_id = ( select manager_id from employees where last_name = 'Chen' ) 3.查询平均工资高于 8000 的部门 id 和它的平均工资. SELECT department_id, avg(salary) FROM employees e GROUP BY department_id HAVING avg(salary) > 8000 4. 查询工资最低的员工信息: last_name, salary SELECT last_name, salary FROM employees WHERE salary = ( SELECT min(salary) FROM employees ) 5. 查询平均工资最低的部门信息 SELECT * FROM departments WHERE department_id = ( SELECT department_id

二次根式单元测试题经典3套

二次根式单元测试题一 一、 填空题(每题2分,共20分) 1、当a 时, 有意义 2、计算: 3、计算: 4、计算: (a >0,b >0,c >0) 5、计算: = = 6、 7、 则 2006个3 2006个4 8、 9、观察以下各式: 利用以上规律计算: 10、已知 二、 选择题(每题3分,共30分) 11、若32+x 有意义,则 ( ) A 、 B 、 C 、 D 、 12、化简 的结果是 ( ) A 、0 B 、2a -4 C 、4 D 、4-2a 13、能使等式 成立的条件是 ( ) A 、x ≥0 B 、x ≥3 C 、x >3 D 、x >3或x <0 14、下列各式中,是最简二次根式的是 ( ) A 、x 8 B 、b a 25 C 、2294b a + D 、 15、已知 ,那么 的值是 ( ) A 、1 B 、-1 C 、±1 D 、4 16、如果 ,则a 和b 的关系是 ( ) A 、a ≤b B 、a b 17、已知xy >0,化简二次根式 的正确结果为 ( ) A 、 B 、 C 、 D 、 18、如图,Rt △AMC 中,∠C=90°, ∠AMC=30°,AM ∥BN ,MN=2 cm , BC=1cm ,则AC 的长度为 ( ) A 、23cm B 、3cm C 、3.2cm D 、 ()=-2 31)(a -1()=2232)(=??? ? ????? ??--2511)(==-?)()(273 11=73)1(a 38)2(=->2,0xy xy 化简如果=+=+= +222222444333443343,,= +22444333 =+-20062005)12()12(343412323112121-=+-=+-=+,,()= +??? ??++++++++120062005200613412311 21 = ??? ? ?-???? ??+-=+=x y y x 11111313,则,2 3-≥x 23-≤x 32-≥x 32-≤x 2)2 (2-+-a a 3 3-=-x x x x 2 y 51 =+x x x x 1-1212 2-=+-?-b ab a b a 2 x y x -y y -y -y --3M A N B C cm 32 3

尚硅谷大数据技术之ELK

第1章 Elasticsearch 概述 1.1 什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度 != 搜索 1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app 2)IT 系统的搜索:OA 软件,办公自动化软件,会议管理,日程管理,项目管理。 搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息 1.2 如果用数据库做搜索会怎么样? 如果用数据库做搜索会怎么样? select * from products where product_name list “%牙膏%”商品id 商品名称商品描述 1高露洁牙膏2中华牙膏3 佳洁士牙膏4其他牙膏京东商城搜索框 5 …… 1万条 京东商城后台商品表逐条遍历 1)比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符, 这个时候,每次都要对每条记录的所有文本进行扫描,判断包不包含我指定的这个关键词(比如说“牙膏”),效率非常低。 select * from products where product_name list “%生化机%” 2)还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果, 比如输入“生化机”,就搜索不出来“生化危机”。 用数据库来实现搜索,是不太靠 谱的。通常来说,性能会很差的。 1千字的商品描述 1千字的商品描述 用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。 1.3 什么是全文检索和Lucene ? 1)全文检索,倒排索引 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。

《二次根式》典型例题和练习题

《二次根式》分类练习题 二次根式的定义: 【例1】下列各式 其中是二次根式的是_________(填序号). 举一反三: 1、下列各式中,一定是二次根式的是( ) A B C D 2______个 【例2 有意义,则x 的取值范围是 .[来源:学*科*网Z*X*X*K ] 举一反三: 1、使代数式 4 3 --x x 有意义的x 的取值范围是( ) A 、x >3 ??B 、x≥3 C 、 x>4 ??D 、x ≥3且x ≠4 有意义的x的取值范围是 3、如果代数式mn m 1+ -有意义,那么,直角坐标系中点P(m,n )的位置在( ) A 、第一象限 B 、第二象限 C、第三象限 D 、第四象限 【例3】若y =5-x +x -5+2009,则x+y = 举一反三: 2 ()x y =+,则x -y的值为( )

A .-1 B .1 C.2 D .3 2、若x 、y 都是实数,且y=4x 233x 2+-+-,求x y的值 3、当a 1取值最小,并求出这个最小值。 已知a 1 2 a b + +的值。 若3的整数部分是a,小数部分是b,则=-b a 3 。 若17的整数部分为x ,小数部分为y,求y x 1 2+ 的值. 知识点二:二次根式的性质 【例4】若()2 240a c --=,则= +-c b a . 举一反三: 1、若0)1(32 =++-n m ,则m n +的值为 。 2、已知y x ,为实数,且()02312 =-+-y x ,则y x -的值为( ) A .3 ? B .– 3? C.1? D.– 1 3、已知直角三角形两边x 、y 的长满足|x2-4|+652+-y y =0,则第三边长为______. 4、若 1 a b -+互为相反数,则() 2005 _____________ a b -=。 (公式)0((2 ≥=a a a 的运用) 【例5】 化简: 21a -+的结果为( ) A 、4—2a B 、0 C、2a —4 D 、4

01_尚硅谷大数据之HBase简介

第1章HBase简介 1.1 什么是HBase HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE 技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable 利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google 运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。 1.2 HBase中的角色 1.2.1 HMaster 功能: 1) 监控RegionServer 2) 处理RegionServer故障转移 3) 处理元数据的变更 4) 处理region的分配或移除 5) 在空闲时间进行数据的负载均衡 6) 通过Zookeeper发布自己的位置给客户端 1.2.2 RegionServer 功能: 1) 负责存储HBase的实际数据 2) 处理分配给它的Region 3) 刷新缓存到HDFS 4) 维护HLog 5) 执行压缩

6) 负责处理Region分片 1.2.3 其他组件: 1) Write-Ahead logs HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 2) HFile 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 3) Store HFile存储在Store中,一个Store对应HBase表中的一个列族。 4) MemStore 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL 中之后,RegsionServer会在内存中存储键值对。 5) Region Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。 1.3 HBase架构

(完整版)集合练习题及答案-经典

集合期末复习题12.26 姓名 班级________________ 一、选择题(每题4分,共40分) 1、下列四组对象,能构成集合的是 ( ) A 某班所有高个子的学生 B 著名的艺术家 C 一切很大的书 D 倒数等于它自身的实数 2、集合{a ,b ,c }的真子集共有 个 ( ) A 7 B 8 C 9 D 10 3、若{1,2}?A ?{1,2,3,4,5}则满足条件的集合A 的个数是 ( ) A. 6 B. 7 C. 8 D. 9 4、若U={1,2,3,4},M={1,2},N={2,3},则C U (M ∪N )= ( ) A . {1,2,3} B. {2} C. {1,3,4} D. {4} 5、方程组 1 1x y x y +=-=-的解集是 ( ) A .{x=0,y=1} B. {0,1} C. {(0,1)} D. {(x,y)|x=0或y=1} 6、以下六个关系式:{}00∈,{}0??,Q ?3.0, N ∈0, {}{},,a b b a ? , {}2 |20,x x x Z -=∈是空集中,错误的个数是 ( ) A 4 B 3 C 2 D 1 7、点的集合M ={(x,y)|xy≥0}是指 ( ) A.第一象限内的点集 B.第三象限内的点集 C. 第一、第三象限内的点集 D. 不在第二、第四象限内的点集 8、设集合A=}{ 12x x <<,B=}{ x x a <,若A ?B ,则a 的取值范围是 ( ) A }{ 2a a ≥ B }{1a a ≤ C }{1a a ≥ D }{ 2a a ≤ 9、 满足条件M U }{1=}{1,2,3的集合M 的个数是 ( ) A 1 B 2 C 3 D 4 10、集合{}|2,P x x k k Z ==∈,{}|21,Q x x k k Z ==+∈, {}|41,R x x k k Z ==+∈,且,a P b Q ∈∈,则有 ( ) A a b P +∈ B a b Q +∈ C a b R +∈ D a b +不属于P 、Q 、R 中的任意一个 二、填空题 11、若}4,3,2,2{-=A ,},|{2A t t x x B ∈==,用列举法表示B 12、集合A={x| x 2+x-6=0}, B={x| ax+1=0}, 若B ?A ,则a=__________ 13、设全集U={} 22,3,23a a +-,A={}2,b ,C U A={}5,则a = ,b = 。 14、集合{}33|>-<=x x x A 或,{}41|><=x x x B 或,A B ?=____________. 15、已知集合A={x|20x x m ++=}, 若A ∩R=?,则实数m 的取值范围是 16、50名学生做的物理、化学两种实验,已知物理实验做得正确得有40人, 化学实验做得正确得有31人,两种实验都做错得有4人,则这两种实验都做对的有 人.

01_尚硅谷大数据之Hive基本概念

第1章Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层的实现是MapReduce 3)执行程序运行在Yarn上 1.2 Hive的优缺点 1.2.1 优点 1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手) 2)避免了去写MapReduce,减少开发人员的学习成本。 3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合; 4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 1.2.2 缺点 1)Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2)Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive调优比较困难,粒度较粗

1.3 Hive架构原理 HDFS MapReduce Meta store SQL Parser 解析器 Physical Plan 编译器Execution 执行器 Query Optimizer 优化器 Driver CLI JDBC Client Hive 架构 如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。 1)用户接口:Client CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive) 2)元数据:Metastore 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore 3)Hadoop 使用HDFS进行存储,使用MapReduce进行计算。 4)驱动器:Driver (1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。 (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

概率经典测试题及答案

概率经典测试题及答案 一、选择题 1.下列说法正确的是 () A.要调查现在人们在数学化时代的生活方式,宜采用普查方式 B.一组数据3,4,4,6,8,5的中位数是4 C.必然事件的概率是100%,随机事件的概率大于0而小于1 D.若甲组数据的方差2s甲=0.128,乙组数据的方差2s乙=0.036,则甲组数据更稳定 【答案】C 【解析】 【分析】 直接利用概率的意义以及全面调查和抽样调查的意义、中位数、方差的意义分别分析得出答案. 【详解】 A、要调查现在人们在数学化时代的生活方式,宜采用抽查的方式,故原说法错误; B、一组数据3,4,4,6,8,5的中位数是4.5,故此选项错误; C、必然事件的概率是100%,随机事件的概率大于0而小于1,正确; D、若甲组数据的方差s甲2=0.128,乙组数据的方差s乙2=0.036,则乙组数据更稳定,故原说法错误; 故选:C. 【点睛】 此题考查概率的意义,全面调查和抽样调查的意义、中位数、方差的意义,正确掌握相关定义是解题关键. 2.学校新开设了航模、彩绘、泥塑三个社团,如果征征、舟舟两名同学每人随机选择参加其中一个社团,那么征征和舟舟选到同一社团的概率是() A.2 3 B. 1 2 C. 1 3 D. 1 4 【答案】C 【解析】 【分析】 【详解】 用数组(X,Y)中的X表示征征选择的社团,Y表示舟舟选择的社团.A,B,C分别表示航模、彩绘、泥塑三个社团, 于是可得到(A,A),(A,B),(A,C),(B,A),(B,B),(B,C),(C,A),(C,B),(C,C),共9中不同的选择结果,而征征和舟舟选到同一社团的只有(A,A),(B,B),(C,C)三种, 所以,所求概率为31 93 ,故选C.

常用sql操作总结_尚硅谷_宋红康

SQL语句的多表查询方式 例如:按照department_id查询employees(员工表)和departments(部门表) 的信息。 方式一(通用型):SELECT ... FROM ... WHERE SELECT https://www.doczj.com/doc/f88309121.html,st_name,e.department_id,d.department_name FROM employees e,departments d where e.department_id = d.department_id 方式二:SELECT ... FROM ... NATURAL JOIN ... 有局限性:会自动连接两个表中相同的列(可能有多个:department_id和manager_id) SELECT last_name,department_id,department_name FROM employees NATURAL JOIN departments 方式三:SELECT ... JOIN ... USING ... 有局限性:好于方式二,但若多表的连接列列名不同,此法不合适 SELECT last_name,department_id,department_name FROM employees JOIN departments USING(department_id) 方式四:SELECT ... FROM ... JOIN ... ON ... 常用方式,较方式一,更易实现外联接(左、右、满) SELECT last_name,e.department_id,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id --内连接 1) --等值连接 --不等值连接 2) --非自连接 --自连接 --外连接 --左外连接、右外连接、满外连接

初中数学二次根式经典测试题

初中数学二次根式经典测试题 一、选择题 1.5 x+有意义,那么x的取值范围是() A.x≥5B.x>-5 C.x≥-5 D.x≤-5 【答案】C 【解析】 【分析】 先根据二次根式有意义的条件列出关于x的不等式,求出x的取值范围即可. 【详解】 Q式子5 x+有意义, ∴x+5≥0,解得x≥-5. 故答案选:C. 【点睛】 本题考查的知识点是二次根式有意义的条件,解题的关键是熟练的掌握二次根式有意义的条件. 2.二次根式2 a+在实数范围内有意义,则a的取值范围是() A.a≤﹣2 B.a≥﹣2 C.a<﹣2 D.a>﹣2 【答案】B 【解析】 【分析】 a+在实数范围内有意义,则其被开方数大于等于0;分析已知和所求,要使二次根式2 易得a+2≥0,解不等式a+2≥0,即得答案. 【详解】 a+在实数范围内有意义, 解:∵二次根式2 ∴a+2≥0,解得a≥-2. 故选B. 【点睛】 本题是一道关于二次根式定义的题目,应熟练掌握二次根式有意义的条件; 3.下列计算正确的是() A.+=B.﹣=﹣1 C.×=6 D.÷=3 【答案】D 【解析】 【分析】 根据二次根式的加减法对A、B进行判断;根据二次根式的乘法法则对C进行判断;根据二次根式的除法法则对D进行判断.

解:A、B与不能合并,所以A、B选项错误; C、原式= ×=,所以C选项错误; D、原式==3,所以D选项正确. 故选:D. 【点睛】 本题考查二次根式的混合运算:先把二次根式化为最简二次根式,然后进行二次根式的乘除运算,再合并即可.在二次根式的混合运算中,如能结合题目特点,灵活运用二次根式的性质,选择恰当的解题途径,往往能事半功倍. 4.下列式子为最简二次根式的是() A.B.C.D. 【答案】A 【解析】 【分析】 【详解】 解:选项A,被开方数不含分母;被开方数不含能开得尽方的因数或因式, A符合题意;选项B,被开方数含能开得尽方的因数或因式,B不符合题意; 选项C,被开方数含能开得尽方的因数或因式, C不符合题意; 选项D,被开方数含分母, D不符合题意, 故选A. 5.2 (21)12 a a -=-,则a的取值范围是() A. 1 2 a≥B. 1 2 a>C. 1 2 a≤D.无解 【答案】C 【解析】 【分析】 2 (21) a-=|2a-1|,则|2a-1|=1-2a,根据绝对值的意义得到2a-1≤0,然后解不等式即可. 【详解】 2 (21) a-=|2a-1|, ∴|2a-1|=1-2a, ∴2a-1≤0, ∴ 1 2 a≤. 故选:C.

二次根式知识点及典型例题练习

第十六章 二次根式 知识点: 1、二次根式的概念:形如(a ≥0)的式子叫做二次根式。“”= “”,叫做二次根号,简称根号。根号下面的整体“a ”叫做被开方数。 2、二次根式有意义的条件:a ≥0; 二次根式没有意义的条件:a 小于0; 例1、 a +1表示二次根式的条件是______。 例2、已知y=2x -+2x -+5,求x y 的值。 例3、若1a ++1b -=0,求a 2004+b 2004的值。 例4、 当x ______时,12--x 有意义,当x ______时,3 1+x 有意义。 例5、若无意义2+x ,则x 的取值范围是______。 例6、(1)当x 是多少时,31x -在实数范围内有意义? (2)当x 是多少时, 2x 在实数范围内有意义?3x 呢? 3、二次根式的双重非负性: ≥0;a ≥0 。 例1、 已知+ =0,求x,y的值. 例2、 若实数a、b满足 +=0,则2b-a+1=___. 例3、 已知实a满足,求a-2010的值. 例4、 在实数范围内,求代数式 的值. 例5、 设等式=在实数范围内成立,其中a、x、y是两两不同的实数,求的值. 例6、已知9966 x x x x --=--,且x 为偶数,求(1+x )22541x x x -+-的值. 4、二次根式的性质: (3)

例1、(1) ()25.1=________ (2) ()252 =________ (3) ()2 2.0-=________ (4) 272??? ? ??=________ 例2、化简 (1)9=_____ (2)2(4)-=_____ (3)25=_____ (4)2 52??? ??--=_____ (4)2(3)- =_____ 例3.(1)若2a =a ,则a 可以是什么数? (2)若2a =-a ,则a 是什么数? (3)2a >a ,则a 是什么数? 例4.当x>2,化简2(2)x --2(12)x -. 5、积的算术平方根的性质 (a ≥0,b ≥0)即两个非负数的积的算术平方根,等于积中各因式的 算术平方根的积。 , 6、商的算术平方根的性质 (a ≥0,b >0) 商的算术平方根,等于被除式的算术平方根除以除式的算术平方根。 。 例1、计算 (1)57 (2139(3927 (412 6 例2、化简 (1916?(21681?(3229x y (4)54

经典IQ测试题及答案

国内经典IQ测试题 1、选出不同类的一项: A、蛇 B、大树 C、老虎 2、在下列分数中,选出不同类的一项: A 3/5 B 3/7 C 3/9 3、男孩对男子,正如女孩对 A青年B孩子C夫人D姑娘E妇女 4、如果笔相对于写字,那么书相对于 A娱乐B阅读C学文化D解除疲劳 5、马之于马厩,正如人之于 A牛棚B马车C房屋D农场E楼房 6、 2 8 14 20 ()请写出"()"处的数字。 7、下列四个词是否可以组成一个正确的句子 生活水里鱼在A是B否 8、下列六个词是否可以组成一个正确的句子 球棒的用来是棒球打A是B否 9、动物学家与社会学家相对应,正如动物与()相对 A人类B问题C社会D社会学 10、如果所有的妇女都有大衣,那么漂亮的妇女会有 A更多的大衣B时髦的大衣C大衣D昂贵的大衣 11、 1 3 2 4 6 5 7 (),请写出"()"处的数字 12、南之于西北,正如西之于:A西北B东北C西南D东南 13、找出不同类的一项A铁锅B小勺C米饭D碟子 14、9 7 8 6 7 5 (),请写出"()"处的数字 15、找出不同类的一项:A写字台B沙发C电视D桌布 16、961 (25)432 932 ()731 ,请写出()内的数字 17、选项ABCD中,哪一个应该填在"XOOOOXXOOOXXX"后面

AXOO BOO COOX DOXX 18、望子成龙的家长往往()苗助长 A揠B堰C偃 19、填上空缺的词:金黄的头发(黄山)刀山火海 赞美人生()卫国战争 20、选出不同类的一项:A地板B壁橱C窗户D窗帘 21、 1 8 27 (),请写出()内的数字。 22、填上空缺的词:罄竹难书(书法)无法无天 作奸犯科()教学相长 23、在括号内填上一个字,使其与括号前的字组成一个词,同时又与括号后的字 也能组成一个词:款()样 24、填入空缺的数字 16(96)12 10()7.5 25找出不同类的一项:A斑马B军马C赛马D骏马E驸马 26、在括号上填上一个字,使其与括号前的字组成一个词,同时又与括号后的字 也能组成一个词:祭()定 27、在括号内填上一个字,使之既有前一个词的意思,又可以与后一个词组成词 组:头部()震荡 28、填入空缺的数字 65 37 17 () 29、填入空缺的数字 41(28)27 83()65 30、填上空缺的字母 CFI DHL EJ() 计算方法:每题答对得5分,答错不得分。共30题,总分150分。 智商>在140分以上者称为天才;120~140之间为最优秀;100~120之间为优秀;90~100之间>为常才;80~90之间为次正常答案如下:1、B 2、C 3、E 4、B 5、C 6、 26 7、A8、A9、A10、C 11、9 12、B 13、C 14、6 15、 D 16、38 17、B 18、A19、美国20、D 21、64 22、科学23、式24、 60 25、E 26、奠27、脑28、5 29、36 30、O

宋红康_尚硅谷_Java常用英语汇总

Java常用英语汇总 abstract (关键字) 抽象['.bstr.kt] access vt.访问,存取['.kses]'(n.入口,使用权) algorithm n.算法['.lg.riem] annotation [java]代码注释[.n.u'tei..n] anonymous adj.匿名的[.'n.nim.s]' (反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用[.'plai] application n.应用,应用程序[,.pli'kei..n]' (application crash 程序崩溃) arbitrary a.任意的['ɑ:bitr.ri] argument n.参数;争论,论据['ɑ:gjum.nt]'(缩写args) assert (关键字) 断言[.'s.:t] ' (java 1.4 之后成为关键字) associate n.关联(同伴,伙伴) [.'s.u.ieit] attribute n.属性(品质,特征) [.'tribju:t] boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫; [k.:l] circumstance n.事件(环境,状况) ['s.:k.mst.ns] crash n.崩溃,破碎[kr..] cohesion 内聚,黏聚,结合[k.u'hi:..n] a class is designed with a single, well-focoused purpose. 应该不止这点command n. 命令,指令[k.'mɑ:nd](指挥, 控制) (command-line 命令行) Comments [java]文本注释['k.ments] compile [java] v.编译[k.m'pail]' Compilation n.编辑[,k.mpi'lei..n] const (保留字) constant n. 常量, 常数, 恒量['k.nst.nt] continue (关键字) coupling 耦合,联结['k.pli.] making sure that classes know about other classes only through their APIs. declare [java]声明[di'kl..]

尚硅谷大数据技术之数仓开发规范

1.背景 为了避免底层业务变动对上层需求影响过大,屏蔽底层复杂的业务逻辑,尽可能简单、完整的在接口层呈现业务数据,建设高内聚松耦合的数据组织,使数据从业务角度可分割,显得尤为重要。从整个集团业务条线出发,形成数据仓库总体概念框架,并对整个系统所需要的功能模块进行划分,明确各模块技术细节,建设一套完整的开发规范。 2.分层规范 ODS(原始数据层):ODS层是数据仓库准备区,为DWD层提供基础原始数据。 DWD(明细数据层):和ODS粒度一致的明细数据,对数据进行去重,脏数据过滤,空处理,保证数据质量。 DWS(服务数据层):轻度汇总数据及建宽表(按主题)存放数据。 ADS(应用数据层):存放应用类表数据。 3.表规范 3.1 命名 维表命名形式:dim_描述 事实表命名形式:fact_描述_[AB] 临时表命名形式:tmp_ 正式表名_ [C自定义序号] 宽表命名形式:dws_主题_描述_[AB] 备份表命名形式:正式表名_bak_yyyymmdd 表命名解释: 1)表名使用英文小写字母,单词之间用下划线分开,长度不超过40个字符,命名一般控制在小于等于6级。 2)其中ABC第一位"A"时间粒度:使用"c"代表当前数据,"h"代表小时数据,"d"代表天

数据,"w"代表周数据,"m"代表月数据,"q"代表季度数据, "y"代表年数据。 3)其中ABC的第二位"B"表示对象属性,用"t"表示表,用"v"表示视图。 4)其中ABC的第三位"C"自定义序号用于标识多个临时表的跑数顺序。 3.2 注释 注释要结合表的英文名,要求注释简洁明了,体现出表的业务出处、主题和用途。3.3 存储格式 所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。在数仓中建表默认用的都是PARQUET存储格式,相关语句如下所示:STORED AS INPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat’ OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat’ 3.5 字符集 Hadoop和hive 都是用utf-8编码的,在建表时可能涉及到中文乱码问题,所以导入的文件的字符编码统一为utf-8格式。 3.6 约定 理论上在数仓落地的表不应该出现null未知类型,对于可能出现null的字段,如果为字符型统一为空字符串,如果是数值则给0。 4.字段规范 4.1 命名

一年级阅读理解测试题及答案经典

阅读理解测试题及答案经典 一、一年级语文上册阅读理解练习 1.看图,和大人一起读《如果我有很长很长的尾巴》,再完成练习。 尾巴呀尾巴,如果我有一条很长很长的尾巴…… 就可以帮河马哥哥拔掉那颗又疼又讨厌的蛀牙。 尾巴呀尾巴,如果我有一条很长很长的尾巴…… 就可以帮鳄鱼宝宝量量它那越来越大的个头儿了。 尾巴呀尾巴,如果我有一条很长很长的尾巴…… 就可以穿一只长长的传声筒,让高高的长颈鹿姐姐和大伙儿聊天啦! 尾巴呀尾巴,如果我有一条很长很长的尾巴…… 就可以钓条大大的鱼儿请小伙伴吃美餐啦! 尾巴呀尾巴,如果我有一条很长很长的尾巴…… 就可以一边倒立,一边放风筝喽! 嘿嘿,快瞧,我的风筝飞得最棒啦! (1)小老鼠如果有一条很长很长的尾巴,它可以做哪些事呢?根据文章内容连一连。 帮河马哥哥________ 量个头儿 帮鳄鱼宝宝________ 和大伙儿聊天 帮长颈鹿姐姐________ 拔掉蛀牙 (2)如果你也有一条很长很长的尾巴,你会干什么呢?和大人一起说一说,再仿照文中的句子写下来。 【答案】(1)拔掉蛀牙;量个头儿;和大伙儿聊天 (2)尾巴呀尾巴,如果我有一条很长很长的尾巴……就可以在森林里自由地荡秋千啦! 【考点】句子排序、仿写,课文内容理解,诗 【解析】 2.阅读下面的小短文,回答问题。四个太阳 我画了个绿色的太阳,照着夏天。高山、田野、大马路,到处一片清凉。 我画了个金黄的太阳,送给秋天。果园里,果子熟了。金黄的落叶忙着邀请小伙伴,尝尝水果的香甜。 我画了个红红的太阳,挂在冬天,温暖着娃娃们冻僵的手和脸。 春天,春天的太阳该画什么颜色?噢,画个彩色的。春天,是最美的季节。 (1)读读看,在作者笔下四季的太阳分别是什么颜色的?为什么? 冬天的太阳是________色的,因为________ 秋天的太阳是________色的,因为________ 夏天的太阳是________色的,因为________

人教版初中数学二次根式经典测试题及答案

人教版初中数学二次根式经典测试题及答案 一、选择题 1.下列各式中,不能化简的二次根式是( ) A B C D 【答案】C 【解析】 【分析】 A 、 B 选项的被开方数中含有分母或小数;D 选项的被开方数中含有能开得尽方的因数9;因此这三个选项都不是最简二次根式.所以只有 C 选项符合最简二次根式的要求. 【详解】 解:A =,被开方数含有分母,不是最简二次根式; B = ,被开方数含有小数,不是最简二次根式; D =,被开方数含有能开得尽方的因数,不是最简二次根式; 所以,这三个选项都不是最简二次根式. 故选:C . 【点睛】 在判断最简二次根式的过程中要注意: (1)在二次根式的被开方数中,只要含有分数或小数,就不是最简二次根式; (2)在二次根式的被开方数中的每一个因式(或因数),如果幂的指数大于或等于2,也不是最简二次根式. 2.下列各式计算正确的是( ) A 1082 ==-= B . ()() 236= =-?-= C 115236==+= D .54 ==- 【答案】D 【解析】 【分析】 根据二次根式的性质对A 、C 、D 进行判断;根据二次根式的乘法法则对B 进行判断. 【详解】 解:A 、原式,所以A 选项错误;

B 、原式=49?=49?=2×3=6,所以B 选项错误; C 、原式=1336=136 ,所以C 选项错误; D 、原式255164=- =-,所以D 选项正确. 故选:D . 【点睛】 本题考查了二次根式的混合运算:先把二次根式化为最简二次根式,然后进行二次根式的乘除运算,再合并即可.在二次根式的混合运算中,如能结合题目特点,灵活运用二次根式的性质,选择恰当的解题途径,往往能事半功倍. 3.实数a ,b 在数轴上对应点的位置如图所示,化简|a |+2(a b )-的结果是( ) A .2a+b B .-2a+b C .b D .2a-b 【答案】B 【解析】 【分析】 根据数轴得出0a <,0a b -<,然后利用绝对值的性质和二次根式的性质化简. 【详解】 解:由数轴可知:0a <,0b >, ∴0a b -<, ∴()()22a a b a b a a b -=-+-=-+, 故选:B . 【点睛】 本题考查了数轴、绝对值的性质和二次根式的性质,根据数轴得出0a <,0a b -<是解题的关键. 4.已知实数a 满足20062007a a a --=,那么22006a -的值是( ) A .2005 B .2006 C .2007 D .2008 【答案】C 【解析】 【分析】 先根据二次根式有意义的条件求出a 的取值范围,然后去绝对值符号化简,再两边平方求出22006a -的值. 【详解】 ∵a-2007≥0,

尚硅谷大数据项目之实时项目2(日活需求)

第1章实时处理模块 1.1 模块搭建 添加scala框架 1.2 代码思路 1)消费kafka中的数据; 2)利用redis过滤当日已经计入的日活设备; 3)把每批次新增的当日日活信息保存到HBASE或ES中;

4)从ES中查询出数据,发布成数据接口,通可视化化工程调用。 1.3 代码开发1 ---消费Kafka 1.3.1 配置 1)config.properties # Kafka配置 kafka.broker.list=hadoop102:9092,hadoop103:9092,hadoop104:9092 # Redis配置 redis.host=hadoop102 rdis.port=6379 2)pom.xml com.atguigu.gmall2019.dw dw-common 1.0-SNAPSHOT org.apache.spark spark-core_2.11 org.apache.spark spark-streaming_2.11 org.apache.kafka kafka-clients 0.11.0.2 org.apache.spark spark-streaming-kafka-0-8_2.11 redis.clients jedis 2.9.0 io.searchbox

经典的智力测试题及答案

经典的智力测试题及答案 1 有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间? 答案:一只两头点燃,另一只一头点燃,当第一只烧完后,第二只丙再头点燃,就可以得到15` 2 一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么? 答案:2,2,9,因为只有36 = 6*6*1 36 = 9 * 2 * 2 3 有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30, 第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人, 谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元, 于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那么还有$1呢?

答案:怎么会是每人第天九元呢,每人每天(25/3) + 1,那一元差在25 - 24 = 1 4 有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同, 而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?答案:每人取每双中的一只就可以了 5 有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从洛杉矶出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟飞行了多长距离? 答案:(D / 35 ) * 30 = D 6 你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少? 答案:自己睁着眼睛挑一个红色的啊,这样是给红色最大的机会了,除了你是色盲,呵呵,当然他们的几率都是1/2。

相关主题
文本预览
相关文档 最新文档