一.MySQL
在数据库中所有的字符串类型,必须使用单引号,不能使用双引!
一:操作数据库
查看所有数据库:show datebase
切换(选择要操作的)数据库:use 数据库名
创建数据库: ctreate database [if not exists] 数据库名 [charset = utf8]
删除数据库: drop database[if exists] 数据库名
修改数据库编码: alter database数据库名 character set utf8
二:数据类型
int:整型
double:浮点型,例如double(5,2),表示最多5位,必须有2位小数。
decimal:浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题。
char:固定长度字符串类型;char(255)
varchar:可变长度字符串类型;varchar(65535)
text(clob):字符串类型;
date:日期类型
time:时间类型
MySQL基础概念
mysql的用户
默认用户:安装mysql的时候自动生成的用户
自定义用户:安装mysql以后自己创建的用户
mysqll的默认用户名
root
这个用户是管理员身份,而且具有所有的权限【最大权限】
库和表、数据
库:其实就是一个目录【文件夹】
表:其实就是目录中的一个文件
数据:其实就是文件中的内容表示数据的时候的两个概念【重要】
记录:数据库文件中,每一行,都是一条记录
字段:数据库文件中,每一列,都是一个字段
链接名:这个名字其实就是一个提示信息,没有其他用处,可以随便写
主机:写上mysql所在的服务器的IP地址
如果是链接自己电脑上的mysql,这里就写自己的IP或者写localhost
如果链接的是其他主机上的mysql,那么这里写其他主机的IP地址
端口号:3306
用户名:root
MySQL特点:
- 开源
- 程序的源代码是开放给用户的
- 用户可以免费获取、免费修改、免费使用
- 双授权
- 社区版:免费,没有技术支持
- 商业版:收费,有完善的售后技术支持服务
- 跨平台:可以运行windows、linux、mac
- 稳定
- 轻量级:mysql运行期间占用系统资源少
三:表
对于数据库的操作有四类:增删改查
增:添加新的行
删:删除表中的行、表本身、库
改:修改(修改表中的数据、修改表)
查:查看库中有哪些表
*创建表:
creater table[if not exists] 表名(列名 列类型,列名 列类型,列名 列类型,....列名 列类型);
*查看当前数据库中所有的表名称:show tables;
*查看指定表的创建语句:show create table 表名;
*查看表结构:desc 表名;
*删除表:drop table 表名;
*修改表:前缀:alter table 表名
alter table表名 add(列名 列类型,列名 列类型,...列名 列类型)
修改之修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在的数据):alter table 表名 modify列名 列类型;修改之修改列名:alter table 表名 CHANGE 原列名 新列名 列类型;
修改之删除列:alter table 表名 drop 列名;
修改表名称:alter table 原表名 rename to 新表名;
创建数据库的命令格式
show databases;
1
CREATE DATABASE 库名 CHARACTER SET 字符集 COLLATE 排序规则;
创建库:create database 库名 character set "字符集" collate "排序规则"
删除库:drop database 库名
选择库:use 库名
创建表:create table 表名(字段 属性...,字段 属性.....)
在表中插入数据:insert into 表名 values(值) insert into 表名(字段名,字段名...) values(值,
值...)
删除表:drop table 表名
删除表中的数据:delete from 表名 delete from 表名 where 条件
截断表:truncate 表名
查看表结构:desc 表名
查看表中的数据:select * from 表名
修改表结构:alter table 表名 ...
修改表中的数据:update 表名 set 字段=值 update 表名 set 字段=值 where 条件
四:数据操作
*查询表记录:
select * from表名;
*插入数据:inster into表名(列名1,列名2,...) values (列值1,列值2,...)
或inster into 表名 values(列值1,列值2,...);
*修改数据:
update 表名 set 列名1=列值1,列名2=列值2,...[where 条件]
条件包括:
条件必须是一个boolean类型的值或表达式
运算符:=、!=、<>、>、=、<=、between..and、in(...)、is null、or、and
delete from表名 where 条件];
- 查看:show databases;
- 新建:create database 库名 character set 字符集 collate 排序规则;
- 删除:drop database 库名;
- 表中的每一列都是一个字段
- 每个字段只能存储一种类型的数据
- 数据类型:
- int:整型,也就是说,这个字段存储的是整数类型
- float:浮点型,这个字段存储的是小数类型
- char:字符类型,而且长度固定。也就是说,提前分配存储空间,无论是否使用,存储空间
- 的大小都不变。
- varchar:字符类型,长度可变。
创建表的格式
字段的修饰【属性】
1. int:整型【整数类型】
2. float:浮点型【小数类型】
3. char:字符类型【无论存储多少个数据,占用内存空间大小固定】
4. varchar:字符类型【内存空间会随着存储的数据变多,而变大】
5. unsigned:表示这个数字是无符号数字【只能是正数】
6. enum:枚举类型【给用户一个选择范围,用户仅仅可以选择其中的一个】
7. null:这个字段可以为空【这个字段中可以不写入内容】
8. not null:这个字段不可以为空【这个字段中必须得写入数据,否则报错】
9. primary key:主键,用来唯一标识表中的一条记录【主键的内容不能重复】
10. auto_increment:设置主键自增
11. default:设置字段的默认值
主键:
用于在表中唯一的标识一条记录
主键的值必须是唯一
案例:
第一步:在在db1中,创建一个新表
表名tb004,字段信息如下
id 主键 整数 非负 不允许为空 自增
name 字符类型,最多30个字符,不允许为空
age 整数 非负 可以为空
gender 枚举类型 可以为空
addr 字符类型 最多100个字符 设置默认值hebei
第二步:查看表是否存在
第三步:查看表结构
创建表的格式REATE TABLE 表名 (字段名 类型 属性.. , 字段名 类型 属性.. , 字段名 类型属性.. );
关于删除
drop database 库名 # 删除一个数据库
drop table 表名 # 删除一个表
delete from 表名 # 删除表中的数据【全部数据】
delete from 表名 where 条件 # 删除表中的数据【仅仅删除符合条件的数据】
truncate 表名 # 删除表中的数据,而且会截断表【id会重现开始自增】
截断表
表的主键可能会自增,如果用delete删除表中的数据后,主键依然会在前面的基础继续自增
截断表:删除表中的数据,同时让主键重新从1开始自增
五:用户管理
1.创建用户
*CREATE USER 用户名@IP地址 IDENTIFIED BY '密码'
用户只能在指定的IP地址上登陆
*CREATE USER 用户名@'%' IDENTIFIED BY '密码'
用户可以在任意IP地址上登陆
2.给用户授权
GRAND 权限1,...,权限n ON 数据库. TO 用户名@IP地址
权限、用户、数据库
给用户分派在指定的数据库上的指定的权限
例如:GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON stu.* TO user1@localhost;
GRANT ALL ON 数据库. TO 用户名@IP地址
给用户分派指定的数据库上的所有权限
3.撤销授权
REVOKE 权限1,...,权限n ON 数据库. FROM 用户名@IP地址;
撤消指定用户在指定数据库上的指定权限
例如:REVOKE CREATE,ALTER,DROP ON stu.* FROM user1@localhost;
4.查看权限
*SHOW GRANTS FOR 用户名@IP地址
查看指定用户的权限
5.删除用户
*DROP USER 用户名@IP地址
六、DQL数据查询
一:基本查询
1:查询所有列
SELECT * FROM 表名;
SELECT * FROM emp;
2:查询指定列
SELECT 列1[,列2,...,列N] FROM 表名;
3:完全重复的记录只一次
SELECT DISTINCT *|列1[,列2,...,列N] FROM 表名;
4:字段名称修改,列加字符串
SELECT 列1,CONCAT(列2+“%”) FROM 表名 WHERE 条件;
5:列运算
*数量类型的列可以做加、减、乘、除运算
SELECT sal*1.5 FROM emp;
SELECT sal+comm FROM emp;
*字符串类型可以做连续运算
SELECT CONCAT('$',sal) FROM emp;
*转换NULL值
有时需要把NULL转换成其它值,例如comm+1000时,如果comm列存在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL当0来运算。
SELECT IFNULL(comm,0)+1000 FROM emp;
->IFNULL(comm,0) 如果comm中存在NULL值,那么当成0来运算。
*给列起别名
当使用列运算后,查询出的结果集中的列名称很不好看,这时我们可以给列起别名,这样在结果集中列名就显示别名了
SELECT IFNULL(comm,0)+1000 AS 奖金 FORM emp;
->其中AS可以省略
二、条件查询:
*SELECT empno,ename,sal,comm FROM emp WHERE sal>1000 AND comm IS NOT NULL;
*SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 2000 AND 3000;
*SELECT empno,ename,job FROM emp WHERE job IN('经理','董事长');
6:模糊查询
*SELECT * FROM emp WHERE ename LIKE '张_';
->模糊查询需要使用运算符:LIKE,其中_匹配一个任意字符,注意,只匹配一个字符而不是多个。
->上面语句查询的是姓张,名字由两个字组成的员工。
*SELECT * FROM emp WHERE ename LIKE '___' ;
->上面查询姓名由3个字组成的员工
SELECT * FROM emp WHERE ename LIKE '张%';
->如果我们想查询姓张,名字几个字都可以的员工时就要使用“%”了。
->其中%匹配0~N个任意字符,所以上面的语句查询的是姓张的所有员工。
SELECT * FROM emp WHERE ename LIKE '%阿%'
->千万不要认为上面的语句是查询姓名中间带有“阿”字的员工,因为%匹配0~N个字符,所以姓名以阿开头和结尾的员工也都会查询到。
SELECT * FROM emp WHERE ename LIKE '%';
->这个条件等同与不存在,但如果姓名为NULL的查询不出来。
7:排序
SELECT * FROM emp ORDER BY sal ASC;
->上面是升序,默认是升序,ASC可省略
SELECT * FROM emp ORDER BY comm DESC
->按comm降序,DESC不能省略
SELECT * FROM emp ORDER BY sak ASC,comm DESC.
->先按sal升序排,如sal一样,按 comm降序排序。
8:聚合函数
聚合函数用来做某列的纵向运算
- COUNT
SELECT COUNT(*) FROM mep;
->计算emp表中所有列都不为NULL的记录的行数
SELECT COUNT(comm) FROM emp;
->云计算emp表中comm列不为NULL的记录的行数
- MAX
SELECT MAX(sal) FROM emp;
->查询最高工资
- MIN
SELECT MIN(sal) FROM emp;
->查询最低工资
- SUM
SELECT SUM(sal) FROM emp;
->查询工资合
- AVG
SELECT AVG(sal) FROM emp;
->查询平均工资
9:分组查询
分组查询是把记录使用某一列进行分组,然后查询组信息
例如:查看所有部门的记录数
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;
->使用job分组,查询每种工作的最高工资
SELECT deptno,COUNT() FROM emp GROUP BY deptno HAVING COUNT()>3;
->以部门分组,查询每组记录数。条件为记录数大于3
10:limit子句
LIMIT用来限定查询结果的起始行,以及总行数。
SELECT * FROM emp LIMIT 4,3;
->其中4表示从第5行开始,其中的3表示一共查询3行。即第5,6,7行记录。
各关键字执行顺序:
SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY
三、备份与恢复*******
1:数据库导出SQL脚本
mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
例如:mysqldump -uroot -proot test>C:/name.sql
注意:不要打分号,要不登陆mysql,直接在cmd下运行
注意:生成的脚本文件中不包含create database语句
2:执行SQL脚本
一:
mysql -u用户名 -p密码 数据库
mysql -uroot -proot test
二:
登陆mysql,然后>source SQL脚本路径
约束**
约束是添加在列上的,用来约束列的。
一:主键约束(唯一标识)
非空
唯一
被引用
当表中某一列被指定为主键后,该列就不能为空,不能有重复的值出现。
删除主键:ALTER TABLE stu DROP PRIMARY KEY;
二:主键自增长
*因为主键列的特性是:必须唯一,不能为空,所以我们常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。
*创建表时指定主键自增长:
CREATE TABLE stu{
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20),
age INT,
gender VARCHAR(20)
}
*修改表时设置主键自增长:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
*修改表时删除主键自增长:ALTER TABLE stu CHANGE sid sid INT;
三:非空约束
*因为某些列不能设置为NULL值,所以可以对列添加非空约束
*例如:
CREATE TABLE stu{
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
age INT,
gender VARCHAR(20)
}
*对sname列设置了非空约束
四:唯一约束
*数据库有些列不能设置为重复的值,所以可以对列添加唯的约束 。
*CREATE TABLE s tu{
sid INT PRIMARY KEY AUTO_INCREMETN,
sname VARCHAR(20) NOT NULL UNIQUE,
age INT,
gender VARCHAR(10)
}
*对sname列设置了非空约束
五:概念模型
当我们要完成一个软件系统时,需要把系统中的实体抽出来,形成概念模型。
如部门,员工都是系统中的实体。概念模型中的实体最终会成为JAVA中的类,数据库中表。
实体之间还存在关系,关系统有三种:
1对多:如每个员工都从属于一个部门,而一个部门可以有多个员工,其中员工是多方,部门是一方;
1对1:如老公和老婆
多对多:老师与学生就是多对多,一个老师可以有多个学生,一个学生可以有多个老师。
六:外键约束
*外键必须是另一个表的主键
*外键可以重复
*外键可以为空
*一张表中可以有多个外键。
概念模型在数据库中成为表
数据库表中的多对一关系,只需要在多方使用一个独立的列来引用1方的主键即可
四、多表查询
一:分类:
合并结果集
连接查询
子查询
二:合并结果集:
要求被合并的表中,列的类型和列数相同
UNION,去除重复行
UNION ALL,不去除重复行
SELECT * FROM 表名1 UNION ALL SELECT * FROM 表名2;
三:连接查询:
1:分类
*内连接
*外连接
左外连接
右外连接
全外连接(Mysql不支持)
*自然连接(属于一种简化方式)
2:内连接
*方式:SELECT * FROM 表1 别名1,表2 别名2 WHERE 别名1.xx=别名2.xx
*标准:SELECT * FROM 表1 别名1 INNER JOIN 表2 别名2 ON 别名1.xx==别名2.xx
*自然:SELECT * FROM 表1 别名1 NATURAL JOIN 表2 别名2
*内连接查询出的所有记录都满足条件。
3.外连接
*左外:SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来,左表中不满足条件的记录,右表部分都为NULL
*左外自然:SELECT * FROM 表1 别名1 NATURAL LEFTT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
*右外:SELECT * FROM 表1 别名1 RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能出来。右表中不满足条件的记录,左表部分都为NULL
*右外自然:SELECT * FROM 表1 别名1 NATURAL RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
*全链接:可以使用UNION来完成连接
4:查询中有查询(查看select关键字的个数)
1:出现的位置
*WHERE 后作为条件存在
*from后作为表存在(多行多列)
2:条件
(**)单行单列:SELECT * FROM 表1 别名1 WHERE 列1[=、>、=、<=、!=] (SELECT 列 FROM 表2 别名2 WHERE 条件)
*(**)多行单列:SELECT * FROM 表1 别名1 WHERE 列1[IN,ALL,ANY](SELECT 列 FROM 表2 别名2 WHE
RE 条件)
() 单行多列:SELECT * FROM 表1 别名1 WHERE (列1,列2)IN (SELECT 列1,列2 FROM 表2 别名2 WHERE 条件)
(**)多行多列:SELECT * FROM 表1 别名1,(SELECT...)别名2 WHERE 条件
二.Linux
基础命令
1.shell窗口(终端)
1.1 我们先从Hello world! 开始
$ echo Hello world!
将会把Hello,打印在终端屏幕上。
1.2查看一个文件
$ cat file1
查看一个文件
也可以一下看多个文件
1.3 标准输入输出
Ctrl + d 终止一个没有输入命令行
Ctrl + c 终止一个命令无论有输入还是没有输入
1.4 基础命令
1.4.1 ls
$ ls -a -l -h
a是看隐藏文件
l是变成列表形式
h是更好的看大小
1.4.2 cp
$ cp file1 file2
$ cp file1 file2 dir
复制一个或多个文件到某一个地方去
1.4.3 mv
$ mv file1 file2
$ mv file1 file2 dir
移动一个或多个文件到某一个地方去
1.4.4 touch
touch file
创建一个文件(如果已有文件则会更新该文件)
1.4.5 rm
$ rm file -r -f
删除文件
r 是彻底删除 用来删除有文件的文件夹
f 是强制删除
1.4.6 echo
$ echo Hello again!
是一个标准的输出
1.4.7 cd
cd file
进入该文件夹,更改你当前的工作目录
1.4.8 mkdir和rmdir
-p 递归创建
-v 显示创建完成
$ mkdir file1
$ mkdir file1/file2/file3 -vp
$ rmdir file2
高级
创建多个分支结构的文件夹,并且用tree查看
$ mkdir -vp shiyanlou/{lib/,bin/,doc/{info,product}}
$ tree shiyanlou/
创建一个空文件夹
删除一个空文件夹
2.1 shell 通配符
*是一个或多个任意字符
?是一个任意字符
要想打一个真正的 * 号,需要‘ * ’,用单引号,来引起来
2.2 中间命令
2.2.1 grep
就是查看文件中匹配的行
$ grep root /etc/passwd
查看passwd中有root的行
重要参数
-i 忽略大小写 -v 是匹配反转
在grep 中 .* 表示匹配多个字符 . 表示匹配一个字符 [相当于正则表达式]
2.2.2 查看文件less
$ grep ei /etc/passwd | less
b 上一屏
空格 下一屏
q 退出
2.2.3 pwd
查看当前目录
2.2.4 diff
比较文件的不同
$ diff file1 file2
2.2.5 file命令
查看文件格式 可以一下查看多个
$ file file
-n 设置显示行数
+n 从第几行开始显示
2.2.8 sort 命令
$ sort file -r -n
-r 是反转
-n 是排序那些按照数字开头的文件
2.3 更改密码
$ passwd
-
星号 通用字符
. 句点 当前目录
! 感叹号 历时命令,逻辑非运算符
| 管道 命令管道
/ 斜线 目录分隔符
\ 反斜线 常量,宏
$ 美元符号 变量符号,行尾
‘ 单引号 字符串常量
` 反引号 命令替换
“ 双引号 半字符串常量
^ 脱字符 逻辑非运算符,行头
~ 波浪字符 逻辑非运算符,目录快捷方式
井号 注释,预处理,替换
[ ] 方括号 范围
{ } 大括号 声明块,范围
_ 下划线 空格的简易替代
注解 控制键,我们通常用表示,如C代表CTRL-C
2.8 命令行编辑
按键 操作
CTRL-B 左移光标
CTRL-F 右移光标
CTRL-P 查看上一条命令(等于上移光标)
CTRL-N 查看下一条命令(等于下移光标)
CTRL-A 移动光标至行首
CTRL-E 移动光标至行尾
CTRL-W 删除前一个词
CTRL-U 删除至行首
CTRL-K 删除至行尾
CTRL-Y 粘贴已删除的文本
CTRL+L 清空屏幕
CTRL+U 清空当行
2.15 用户权限
使用ls -l 查看
除第一位,
前三位代表这用户的权限 u
中间是组的权限 g
最后是其他人的权限 o
每一位的意义
r 文件可读
w 文件可写
x 文件可执行
-
无
2.16.1 更该文件权限
给其他用户和组内的人加上可读的权限
$ chmod go+r file
解压文件
$ tar xvf archive.tar
压缩是cvf,解压是xvf
2.17.3 压缩归档文件 (.tar.gz)
先gunzip解压一次,再tar解压一次而已
$ gunzip file.tar.gz
$ tar xvf file.tar
2.18 linux目录结构基础
/bin 目录中放的是可执行文件,包括大部分基础命令(ls、cp),和一些shell脚本
/dev 设备文件
/etc 重要的系统配置文件(如用户密码,启动文件,设备,网络等等)
/home 用户个人文件
/lib可执行程序使用的各种代码库
/proc 是一个伪文件系统,它只存在内存当中,而不占用外存空间。(我也不太清楚)
/sys 类似于proc目录,里面是设备和系统的信息
/sbin root用户的可执行文件
/tmp 无关紧要的临时文件
/usr 存放这许多linux的系统文件
/var 是程序运行时信息存放的地方(如系统日志,用户信息,缓存)
2.18.1 root目录下的其他目录
/boot 存放内核加载文件,在linux第一次启动时才出现,并且而后不会更改了
给用户组起别名
赋值给他们权限
root用户能够在任何主机上执行任何命令
linux中重要的目录
/home
普通用户存储文件的家目录,也就是普通用户的家目录
【普通用户只能在自己的家目录下创建/编辑文件】/etc
/etc下存储的是linux中的各种配置文件 例如网卡配置文件 系统内核配置文件 用户名
密码配置文件
/bin目录
存放的是linux中可执行程序
/sbin目录
存放的也是linux中可执行程序
/var目录
存放的是经常发生变化的文件
例如日志文件 /var/log/message
/tmp目录
存放的是临时文件
这个目录所有的文件,如果30天内没有被访问过,那么文件自动被删除
/root目录
这个目录是超级管理员用户的家目录
/dev 目录
设备文件
块设备:随机访问,数据块
字符设备:线性访问,以字符为单位
/lib 库文件
静态链接库,.a
动态库 .dll .so
特殊文件 /lib/modules 内核模块文件
/mnt 挂载点目录,将系统盘挂载到某个目录当中
/media 目录,可以作为挂载点的目录
/proc伪文件系统,内核映射文件。展示系统的硬件信息
/sys 伪文件系统,随硬件设备相关的属性映射的文件
作用:文本编辑操作,可以实现快速开发
特点:
是linux系统中一个重要的文件编辑软件
vi 是一种模式化的编辑工具
vim 是vi 编辑工具的加强,vi中所有的功能在vim中都能实现
vi的工作模式
模式1:编辑模式
它是打开文件后默认的模式
编辑模式不能在文件中写入或者编辑内容
模式2:输入模式
它是可以在文件中插入、删除、修改内容
模式3:末行模式
它是可以执行各种命令,例如保存退出、不保存退出、显示行号、高亮显示
模式转换
编辑模式--->输入模式 【
i】
输入模式-->编辑模式【esc】
编辑模式-->末行模式【:】
[root@zlxd ~ ͆ wc -c passwd
1409 passwd
[root@zlxd ~ ͆ wc -w passwd
42 passwd
[root@zlxd ~ ͆ wc -l passwd
32 passwd末行模式-->编辑模式【esc】
作用:文本编辑操作,可以实现快速开发
特点:
是linux系统中一个重要的文件编辑软件
vi 是一种模式化的编辑工具
vim 是vi 编辑工具的加强,vi中所有的功能在vim中都能实现
vi的工作模式
模式1:编辑模式
它是打开文件后默认的模式
编辑模式不能在文件中写入或者编辑内容
模式2:输入模式
它是可以在文件中插入、删除、修改内容
模式3:末行模式
它是可以执行各种命令,例如保存退出、不保存退出、显示行号、高亮显示
模式转换
编辑模式--->输入模式 【
i】
输入模式-->编辑模式【esc】
编辑模式-->末行模式【:】
[root@zlxd ~ ͆ wc -c passwd
1409 passwd
[root@zlxd ~ ͆ wc -w passwd
42 passwd
[root@zlxd ~ ͆ wc -l passwd
32 passwd末行模式-->编辑模式【esc】
网络配置
【实现宿主机和虚拟机之间的通信】
1、桥接
将你的虚拟机和物理机调到同一个网段,例如宿主机用的192.168.3.XX/24 虚拟机自动获取地址
也是192.168.3.XX/24
优点:能直接使用物理机的网络和外网进行通信,虚拟机端上网是无感
2、仅主机模式
仅仅是宿主机和虚拟机进行通信,对外网是无法访问的