oracle对查询结果求和_oracle基础知识分享

0019bb66e8a487e1f2eac1bd645a2bb6.png

原文链接:https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0

以下是本人整理的ORACLE学习的一些基本的语法知识,如有不对的地方,望大家批评指正,如有转载请注明出处:

d4747e4051f67e9c30cb47739cbc753a.png

一、ORACLE完整性约束:

1.NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.

2.CHECK (检查)--检查在约束中指定的条件是否得到了满足.

3.UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.

4.PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.

5.POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.

二、一些常用的关键字及用法规范

1--设置每行显示多少字符 set linesize 300;

2 设置每页显示多少条记录 set pagesize 30;

3 用户名的切换: 如 conn system/tiger

Conn sys/change_on_install as sysdba(注意超级用户 在后面加as sysdba)

4 在超级用户下查找普通用户的表是查不到的 必须这样查找 如 select * from scott.emp(普通用户下的emp表)

5 查看当前是那个用户身份登录: show user;

6 查看有多少张表: select * from tab;(注意不同用户下的表是不同的)

7查看表的结构: desc emp(emp为表名)

8 取出重复的列(DISTINCT): 如 SELECT DISTINCT JOB EMP(去掉job的重复的值)

9字符串的链接操作用: ||

10 查询有奖金的员工: select* from emp where comm is not null;

11 查询没有奖金的员工信息: select * from emp where comm is null;

12 两个条件以上就得用and 如查询工资大雨1500和有奖金的员工 select * from emp where sal>1500 and comm is not null;

13 表示两个条件有一个满足就可就用:or 如查询工资大于1500或者没有奖金的员工信息

Select * from emp where sal>1500 or comm is not null;

14取反可以用not 如 查询员工工资不大于1500和有奖金的员工信息 如:

Select * from emp where not (sal>1500 or comm is not null);

15 在什么什么之间用between----and----如查询工资在1500和3000之间的员工信息:

Select * from emp where sal between 1500 and 3000;

16 查询员工编号是2323, 4555, 2222的员工具体信息: 如

Select * from emp where empno in(2323,4555,2222);

17.l模糊查询 like 一般结合"%"和"_"使用其中%:表示可以匹配任意长度的内容,"_"表示匹配一个长度放入内容 如: 查询员工姓名中第二哥字母是M的员工信息:

Select * from emp where ename LIKE '_M%';

又如姓名中包含M的员工 Select * from emp where ename LIKE '%M%';

18oracle中不等于有两种表示方式""和"!="

19 排序用order by 其中asc 是升序排列 如果不写就默认按升序排列desc是按降序排列 排序语句放在sal语句的最后如: 按员工工资进行排序

Select * from emp order by sal asc(升序)

Selecct * from emp order by sal desc(降序)

Select * from emp where deptno='10' order by sal desc,hiredate asc;(查询部门10的员工工资的升序排列如果工资相等就按员工的入职时间排序)

20.group by 用于对查询的结果进行分组统计: 显示每个部门的平均工资和最高工资 如:

Select avg(sal),max(sal) from emp group by deptno;

Having 子句用于限制分组显示结果: 显示平均工资大于2000的的部门号和他的平均工资?

如:select avg(sal), deptno from emp group by deptno having avg(sal)>2000;

2. 单行函数:

1 小写变大写: upper 如 select * from emp where ename=upper('smith');

讲一个字符串变为小写字母表示 如: select lower('HELLO WORLD') FROM DUAL;

将单词的首字母变大写 用 INITCAP 如: SELECT INITCAP('HELLO WORLD') FROM DUAL;

2.字符串的操作

Substr()截取字符串 length()字符串的长度 replace()替换字符串

3数值函数

四舍五入: round(); 截断小数位:trunc();

三、一些基本语法

1.使用命令行创建表

使用命令行创建表的关键字是CREATE TABLE,其简单语法如下:

CREATE TABLE table_name(

column_name type[CONSTRAINT constraint_def DEFAULT default_exp]

[,column_name type[CONSTRAINT constraint_def DEFAULT default_exp]...]

)

[ON COMMIT(DELETE|PRESERVE ROWS]

[ORGANIZITION]

[PARTITION BY...(...)]

[TABLESPACE tablespace_name]

[LOGGING|NOLOGGING]

[COMPRESS|NOCOMPRESS];

·table_name:指定要分配给该表的名称。

·column_name:指定要分配给某个列的名称。

·type:指定某个列的类型。

·constraint_def:指定对某个列的约束。

·default_exp:指定一个表达式,用来为某个列赋予默认值。

2.修改表的结构

修改表的基本语法如下:

ALTER TABLEtable_name

ADD column_name|MODIFY column_name|DROP COLUMN column_name

·:表示当学习了如何创建用户后,从安全的角度考虑,需要为表指定其所属的用户。

·ADD:向表中添加列。

·MODIFY:修改表中已存在的列的信息。

·DROP COLUMN:删除表中的列,在删除表中的列时如果加上CASCADE CONSTERAINTS,表示把与该列有关的约束也一并删除。

3.重命名表

在创建表后,如果想要修改表的名称,可以对表进行重命名。

如:将表Sys_User重命名为用户信息

ALTER TABLE Sys_User

RENAME TO 用户信息;

4.删除表

用户经常需要删除一些不需要的表,可使用删除表语句DROP TABLE来完成,语法如下:

DROP TABLE table_name

5.插入数据

使用INSERT语句可向指定表中插入数据。INSERT语法的基本结构如下:

INSERT INTO(column_name1,column_name2...,column_name n)

VALUSE(values 1,values 2,...,values n)

其中,column_name 1,column_name2,...,column_name n必须是指定表名中定义的列,

而且必须和VALUES字句中的值values 1,values 2,...,values n一一对应,且数据类型相同。

6.更新数据

使用UPDATE命令修改表中的数据

UPDATESET column_name 1=values 1,column_name 2=values 2,...,column_name n=values n

WHERE search_conditions

如果不带where子句,则表中的所有行都将被更新。

7.删除数据

使用DELETE命令删除表中的数据

DELETE FROM table_name[WHERE search_conditions]

如果省略了WHERE search_conditions子句,就表示删除数据表中全部的数据;如果加上了WHERE search_conditions子句就可以根据条件删除表中的数据。

四、Oracle数据库入门基础知识

1. 创建表空间

create tablespace schooltbs datafile ‘D:oracledatasourceschooltbs.dbf’ size 10M autoextend on;

2. 删除表空间

drop tablespace schooltbs[including contents and datafiles];

3. 查询表空间基本信息

select *||tablespace_name from DBA_TABLESPACES;

4. 创建用户

create user lihua

identified by lihua

default tablespace schooltbs

temporary tablespace temp;

5. 更改用户

alter user lihua

identified by 123

default tablespace users;

6. 锁定用户

alter user lihua account lock|unlock;

7. 删除用户

drop user lihua cascade;--删除用户模式

8. oracle数据库中的角色

connect,dba,select_catalog_role,delete_catalog_role,execute_catalog_role,exp_full_database,imp_full_database,resource

9. 授予连接服务器的角色

grant connect to lihua;

10.授予使用表空间的角色

grant resource to lihua with grant option;--该用户也有授权的权限

11.授予操作表的权限

grant select,insert on user_tbl to scott;--当前用户

grant delete,update on lihua.user_tbl to scott;--系统管理员

12.修改表的结构(alter)

Alter table 表名 add(列的名称,列的类型);

五、SQL查询和SQL函数

1.SQl支持的命令:

数据定义语言(DDL):create,alter,drop

数据操纵语言(DML):insert,delete,update,select

数据控制语言(DCL):grant,revoke

事务控制语言(TCL):commit,savepoint,rollback

2.Oracle数据类型

字符,数值,日期,RAW,LOB

字符型

char:1-2000字节的定长字符

varchar2:1-4000字节的变长字符

long:2GB的变长字符

注意:一个表中最多可有一列为long型

Long列不能定义唯一约束或主键约束

long列上不能创建索引

过程或存储过程不能接受long类型的参数。

数值型

number:最高精度38位

日期时间型

date:精确到ss

timestamp:秒值精确到小数点后6位

函数

sysdate,systimestamp返回系统当前日期,时间和时区。

更改时间的显示

alter session set nls_date_language=’american’;

alter session set nls_date_format=’yyyy-mm-dd’;

Oracle中的伪列

像一个表列,但没有存储在表中

伪列可以查询,但不能插入、更新和修改它们的值

常用的伪列:rowid和rownum

rowid:表中行的存储地址,可唯一标示数据库中的某一行,可以使用该列快速定位表中的行。

rownum:查询返回结果集中的行的序号,可以使用它来限制查询返回的行数。

3.数据定义语言

用于操作表的命令

create table

alter table

truncate table

drop table

修改表的命令

alter table stu_table rename to stu_tbl;--修改表名

alter table stu_tbl rename column stu_sex to sex;--修改列名

alter table stu_tbl add (stu_age number);--添加新列

alter table stu_tbl drop(sex);--删除列

alter table stu_tbl modify(stu_sex varchar2(2));--更改列的数据类型

alter table stu_tbl add constraint pk_stu_tbl primary key(id);--添加约束

4.数据操纵语言

select,update,delete,insert

利用现有的表创建表

create table stu_tbl_log as select id,stu_name,stu_age from stu_tbl;--

选择无重复的行

select distinct stu_name from stu_tbl;--

插入来自其他表中的记录

insert into stu_tbl_log select id,stu_name,stu_age from stu_tbl;

5.数据控制语言

grant,revoke

6.事务控制语言

commit,savepoint,rollback

7.SQL操作符

算术操作符:L+-*/

比较操作符:L=,!=,,>,=,

逻辑操作符:Land,or,not

集合操作符:Lunion,union all,intersect,minus

连接操作符:L||

8.SQL函数

单行函数:从表中查询的每一行只返回一个值,可出现在select子句,where子句中

日期函数

数字函数

字符函数

转换函数:ToChar(),ToDate(),ToNumber()

其他函数:

Nvl(exp1,exp2):表达式一为null时,返回表达式二

Nvl2(exp1,exp2,exp3):表达式一为null时返回表达式三,否则返回表达式二

Nullif(exp1,exp2):两表达式相等时,返回null,否则返回表达式一

分组函数:基于一组行来返回

Avg,Min,Max,Sum,Count

Group by,having

分析函数

Row_number,rank,dense_rank

示例:

select u.user_name,sum(oi.order_num*oi.order_price) as total,row_number() over (order by sum(oi.order_num*oi.order_price) desc) as sort from order_item_tbl

oi,user_tbl u,order_tbl o where oi.order_id = o.id and o.user_id = u.id group by u.user_name;

六.锁和数据库对象

1.锁:数据库用来控制共享资源并发访问的机制。

锁的类型:行级锁,表级锁

行级锁:对正在被修改的行进行锁定。行级锁也被称之为排他锁。

在使用下列语句时,Oracle会自动应用行级锁:

insert,update,delete,select…… for update

select……for update允许用户一次锁定多条记录进行更新。

使用commit or rollback释放锁。

表级锁:

lock table user_tbl in mode mode;

表级锁类型:

行共享 row share

行排他 row exclusive

共享 share

共享行排他 share row exclusive

排他 exclusive

死锁:两个或两个以上的事务相互等待对方释放资源,从而形成死锁

2.数据库对象

oracle数据库对象又称模式对象

数据库对象是逻辑结构的集合,最基本的数据库对象是表

数据库对象:

表,序列,视图,索引

序列

用于生成唯一,连续序号的对象。

创建语法:

create sequence user_id_seq

start with 1000

increment by 1

maxvalue 2000

minvalue 1000

nocycle

cache 1000;--指定内存中预先分配的序号

访问序列:

select user_id_seq.currval from dual;

select user_id-seq.nextval from dual;

更改删除序列:

alter sequence user_id_seq maxvalue 10000;--不能修改其start with 值

drop sequence user_id_seq;

在Hibernate中访问序列:

user_id_seq

视图

以经过定制的方式显示来自一个或多个表的数据

创建视图:

create or replace view

user_tbl_view (vid,vname,vage)

as select id,user_name,age from user_tbl

[with check option]|[with read only];

创建带有错误的视图:

create force view user_tbl_force_view as

select * from user_table;--此时user_table可以不存在

创建外联接视图:

create view user_stu_view as

select u.id,u.user_name,u.password,s.ddress

from user_tbl u,stu_tbl s

where u.s_id(+)=s.id;--哪一方带有(+),哪一方就是次要的

删除视图:

drop user_stu_view;

索引

用于提高SQL语句执行的性能

索引类型:

唯一索引,位图索引,组合索引,基于函数的索引,反向键索引

创建标准索引:

create index user_id_index on user_tbl(id) tablespace schooltbs;

重建索引:

alter index user_id_index rebuild;

删除索引:

drop index user_id_index;

创建唯一索引:

create unique index user_id_index on user_tbl(id);

创建组合索引:

create index name_pass_index on user_tbl(user_name,password);

创建反向键索引:

create index user_id_index on user_tbl(id) reverse;

七.使用PL/SQL

22ccb96d91a3b11f0e91de75bfed17aa.png

可用于创建存储过程,触发器,程序包,给SQL语句的执行添加程序逻辑。

支持SQL,在PL/SQL中可以使用:

数据操纵命令

事务控制命令

游标控制

SQL函数和SQL运算符

支持面向对象编程(OOP)

可移植性

更佳的性能,PL/SQL经过编译执行

分为三个部分:声明部分,可执行部分和异常处理部分

[declare

declarations]

begin

executable statements

[exception

handlers]

end;

打开输出

set serverout on;

--根据输入编号获取某学员的成绩--if

declare

score user_tbl.score%type;

begin

select score into score from user_tbl where id='&id';

if score>90 then

dbms_output.put_line('优秀');

elsif score>80 then

dbms_output.put_line('良好');

elsif score>60 then

dbms_output.put_line('及格');

else

dbms_output.put_line('差');

end if;

end;

--根据学员姓名获取某学员的成绩--if

declare

score user_tbl.score%type;

begin

select score into score from user_tbl where user_name='&name';

if score>90 then

dbms_output.put_line('优秀');

elsif score>80 then

dbms_output.put_line('良好');

elsif score>60 then

dbms_output.put_line('及格');

else

dbms_output.put_line('差');

end if;

end;

--case的使用

declare

grade user_tbl.grade%type;

begin

select grade into grade from user_tbl where id='&id';

case grade

when 'A' then dbms_output.put_line('优异');

when 'B' then dbms_output.put_line('优秀');

when 'C' then dbms_output.put_line('良好');

else dbms_output.put_line('一般');

end case;

end;

--基本循环

declare

i number(4):=1;

begin

loop

dbms_output.put_line('loop size:'||i);

i:=i+1;

exit when i>10;

end loop;

end;

--while循环

declare

i number(4):=1;

begin

while i

dbms_output.put_line('while loop size='||i);

i:=i+1;

end loop;

end;

--for循环

declare

i number(4):=1;

begin

for i in 1..10 loop

dbms_output.put_line('for loop Size:'||i);

end loop;

end;

declare

i number(2):=1;

j number(2):=1;

begin

for i in reverse 1..9 loop

for j in 1..i loop

dbms_output.put(j||'x'||i||'='||j*i||' ');

end loop;

dbms_output.put_line('');

end loop;

end;

--动态SQL

declare

userId number(2);

sql_str varchar2(100);

userName user_tbl.user_name%type;

begin

execute immediate 'create table testExe(id number,test_name varchar2(20))';

userId:='&userId';

sql_str:='select user_name from user_tbl where id=:id';

execute immediate sql_str into userName using userId;

dbms_output.put_line(userName);

end;

(or

declare

id_param number:='&id_param';

sql_str varchar2(100);

name_param stu_tbl.stu_name%type;

begin

sql_str:='select stu_name from stu_tbl where id=:p';

execute immediate sql_str into name_param using id_param;

dbms_output.put_line(name_param);

end;

/)

--异常处理

declare

grade number(4);

begin

grade:='&grade';

case grade

when 1 then dbms_output.put_line('好的');

--else dbms_output.put_line('不好');

end case;

exception

when case_not_found then

dbms_output.put_line('输入类型不匹配!');

end;

--系统异常

declare

rowD user_tbl%rowtype;

begin

select * into rowD from user_tbl;

dbms_output.put_line(rowD.id||''||rowD.user_name||' '||rowD.password);

exception

when too_many_rows then

dbms_output.put_line('不能将多行赋予一个属性!');

end;

or

declare

rowD user_tbl%rowtype;

begin

select * into rowD from user_tbl where id=5;

dbms_output.put_line(rowD.id||' '||rowD.user_name||' '||rowD.password);

exception

when too_many_rows then

dbms_output.put_line('不能将多行赋予一个属性!');

when no_data_found then

dbms_output.put_line('没有您要查找的数据!');

end;

--自定义错误

declare

invalidError exception;

category varchar2(20);

begin

category:='&category';

if category not in('附件','顶盘','备件') then

raise invalidError;

else

dbms_output.put_line('您输入的类别是:'||category);

end if;

exception

when invalidError then

dbms_output.put_line('无法识别的类别!');

end;

--引发应用程序异常

declare

app_exception exception;

grade user_tbl.grade%type;

begin

select grade into grade from user_tbl where id=&id;

if grade='A' then

raise app_exception;

else

dbms_output.put_line('查询的等级为:'||grade);

end if;

exception

when app_exception then

raise_application_error(-20001,'未知的等级!');

end;

八、游标管理

游标类型:隐式游标,显式游标,REF游标

REF游标用于处理运行时才能确定的动态SQL查询的结果

隐式游标

在PL/SQL中使用DML语句时自动创建隐式游标

隐式游自动声明、打开和关闭,其名为SQL

隐式游标的属性:

%found SQL语句影响实质后返回true

%notfound SQL语句没有影响实质后返回true

%rowcount SQL语句影响的行数

%isopen 游标是否打开,始终为false

示例:

begin

update user_tbl set score=score+5;

if SQL%found then

dbms_output.put_line('数据被更改: '||SQL%rowcount);

elsif sql%notfound then

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

end if;

if SQL%isopen then

dbms_output.put_line('Open');

else

dbms_output.put_line('Close');

end if;

end;

显式游标

在PL/SQL的声明部分定义查询,该查询可以返回多行

J 声明游标

J 打开游标

J 从游标中取回数据

J 关闭游标

声明游标完成两个任务:

给游标命名

将一个查询与游标关联

cursor cursor_name is select statement;

打开游标:

open cursor_name;

取数据:

fetch cursor_name into record_list;

关闭游标:

close cursor_name;

显式游标的属性:

%found 执行最后一条fetch语句成功返回行时为true

%notfound 执行最后一条fetch语句未能返回行时为true

%rowcount 返回到目前为止游标提取的行数

%isopen 游标是否打开

示例:

declare

users user_tbl%rowtype;

cursor boys_cur is select * from user_tbl where sex='h';

begin

open boys_cur;

loop

fetch boys_cur into users;

exit when boys_cur%notfound;

dbms_output.put_line(users.user_name||' '||users.password);

dbms_output.put_line(boys_cur%rowcount);

end loop;

close boys_cur;

end;

带参的显式游标

declare

users user_tbl%rowtype;

cursor boys_cur(sexParam varchar2)

is select * from user_tbl where sex=sexParam;

begin

open boys_cur('&sex');

loop

fetch boys_cur into users;

exit when boys_cur%notfound;

dbms_output.put_line(users.user_name||' '||users.password);

dbms_output.put_line(boys_cur%rowcount);

end loop;

close boys_cur;

end;

使用显式游标更新行

declare

cursor user_update_cur is select sex from user_tbl for update;

usersex user_tbl.sex%type;

begin

open user_update_cur;

loop

fetch user_update_cur into usersex;

exit when user_update_cur%notfound;

dbms_output.put_line(usersex);

if usersex = 'M' then

update user_tbl set score=score-5 where current of user_update_cur;

else

update user_tbl set score=score+5 where current of user_update_cur;

end if;

end loop;

close user_update_cur;

commit;

end;

循环游标

declare

cursor user_cur is select * from user_tbl;

begin

for username in user_cur loop

dbms_output.put_line(username.user_name||' '||username.sex);

end loop;

end;

REF游标

REF游标和游标变量用于处理运行时动态执行的SQL查询

创建游标变量的步骤:

J 声明REF游标类型

J 声明REF游标类型的变量

声明类型的语法

Type ref_cursor_name is ref cursor [return return_type];

打开游标变量的语法

Open cursor_name for select_statement;

----声明强类型的游标

declare

type ref_cur is ref cursor return user_tbl%rowtype;

users_cur ref_cur;

----声明弱类型的游标

declare

type ref_cur is ref cursor;

users_cur ref_cur;

示例

----强类型

declare

type ref_cur is ref cursor return user_tbl%rowtype;

users_cur ref_cur;

users user_tbl%rowtype;

begin

open users_cur for select * from user_tbl where user_name='ny2t92';

loop

fetch users_cur into users;

exit when users_cur%notfound;

dbms_output.put_line(users.user_Name);

end loop;

close users_cur;

end;

----弱类型

declare

type ref_cur is ref cursor;

my_cur ref_cur;

users user_tbl%rowtype;

stus stu_tbl%rowtype;

begin

open my_cur for select * from user_tbl;

loop

fetch my_cur into users;

exit when my_cur%notfound;

dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

open my_cur for select * from user_tbl where user_name='ny2t92';

loop

fetch my_cur into users;

exit when my_cur%notfound;

dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

open my_cur for select * from stu_tbl;

loop

fetch my_cur into stus;

exit when my_cur%notfound;

dbms_output.put_line(stus.stu_Name);

end loop;

close my_cur;

end;

----动态SQL游标

declare

type ref_cur is ref cursor;

my_cur ref_cur;

users user_tbl%rowtype;

username varchar2(20);

sqlstmt varchar2(200);

begin

username:='&username';

sqlstmt := 'select * from user_tbl where user_name= :name';

open my_cur for sqlstmt using username;

loop

fetch my_cur into users;

exit when my_cur%notfound;

dbms_output.put_line(users.user_Name);

end loop;

close my_cur;

end;

九.子程序

子程序分为:存储过程和函数,它是命名的PL/SQL块,编译并存储在数据库中。

子程序的各个部分:声明部分,可执行部分,异常处理部分。

过程----执行某些操作

函数----执行操作并返回值

存储过程(存储过程是一组为了完成特定功能的SQL语句,经编译后存储在数据库中。)

创建过程的语法:

create or replace procedure

proce_name (parameter_list)

is|as

local variable declaration

begin

executable statements

exception

exception_handlers

end proce_name;

过程参数的三种模式:

In----用于接收调用的值,默认的参数模式

Out----用于向调用程序返回值

In out----用于接收调用程序的值,并向调用程序返回更新的值

执行过程的语法:

Execute proce_name(parameter_list);

Declare

Variable var_list;

Begin

Proce_name(var_list);

End;

将过程执行的权限授予其他用户:

Grant execute on proce_name to scott;

Grant execute on proce_name to public;

删除存储过程:

Drop procedure proce_name;

函数

创建函数的语法:

Create or replace function

Fun_name (parameter_list)

Return datatype is|as

Local declarations

Begin

Executable statements;

Return result;

Exception

Exce_handlers;

End;

函数只能接收in参数,不能接受out或in out参数,形参不能是PL/SQL类型

函数的返回类型也必须是数据库类型

访问函数的方式:

J 使用PL/SQL块

J 使用SQL语句

Select fun_name(parameter_list) from dual;

8a5f7207846d90af71026f1ce84d1328.gif

希望大家每天都进步一点点!

原文链接:

企鹅号​page.om.qq.com
5b77a04847ddaded637255184b9ed69f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker官方案例学习

下面以官方的一个demo学习学习。。。 1、进入windows版docker界面,新建文件夹pp 2、进入pp,在目录下新建三个文件 dockerfile.txt,app.py,requirements.txt 2.1 dockerfile文件 # Use an official Python runtime as a parent…

LeetCode 1738. 找出第 K 大的异或坐标值(DP)

文章目录1. 题目2. 解题947 / 3851&#xff0c;前 24.6%2533 / 11282&#xff0c;前 22.5% 1. 题目 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j <…

小案例:基于python的动态时钟,带十二时辰和经络养身

一、前言 1、仅用来研究学习使用。 2、除正常显示时钟外&#xff0c;还可以实时显示当前对应的时辰&#xff0c;和经络养身提示。 3、适合辅助上班族来养生 二、效果如下&#xff1a; 三、源码如下&#xff1a; 动态时钟附带十二时辰显示import turtle # 导入绘图海龟模块 …

【海淘域名】GoDaddy账户被锁定后的解决方法

转载自【美国海淘网】http://www.usahaitao.com/Experience/Detail_2886.html通过ICANN申诉顺利的从国内无良奸商(35互联与商务中国,小编的域名在这2个大的服务商手中。不过开始都是图便宜&#xff0c;不懂得国内域名管理的黑幕&#xff0c;所以从其下属的皮包第三方手里购入域…

回归分析常数项t值没有显著异于零怎么办_线性回归分析思路总结!简单易懂又全面!...

线性回归分析是一种研究影响关系的方法&#xff0c;在实际研究里非常常见。不管你有没有系统学习过&#xff0c;对于线性回归&#xff0c;相信多少都有那么一点了解。即使如此&#xff0c;在实际分析时&#xff0c;还是会碰到很多小细节&#xff0c;让我们苦思冥想困扰很久&…

LeetCode 1733. 需要教语言的最少人数(哈希+枚举)

文章目录1. 题目2. 解题1. 题目 在一个由 m 个用户组成的社交网络里&#xff0c;我们获取到一些用户之间的好友关系。 两个用户之间可以相互沟通的条件是他们都掌握同一门语言。 给你一个整数 n &#xff0c;数组 languages 和数组 friendships &#xff0c;它们的含义如下&a…

在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...

本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程&#xff0c;其中涉及到了简单认识字节码、对象内部结构以及ObjectMonitor等知识点。阅读本文之前&#xff0c;如果大家对synchronized关键字的基本使用还不是很了解的话&#xff0c;推荐阅读笔者之前的一…

TensorFlow 2.x GPU版在conda虚拟环境下安装步骤

先下载安装驱动&#xff1a;https://www.nvidia.cn/Download/index.aspx?langcn&#xff0c;版本要求 WSL cuda 驱动 https://developer.nvidia.com/cuda/wsl 下载安装 anaconda&#xff0c;管理虚拟环境&#xff1a;https://www.anaconda.com/products/individual&#xff0…

如何通过网络将文件传输到嵌入式设备_嵌入式系统 Boot Loader技术内幕,带你完全了解Boot Loader...

一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a;1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建…

python获取当前路径的方法_Python获取脚本所在目录的正确方法【转】

原博文 2015-09-24 10:21 − 1.以前的方法如果是要获得程序运行的当前目录所在位置&#xff0c;那么可以使用os模块的os.getcwd()函数。如果是要获得当前执行的脚本的所在目录位置&#xff0c;那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Pyt…

TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化

文章目录1. Checkpoint 保存变量2. TensorBoard 训练过程可视化学习于&#xff1a;简单粗暴 TensorFlow 2 1. Checkpoint 保存变量 tf.train.Checkpoint 可以保存 tf.keras.optimizer 、 tf.Variable 、 tf.keras.Layer 、 tf.keras.Model path "./checkp.ckpt" …

coturn的负载均衡特性_高性能负载均衡

单服务器无论如何优化&#xff0c;无论采用多好的硬件&#xff0c;总会有一个性能天花板&#xff0c;当单服务器的性能无法满足业务需求时&#xff0c;就需要设计高性能集群来提升系统整体的处理性能。高性能集群的本质很简单&#xff0c;通过增加更多的服务器来提升系统整体的…

LintCode MySQL 1928. 网课上课情况分析 I

文章目录1. 题目2. 解题1. 题目 online_class_situation 表展示了一些同学上网课的行为活动。 每行数据记录了一名同学在退出网课之前&#xff0c;当天使用同一台设备登录课程后听过的课程数目&#xff08;可能是0个&#xff09;。 写一条 SQL 语句&#xff0c;查询每位同学第…

python输入十个数输出最大值_python输入十个数如何输出最大值

python输入十个数输出最大值的方法&#xff1a;1、如果是整数的话&#xff0c;使用函数【a, b, c map(int, input().split())】&#xff1b;2、使用函数【Xinput().split()】。 相关免费学习推荐&#xff1a;python视频教程 python输入十个数输出最大值的方法&#xff1a; 第一…

LintCode MySQL 1921. 从不充值的玩家(where not in)

文章目录1. 题目2. 解题1. 题目 描述 A game database contains two tables, player table and recharge table. Write a SQL query to find all players who never recharge. 样例 https://www.lintcode.com/problem/players-who-never-recharge/description 2. 解题 -- …

古风一棵桃花树简笔画_广东有个现实版的“桃花源”,藏于秘境之中,最适合情侣来度假!...

上学时&#xff0c;初闻“芳草鲜美&#xff0c;落英缤纷”&#xff0c;并没有多大感触。直到后来长大离家&#xff0c;每每为生活奔波劳累时&#xff0c;为工作琐碎忧心费神时&#xff0c;才骤然明了当年五柳先生所描绘的“桃花源”该是多少人的脑中所想、心中所向……原以为这…

clob和blob是不是可以进行模糊查询_你知道什么是 MySQL 的模糊查询?

作者 | luanhz责编 | 郭芮本文对MySQL中几种常用的模糊搜索方式进行了介绍&#xff0c;包括LIKE通配符、RegExp正则匹配、内置字符串函数以及全文索引&#xff0c;最后给出了性能对比。引言MySQL根据不同的应用场景&#xff0c;支持的模糊搜索方式有多种&#xff0c;例如应用最…

LintCode 1917. 切割剩余金属

文章目录1. 题目2. 解题1. 题目 描述 金属棒工厂的厂长拥有 n 根多余的金属棒。 当地的一个承包商提出&#xff0c;只要所有的棒材具有相同的长度&#xff08;用 saleLength 表示棒材的长度&#xff09;&#xff0c;就将金属棒工厂的剩余棒材全部购买。 厂长可以通过将每根棒…

太原理工电子信焦工程_电气工程及其自动化专业毕业后做什么工作?近几年就业和收入怎样...

本文内容为各大高校往届大学生真实的现身说法内容&#xff0c;但因为是往届&#xff0c;每年该专业的大学情况可能会发生略微变化&#xff0c;所以部分内容较今年&#xff0c;明年甚至以后几年&#xff0c;实际情况可能会略有不同但是对于本专业的相关信息还是非常有参考价值的…

怎么查看linux日志里请求量最高的url访问最多的_实用的Linux高级命令,开发运维都要懂!...

在运维的坑里摸爬滚打好几年了&#xff0c;我还记得我刚开始的时候&#xff0c;我只会使用一些简单的命令&#xff0c;写脚本的时候&#xff0c;也是要多简单有多简单&#xff0c;所以有时候写出来的脚本又长又臭。像一些高级点的命令&#xff0c;比如说 Xargs 命令、管道命令、…