02-oracle中的基础sql
1.SQL
SQL(Structured Query Language) 语言是目前主流的关系型数据库上执行数据操作、数据检索以及数据库维护所需要的标准语言,是用户与数据库之间进行交流的接口,许多关系型数据库管理系统都支持SQL语言,但不同的数据库管理系统之间的SQL语言不能完全通用,Oracle数据库使用的SQL语言是Procedural Language/SQL(简称PL/SQL)。
1.1 1SQL语言分类
通常将SQL语言分为以下4类。
(1)数据定义语言(Data Definition Language, DDL)
用于定义数据库对象,对数据库、数据库中的表、视图等数据库对象进行建立和删除,DDL包括CREATE、ALTER、DROP等语句。
(2)数据操纵语言(Data Manipulation Language, DML)
用于对数据库中的数据进行插入、修改、删除等操作,DML包括INSERT、UPDATE、DELETE等语句。
(3)数据查询语言(Data Query Language, DQL)
用于对数据库中的数据进行查询操作,例如用 SELECT语句进行查询操作。
(4)数据控制语言(Data Control Language, DCL)
用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语句。
1.2 SQL语言的特点
SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等特点。
(1)高度非过程化
SQL语言是非过程化语言,进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需说明具体处理过程和存取路径,处理过程和存取路径由系统自动完成。
(2)应用于数据库的语言
SQL语言本身不能独立于数据库而存在,它是应用于数据库和表的语言,使用SQL语言,应熟悉数据库中的表结构和样本数据。
(3)面向集合的操作方式
SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。
(4)既是自含式语言、又是嵌入式语言
SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,提供了极大的灵活性与方便性。
(5)综合统一
SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。
2.在PL/SQL中的数据定义语言
2.1 数据库
略
2.2 表空间
2.2.1 创建
语法:
CREATE TABLESPACE <表空间名>
DATAFILE '<文件路径>/<文件名>' [SIZE <文件大小> [ K∣M ]] [ REUSE ]
[ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小> [ K∣M ]]
[ MAXSIZE [ UMLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ] ]
[ MINMUM EXTENT <数字值>[ K | M ] ]
[ DEFAULT <存储参数>]
[ ONLINE∣OFFLINE ]
[ LOGGING∣NOLOGGING ]
[ PERMANENT∣TEMPORARY ]
[ EXTENT MANAGEMENT [ DICTIONARY∣LOCAL [ AUTOALLOCATE∣UNIFORM [ SIZE <数字值>[ K∣M ] ] ] ] ]
创建临时表空间
CREATE TEMPORARY TABLESPACE
...
用作数据库运算过程中的数据存储,或临时表数据存储等。用完之后系统会自动清理。若不创建则使用系统默认的临时表空间TEMP。
示例:
创建表空间newspace,允许自动扩展数据文件。
CREATE TABLESPACE newspace
LOGGING
DATAFILE 'D:\app\DELL\oradata\stsys\ newspace01.DBF’ SIZE 40M
REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 300M
EXTENT MANAGEMENT LOCAL;
2.2.2 修改
使用ALTER TABLESPACE命令可以修改表空间或它的一个或多个数据文件、或为数据库中每一个数据文件指定各自的存储扩展参数值,其语法格式如下。
ALTER TABLESPACE <表空间名>
[ ADD DATAFILE∣TEMPFILE '<路径>/<文件名>' [ SIZE <文件大小> [ K∣M ] ]
[ REUSE ]
[ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小> [ K∣M ] ] ] ]
[MAXSIZE [ UNLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ]
[ RENAME DATAFILE '<路径>/<文件名>',…n TO '<路径>/<新文件名>'',…n ]
[ DEFAULT STORAGE <存储参数>]
[ ONLINE∣OFFLINE [ NORMAL∣TEMPORARY∣IMMEDIATE ] ]
[ LOGGING∣NOLOGGING ]
[ READ ONLY∣WRITE ]
[ PERMANENT ]
[ TEMPORARY ]
示例:
通过ALTER TABLESPACE命令把一个新的数据文件添加到newspace表空间,并指定了AUTOEXTEND ON和 MAXSIZE 300M。
ALTER TABLESPACE newspace
ADD DATAFILE 'D:\app\DELL\oradata\stsys\DATA02.DBF' SIZE 40M
REUSE AUTOEXTEND ON NEXT 50M MAXSIZE 300M;
2.2.3 删除
语法:
DROP TABLESPACE <表空间名>
[ INCLUDING CONTENTS [ {AND | KEEP} DATAFILES ]
[ CASCADE CONSTRAINTS ]
] ;
示例:
删除表空间newspace和及其对应的数据文件。
DROP TABLESPACE newspace
INCLUDING CONTENTS AND DATAFILES;
2.3 表
2.3.1 创建
语法:
CREATE TABLE [<用户方案名>.] <表名>
(
<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]
<列名2> <数据类型> [DEFAULT <默认值>] [<列约束>]
[,…n]
<表约束>[,…n]
)
[PCTFREE <数字值>]
[PCTUSED <数字值> ]
[INITRANS <数字值>]
[MAXTRANS <最大并发事务数>]
[TABLESPACE <表空间名>]
[STORGE <参数>]
[AS <子查询>]
示例:
CREATE TABLE student
(
sno char(6) NOT NULL PRIMARY KEY,
sname char(8) NOT NULL,
ssex char(2) NOT NULL,
sbirthday date NOT NULL,
speciality char(12) NULL,
sclass char(6) NULL,
tc number NULL
);
表中添加注释:
comment on table student is '学生信息';
comment on column student.sno is '学号';
comment on column student.sname is '姓名';
comment on column student.ssex is '性别';
comment on column student.sbirthday is '出生日期';
comment on column student.speciality is '专业';
comment on column student.sclass is '班号';
comment on column student.tc is '总学分';
2.3.2 修改
语法:
ALTER TABLE [<用户方案名>.] <表名>
[ ADD(<新列名> <数据类型> [DEFAULT <默认值>][列约束],…n) ]/*增加新列*/
[ MODIFY([ <列名> [<数据类型>] [DEFAULT <默认值>][列约束],…n) ] /*修改已有列的属性*/
[ STORAGE <存储参数> ] /*修改存储特征*/
[<DROP子句> ] /*删除列或约束条件*/
其中,用于从表中删除列或约束
语法:
DROP
{
COLUMN <列名>
∣PRIMARY [KEY]
∣UNIQUE (<列名>,…n)
∣CONSTRAINT <约束名>
∣[ CASCADE ]
}
示例:
使用ALTER TABLE语句修改student表
(1)在student表中增加一列remarks(备注)
ALTER TABLE student
ADD remarks varchar(100);
(2)在student表中删除列remarks。
ALTER TABLE student
DROP COLUMN remarks;
2.3.3 删除
语法:
DROP TABLE table_name
示例:
删除student表
DROP TABLE student;
3.在PL/SQL中的数据操纵语言
3.1 增
语法:
INSERT INTO <表名>[(<列名1>,<列名2>,…n)]
VALUES(<列值1>,<列值2>,…n)
示例:
向employee表插入一行:1001, 刘松涛, 男, 1972-10-07, 公司集体宿舍。
INSERT INTO student
VALUES('121001','刘鹏翔','男',TO_DATE('19920825','YYYYMMDD'),'计算机','201205',52);
3.2 删
(1)DELETE
语法:
DELETE FROM <表名>
[WHERE <条件表达式>]
示例:
在employee表中,删除员工号为1021的行。
DELETE FROM employee
WHERE eid='1021';
(2)TRANCATE TABLE语句
当需要删除一个表里的全部记录,使用TRUNCATE TABLE语句,它可以释放表的存储空间,但此操作不可回退,其语法格式如下:
TRUNCATE TABLE <表名>
3.3 改
语法:
UPDATE <表名>
SET <列名>={<新值>|<表达式>} [,…n]
[WHERE <条件表达式>]
示例:
在employee表中将刘松涛的员工号改为1021,员工地址改为东大街34号。
UPDATE employee
SET eid='1021', address='东大街34号'
WHERE ename='刘松涛';
在student表中,将所有学生的学分增加2分。
UPDATE student
SET tc=tc+2;
4.在PL/SQL中的数据查询语言
语法:
SELECT <列> /*SELECT子句,指定列*/
FROM <表或视图> /*FROM子句,指定表或视图*/
[ WHERE <条件表达式> ] /*WHERE子句,指定行*/
[ GROUP BY <分组表达式> ] /*GROUP BY子句,指定分组表达式*/
[ HAVING <分组条件表达式> ] /*HAVING子句,指定分组统计条件*/
[ ORDER BY <排序表达式> [ ASC | DESC ]] /*ORDER子句,指定排序表达式和顺序*/
4.1 投影查询
投影查询用于选择列
语法:
SELECT [ ALL | DISTINCT ] <列名列表>
其中,<列名列表>指出了查询结果的形式,其格式为:
{ * /*选择当前表或视图的所有列*/
|<表名>|<视图>|.* /*选择指定的表或视图的所有列*/
|{|<列名>|<表达式>}
[[ AS ] <列别名>] /*选择指定的列,为列指定别名*/
| <列标题> = <列名表达式> /*选择指定的列并更改列标题,为列指定别名*/
}[,… n ]
4.1.1 投影指定的列
使用SELECT语句可选择表中的一个列或多个列,如果是多个列,各列名中间要用逗号分开。
语法:
SELECT <列名1> [ , <列名2> [,…n] ]
FROM <表名>
[WHERE <条件表达式>]
示例:
查询student表中所有学生的学号、姓名和班号。
SELECT sno, sname, sclass
FROM student;
4.1.2 投影全部列
示例:
查询student表中所有列
SELECT *
FROM student;
4.1.3 修改查询列标题
为了改变查询结果中显示的列标题,可以在列名后使用AS 。
示例:
查询student表中所有学生的学生的sno、sname、speciality,并将结果中各列的标题分别修改为学号, 姓名, 专业。
SELECT sno AS 学号, sname AS 姓名, speciality AS 专业
FROM student;
4.1.4 计算列值
介绍:
使用SELECT子句对列进行查询时,可以对数字类型的列进行计算,可以使用加(+)、减(-)、乘(*)、除(/)等算术运送符
语法:
SELECT <表达式> [ , <表达式> ]
示例:
列出goods表的商品号、商品名称和商品总值
SELECT gid AS 商品号, gname AS 商品名称, price*stockqt AS 商品总值
4.1.5 去掉重复行
语法:
SELECT DISTINCT <列名> [ , <列名>…]
示例:
查询student表中sclass列,消除结果中的重复行
select distinct sclass from student;
4.2 选择查询
语法:
WHERE <条件表达式>
其中,为查询条件,格式为:
<条件表达式>::=
{ [ NOT ] <判定运算> | (<条件表达式> ) }
[ { AND | OR } [ NOT ] { <判定运算> | (<条件表达式>) } ]
[ ,…n ]
说明:
- 判定运算包括比较运算、模式匹配、指定范围、空值判断、子查询等,判定运算的结果为TRUE、FALSE或UNKNOWN。
- 逻辑运算符包括.AND(与)、OR(或)、 NOT(非),NOT、AND和OR的使用是有优先级的,三者之中,NOT优先级最高,AND次之,OR优先级最低。
- 条件表达式可以使用多个判定运算通过逻辑运算符成复杂的查询条件。
4.2.1 表达式比较
语法:
<表达式1> { = | < | <= | > | >= | <> | != } <表达式2>
示例:
查询student表中班号为201205或性别为女的学生
SELECT *
FROM student
WHERE sclass='201205' or ssex='女';
查询goods表中价格为3000元以上的商品
SELECT *
FROM goods
WHERE price>3000;
4.2.2 指定范围
介绍:
BETWEEN、NOT BETWEEN、IN是用于指定范围的三个关键字,用于查找字段值在(或不在)指定范围的行。
当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围。
语法:
<表达式> [ NOT ] BETWEEN <表达式1> AND <表达式2>
(1)IN
示例:
查询score表成绩为86、92、95的记录
SELECT *
FROM score
WHERE grade in (86,92,95);
(2)BETWEEN
示例:
查询goods表中价格在1500元到4000元之间的商品。
SELECT *
FROM goods
WHERE price BETWEEN 1500 AND 4000;
(2)NOT BETWEEN
示例:
查询student表中不在1992年出生的学生情况。
SELECT *
FROM student
WHERE sbirthday NOT BETWEEN TO_DATE('19920101','YYYYMMDD') AND
TO_DATE('19921231','YYYYMMDD');
4.2.3 模糊匹配
介绍:
模式匹配使用LIKE谓词,LIKE谓词用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar2和date类型的数据,返回逻辑值TRUE或FALSE。
语法:
<字符串表达式1> [ NOT ] LIKE <字符串表达式2> [ ESCAPE '<转义字符>' ]
在使用LIKE谓词时,可以含有通配符,通配符有以下两种:
%:代表0或多个字符。
_: 代表一个字符。
示例:
查询student表中姓林的学生情况
SELECT *
FROM student
WHERE sname LIKE '林%';
示例:
查询goods表中商品名称含有Inspiron的商品
SELECT *
FROM goods
WHERE gname LIKE '%Inspiron%';
示例:
查询student表中姓名第二字为“国”的学生情况
SELECT *
FROM student
WHERE sname LIKE '_林%';
4.2.4 NULL值判断
语法:
<表达式> IS [ NOT ] NULL
示例:
查询已选课但未参加考试的学生情况
SELECT *
FROM score
WHERE grade IS null;
4.3 分组查询和统计查询
4.3.1 聚合函数
介绍:
聚合函数实现数据的统计计算,用于计算表中的数据,返回单个计算结果。聚合函数包括COUNT、SUM、AVG、MAX、MIN等函数,下面分别介绍。
(1)COUNT函数
介绍:
COUNT函数用于计算组中满足条件的行数或总行数。
语法:
COUNT ( { [ ALL | DISTINCT ] <表达式> } | * )
ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,COUNT函数用于计算时忽略NULL值。
示例:
求学生的总人数
SELECT COUNT(*) AS 总人数
FROM student;
(2)SUM和AVG函数
介绍:
SUM函数用于求出一组数据的总和,AVG函数用于求出一组数据的平均值,这两个函数只能针对数值类型的数据。
语法:
SUM / AVG ( [ ALL | DISTINCT ] <表达式> )
ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,SUM和AVG函数用于计算时忽略NULL值。
示例:
查询goods表库存量的总和
SELECT SUM(stockqt) AS 库存量总和 FROM goods;
查询1004课程的平均分
SELECT AVG (grade) AS 课程1004平均分
FROM score
WHERE cno='1004';
(1)MAX和MIN函数
介绍:
MAX函数用于求出一组数据的最大值,MIN函数用于求出一组数据的最小值,这两个函数都可以适用于任意类型数据。
语法:
MAX / MIN ( [ ALL | DISTINCT ] <表达式> )
ALL表示对所有值进行计算,ALL为默认值,DISTINCT指去掉重复值,MAX和MIN函数用于计算时忽略NULL值。
示例:
查询8001课程的最高分、最低分、平均成绩
SELECT MAX(grade) AS 课程8001最高分, MIN(grade) AS 课程8001最低分, AVG(grade) AS 课程8001平均成绩
FROM score
WHERE cno='8001';
4.3.2 GROUP BY子句
介绍:
GROUP BY子句用于指定需要分组的列。
语法:
GROUP BY [ ALL ] <分组表达式>[,…n]
示例:
查询各个班级的人数
SELECT sclass AS 班级, COUNT(*) AS 人数
FROM student
GROUP BY sclass;
查询各类商品的库存量
SELECT gclass AS 商品类型代码, SUM(stockqt) AS 库存量
FROM goods
GROUP BY gclass;
查询各门课程的最高分、最低分、平均成绩
SELECT cno AS 课程号, MAX(grade)AS 最高分,MIN (grade)AS 最低分, AVG(grade)AS 平均成绩
FROM score
WHERE NOT grade IS null
GROUP BY cno;
求选修各门课程的平均成绩和选修人数
SELECT cno AS 课程号, AVG(grade) AS 平均成绩, COUNT(*) AS 选修人数
FROM score
GROUP BY cno;
4.3.3 HAVING子句
介绍:
HAVING子句用于对分组按指定条件进一步进行筛选,过滤出满足指定条件的分组。
语法:
[ HAVING <条件表达式> ]
其中,条件表达式为筛选条件,可以使用聚合函数。
当WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句在一个SELECT语句中时,执行顺序如下:
(1)执行WHERE子句,在表中选择行。
(2)执行GROUP BY子句,对选取行进行分组。
(3)执行聚合函数。
(4)执行HAVING子句,筛选满足条件的分组。
(5)执行ORDER BY子句,进行排序。
示例:
查询平均成绩在90分以上学生的学号和平均成绩
SELECT sno AS 学号, AVG(grade) AS 平均成绩
FROM score
GROUP BY sno
HAVING AVG(grade)>90;
查询选修课程3门以上且成绩在85分以上的学生的情况
SELECT sno AS 学号, COUNT(cno) AS 选修课程数
FROM score
WHERE grade>=85
GROUP BY sno
HAVING COUNT(*)>=3;
查询至少有5名学生选修且以8开头的课程号和平均分数
SELECT cno AS 课程号, AVG (grade) AS 平均分数
FROM score
WHERE cno LIKE '8%'
GROUP BY cno
HAVING COUNT(*)>5;
4.3.4 排序查询
语法:
[ ORDER BY { <排序表达式> [ ASC | DESC ] } [ ,…n ]
示例:
将商品类型代码为10的商品按价格升序排序
SELECT *
FROM goods
WHERE gclass='10'
ORDER BY price;
将201236班级的学生按出生时间降序排序
SELECT *
FROM student
WHERE sclass='201236'
ORDER BY sbirthday DESC;
5.综合训练
(1)查询student表中计算机专业学生的情况。
select * from student where speciality ='计算机';
(2)查询score表中学号为124003,课程号为4002的学生成绩。
select * from score where sno='124003' and cno='4002';
(3)查找学号为121002学生所有课程的平均成绩。
select sno as 学号,avg(grade) as 所有课程的平均成绩
from score where sno='124003' GROUP BY sno;
(4)查询通信专业的最高学分的学生情况。
select MAX(tc) as 最高学分 from student where SPECIALITY='通信';
(5)查询1004课程的最高分、最低分和平均成绩。
select MAX(grade) as 最高分,MIN(grade) as 最低分, avg(grade) as 平均分
from score where cno = '1004' GROUP BY cno;
(6)查询至少有3名学生选修且以4开头的课程号和平均分数。
select cno as 课程号, AVG(grade) as 平均分, COUNT(sno) as 课程选修人数
from score where cno LIKE '4%' GROUP BY cno HAVING COUNT(sno)>=3;
(7)将计算机专业的学生按出生时间升序排列。
select * from student where SPECIALITY='计算机' ORDER BY SBIRTHDAY;
(8)查询各门课程最高分的课程号和分数,并按分数降序排列。
select cno as 最高分的课程号,MAX(grade) as 最高分
from score GROUP BY cno ORDER BY 最高分 DESC;
02-oracle中的基础sql的更多相关文章
- 在Oracle中执行动态SQL的几种方法
转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...
- Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数
Oracle中,利用sql语句中的函数实现保留两位小数和四舍五入保留两位小数: select trunc(1.23856789,2) from dual round(m,n) 可以四舍五入 trunc ...
- ORACLE中的PL/SQL
一. 1.过程,函数,触发器是pl/sql编写. 2. 过程函数触发器是在Oracle中. 3.pl/sql是非常强大的数据库过 ...
- oracle中视图v$sql的用途
1.获取正在执行的sql语句.sql语句的执行时间.sql语句的等待事件: select a.sql_text,b.status,b.last_call_et,b.machine,b.event,b. ...
- Oracle中如何用SQL检测字段是否包括中文字符
用Oracle的编码转换的函数Convert实现,测试后可行. SQL> select * 2 from (select 'abcd' c1 from dual 3 ...
- oracle中使用pl/sql进行的文件读写操作
第一次知道,可以使用pl/sql来进行文件的读写操作,嘿嘿,简单的试了下可行. 基本步骤如下: SQL> conn sys/sys@orcl as sysdba 已连接. SQL> cre ...
- Oracle中使用PL/SQL如何定义参数、参数赋值、输出参数和 if 判断
1.pl/sql如何定义参数 declare --1)定义参数 -- ban_Id number; ban_Name ); 2.pl/sql如何参数赋值 --2)参数赋值-- ban_Id :; ba ...
- oracle 中使用 pl/sql代码块
1.写匿名块,输入三角形三个表的长度.在控制台打印三角形的面积. declare -- (p=(a+b+c)/2) --声明三角形的面积 三条边 的 v_a number (10,2):=&n ...
- ArcGis在Oracle中常用的sql
) m 查询坐标数据 更新坐标: update tableName set SHAPE = mdsys.sdo_geometry(2002,28420,null,mdsys.sdo_elem_info ...
随机推荐
- 工具资源系列之给虚拟机装个windows
前面我们介绍了如何在 mac 宿主机安装 VMware 虚拟机软件,本节我们将继续介绍如何给虚拟机安装镜像,切换不同的操作系统. VMware 软件是容器,镜像是内核,这里的镜像指的是操作系统. 下载 ...
- dede首页、列表页调用非缩略图
在include/extend.func.php末尾添加 function firstimg($str_pic) { $str_sub=substr($str_pic,0,-7).strrchr($s ...
- NT路径,DOS路径和Device路径互相转换
项目中遇到的比较奇葩的问题,从网上找到一份源码,https://blog.csdn.net/qq125096885/article/details/70766206 稍微整理了下,VS可以直接编译 # ...
- Docker: Jenkins与Docker的自动化CI/CD流水线实战
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...
- BigDecimal 在for循环中相加注意事项
public static void main(String[] args) { BigDecimal bigDecimal = new BigDecimal(1); for (int i = 0; ...
- Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
一.通过apt-get安装指定版本 apt-get install <<package name>>=<<version>> 二.查询指定软件有多少个版 ...
- Clion快捷键
快捷键配置 File->Setting->Keymap->Keymaps 选择Visual Studio风格 代码提示的匹配模式 File->Setting->Edito ...
- 题解 P1944 最长括号匹配_NOI导刊2009提高(1)
栈,模拟 把每个元素逐个入栈 如果和栈顶元素匹配,那么一块弹出去,同时标记这里是可匹配的. 取出连续的,最长的可匹配的序列即可. #include <iostream> #include ...
- QPalette
Help on class QPalette in module PyQt5.QtGui: class QPalette(sip.simplewrapper) | QPalette() | QPa ...
- maven导入外部jar包的方法
maven的导入外部jar包的方法(前提还有外部jar包) 1.问题: 在maven添加依赖包时,添加不成功,可以选择通过外部命令导入到仓库里. 2.命令:(在Dos命令行) mvn install: ...