1) linux相关的命令:
1.1: 系统管理命令 :
1.1.1: ps命令 : ps命令用来列出系统中当前运行的那些进程
固定语法:
ps -ef 用于查看当前系统中运行的所有的进程
查询的结果: 只拷贝了一部分
所属用户 进程的PID 进程的名称
root 47304 2 0 09:19 ? 00:00:00 [kworker/u256:2]
root 54963 2 0 09:23 ? 00:00:00 [kworker/0:1]
root 65230 2 0 09:30 ? 00:00:00 [kworker/0:2]
root 76628 2 0 09:36 ? 00:00:00 [kworker/0:0]
root 79273 757 0 09:38 ? 00:00:00 sleep 60
root 79657 1681 0 09:38 ? 00:00:00 bash -c export LANG="en_US
root 79699 79657 0 09:38 ? 00:00:00 sleep 1
root 79700 1686 0 09:38 pts/0 00:00:00 ps -ef
进程PID 是唯一的, 可以通过 pid找到唯一的一个进程
1.1.2: kill命令 : kill命令用于终止执行中的程序
固定语法: -9 表示 终结 强制
kill -9 进程PID
如何找到对应程序的进程ID呢?
1.1.3: | 管道命令 : 作用是将一个命令的输出结果作为另一个命令的输入
格式:
命令1 | 命令2 | 命令3 ....
需求: 在所有进程中查询mysql的进程
ps -ef | grep mysql
1.2 用户相关的命令 :
1.2.1: 如何创建用户
格式:
useradd 新增用户名
案例需求: 请新增一个 zhangsan 用户
useradd zhangsan
注意:
当我们新增一个用户, 会在 /home目录下, 新建一个以这个用户名为文件夹,
这个文件夹其实就是这个用户的家目录
1.2.2: 如何为用户设置密码
格式:
passwd 用户名
案例需求: 为zhangsan用户设置一个密码为 1234
passwd zhangsan
1.2.3: 如何切换登录用户 : su
格式:
su 用户名
案例需求: 从root切换用户到 zhangsan用户上面
su zhangsan
请问, 刚刚从root用户切换到zhangsan用户的时候, 为什么没有输入密码呢?
root用户是整个linux操作系统最高级别的用户, 此时这个用户不受任何权限限制的
1.2.4: 如何删除用户:
格式:
userdel -r 用户名
案例需求: 删除 zhangsan 用户
userdel -r zhangsan
在删除的时候, 可能会报出如下的错误:
[root@node1 zhangsan]# userdel -r zhangsan
userdel: user zhangsan is currently used by process 24738
错误的原因:
由于刚刚已经登录过了这个zhangsan用户了,
导致系统内部有一个zhangsan用户进程, 在删除的时候, 就会报如上错误
解决方案:
将这个进程杀死掉, 然后再次删除, 就没有问题了
kill -9 24738
注意:
24738 是我这里看到进行 pid 编号
[root@node1 zhangsan]# kill -9 24738
[root@node1 zhangsan]# 已杀死
此时需要我们重新登录一下即可: 此时在finashell中多次回车即可重新登录
或者关闭窗口, 重新连接一下
请问我在登录到zhangsan用户上的时候,删除zhangsan用户, 请问是否可以呢?
注意, 我们在删除用户的时候, 要登录到root用户下, 然后去删除其他的用户
1.3 : 文件权限管理命令:
请问, 一般一个文件的权限都有哪些?
读 写 执行
英文表示法 r w x
数字表示法 4 2 1
以上这些权限可以运行在不同的用户中分别设置:
权限(10位) 所属用户 所属用户组 文件名称
-rw-r--r--. 1 root root 1539 5月 8 15:35 bb.cfg
drwxr-xr-x. 2 root root 77 5月 8 15:55 ccc
关于10位权限的说明: 四大部分
第一部分(第一位): 表示文件类型
-表示没有(代表就是文件) d 表示文件夹 l 软连接(快捷方式)
第二部分(2~4) U : 表示当前登录用户所属的权限
第三部分(5~7) G : 表示当前登录用户所属的用户组的权限
第四部分(8~10) O : 表示的是其他用户所属的权限
举例说明: -rw-r--r-- 此权限为 什么
这是一个文件, 这个文件的权限为 当前这个用户拥有可读可写的权限,
当前登录的用户组和其他所有的用户只有可读的权限
如何设置权限呢? chmod
方式一: chmod 666 a.txt : 表示 当前这个 a.txt 所有的用户都有可读可写权限
方式二:chmod u+x a.txt :
u+x 表示为 当前登录用户添加一个 x的权限
g-x 表示: 当前登录用户所属组 减少一个 执行权限
方式三:chmod u=rwx,g=rw,o=x a.txt :为每个部分针对性的设置权限
注意: 对于root来讲 无所谓 , 改啥跟我一毛钱关系都莫有
1.4 网络和服务管理命令:
1.4.1: hostname命令: 查看当前电脑主机名
1.4.2: ifconfig 命令 : 查看当前虚拟机的ip地址
1.4.3: service 命令 : 用来对系统服务做管理操作
格式:
service 服务名称 [start|stop|restart|status]
service network status #查看网络服务状态
service network stop #停止网络服务
service network start #启动网络服务
service network restart #֘重启网络服务
1.5: 其他命令:
1.5.1: ln命令 : 作用 创建软连接,类似于创建快捷方式
请问: windows快捷方式有什么好处 :
通过快捷方式,可以直达目标地址...
使用格式:
ln [参数][源文件或目录][目标文件或目录]
案例需求:
首先创建 此目录结构 /aaa/bbb/ccc/ddd
mkdir -p /aaa/bbb/ccc/ddd
然后这个ddd这个目录下, 创建 a.txt b.txt c.txt
touch a.txt b.txt c.txt
要求, 为 ddd目录构建一个快捷方式, 通过快捷直达此目录下,查看文件
注意:快捷方式放置在 /root这个目录下
ln -s /aaa/bbb/ccc/ddd /root/ddd
1.5.2: clear命令 : 清屏命令
1.6 : vi文件编辑命令 : 作用 对文本进行编辑操作
使用格式:
vi a.txt #直接打开文件
vi a.txt +10 #直接打开文件,并定位到第10行
vi命令三种模式:
1.命令行模式
- 打开文件首先进入命令模式, 是使用vi的入口
- 通过 命令 对文件进行常规的编辑操作, 例如 定位 翻页 复制 粘贴 删除
- 在其他图形编辑器下, 通过 快捷键 或者 鼠标 实现的操作, 都在 命令模式 下实现
2. 末行模式(底行模式) -- 执行 保存 退出等操作
- 要退出 vi 返回到控制台, 需要在末行模式下输入命令
- 末行模式 是 vi 的出口
3. 编辑模式 -- 正常的编辑文字
描述三种模式转换:
1) 要想进入底行模式或者是编辑模式, 必须从命令行模式进入
2) 编辑模式和底行模式不允许直接互相跳
例如:
编辑模式 (esc)--> 命令行 (:)--> 底行
底行 (esc)-->命令行 (i) -->编辑模式
命令行模式常用命令(快捷键):
dd : 删除光标所在行
ndd : n表示一个任意数字 从光标位置向下连续删除 n 行
yy : 复制光标所在行
nyy: n表示一个任意数字 从光标位置向下连续复制 n 行
p : 粘贴
gg | G : G 直接跳到文件底部 gg 直接跳转到文件的顶部
底行模式常用命令:
:q! : 不保存强制退出
:wq : 保存并退出
:set nu : 显示行号
2. mysql数据库:
什么是数据库:
数据: 一切皆数据
库 : 容器
数据库: 用来存储数据的仓库, 其本质上就是一个文件系统, 数据按照特定的格式(表)将数据存储
起来, 用户可以对数据库中数据进行CURD(增删改查),但是需要按照特定方式(SQL)来操作
常见的数据库 : 数据库又分为关系型数据库和非关系型数据库
关系型的数据库:
1) MYSQL
开源免费的数据库,中型的数据库.已经被Oracle收购了.
MySQL6.x版本也开始收费。
2) Oracle
收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
3) DB2
IBM公司的数据库产品,收费的。常应用在银行系统中.
4) SQLServer
MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
5) SQLite
嵌入式的小型数据库,应用在手机端。
非关系型数据库:
Redis
是一个小而美的数据库,主要用在key-value 的内存缓存,读写性能极佳
HBase
HBase是列式数据库,目标是高效存储大量数据
MongoDB
MongoDB是文档型数据库,非常接近关系型数据库的。
在大数据领域中:
关系型数据库:主要以 mysql为主
非关系型数据库: redis 和 hbase
1.2: mysql的安装与使用
安装: 已经在虚拟机中安装好了, 不需要大家在重新安装了
目前需要大家做一个事情, 验证一下, mysql这个服务是否已经开启了:
验证方式二种:
1) 通过 ps -ef | grep mysql 查询mysql的进程是否存在
或者:
2) 通过 service mysqld status 查询mysql的服务是否启动
使用第一种验证方式: 如果看到一下内容, 说明已经启动
[root@node1 ~]# ps -ef | grep mysql
mysql 4057 1 0 13:13 ? 00:00:15 /usr/sbin/mysqld
root 127332 1624 0 14:27 pts/0 00:00:00 grep --color=auto mysql
或者使用第二种验证: 如果看到一下内容, 说明已经启动 : active (running)
[root@node1 ~]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 六 2020-05-09 13:13:35 CST; 1h 15min ago
如果采用以上这两种方式的其中一种验证后, 发现没有mysql的进程或者没有启动, 如何办?
使用以下命令来启动mysql的服务项:
service mysqld start
如果依然无法处理, 怎么办, 请重启一下虚拟机, mysql自动启动的
如何登录使用问题?
登录mysql方式:
方式一 : mysql -u用户名 -p密码 推荐使用的
方式二 : mysql --host=ip地址 --user=用户名 --password=密码
注意: mysql在安装完后, 会提供一个用户名 为 root 这是mysql的最高管理用户
密码:在安装时候初始化好了 为 123456
如果能够看到一下内容, 说明 登录成功了....
[root@node1 ~]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
....
mysql>
如何退出呢?
方式一: 使用 exit 退出
方式二: 使用 quit 进行正常退出
ctrl +c : 强制退出 操作, 如果在进行操作的过程中, 发现无法回到控制台模式下,
可以尝试使用这个操作, 试一下
1.3: SQL语言基本介绍:
SQL: 主要是用于对关系型数据库进行CURD操作的, SQL本身是一门语言或者成为是一套编写规范
要求所有的关系型数据库厂商都应该去遵循这套规范, 都可以使用这套规范来对各种关系型数据
进行操作
请问这种方式好处是什么呢?
操作数据库变得更加的统一, 对于程序员来讲只需要将SQL规范学会了, 就可以去操作各种类型
关系型数据库了
SQL出现了两个版本:
标准版本: 可以在各个数据库中都是可以使用的
方言版本: 每个数据库保留方言并不多, 只是占据极少的一部分
SQL语句的分类: 4大类
数据库的定义语言(DDL) : 主要是数据库中 库 和 表 进行相关的定义操作
例如: 创建数据库, 创建表, 修改数据库, 修改表, 删除数据库 删除表...
关键词: create drop alter ......
数据库的操作语言(DML) : 主要是对数据库中表数据的操作(增 删 改)
例如: 表中添加数据, 修改数据, 删除数据
关键词: insert update delete
数据库的控制语言(DCL): 主要是对数据库软件进行相关的控制
例如: 权限的控制, 密码的修改, 新增一些用户...
这类语言一般是用于 DBA(数据库管理员) 这个工种的人员来使用的
数据库的查询语言(DQL): 主要是对数据库中数据的查询操作
例如: 查询表中数据,用于做数据分析使用
关键词: select
主要讲解的有三类: DDL DML DQL (非常重要的)
其中 DDL DML 相对比较简单, 基本都是固定语法
DQL相对而言是比较严, 而且也是我们学习重中之重
SQL语句通用语法:
1) SQL语句可以单行或多行书写,以英文格式下分号结尾
2) 可使用空格和缩进来增强语句的可读性
3) MySQL数据库的SQL语句不区分大小写 , 个人感觉小写好认识一点
例如:SELECT * FROM user。
同样可以使用/**/的方式完成注释 -- #
4) MySQL中的我们常使用的数据类型如下
int(integer) : 整数类型
double : 表示小数类型
datetime : 表示日期 + 时间
timestamp : 表示时间戳(当前时间)
varchar(m): 表示文本 或者 字符串 m 表示长度, 可以写多长字符
1.4 : 讲解 DDL语句: 数据库的定义语言
作用: 对 库 和 表进行相关的定义操作
1.4.1: 对库的相关的操作: database(数据库)
1) 创建数据库:
语法格式:
create database 数据库名; #直接创建数据库,如果存在则报错
create database if not exists 数据库名称; #如果数据库不存在则创建
create database 数据库名 character set 字符集; #创建数据库时设置字符集
浓缩为一种语法格式: [] 表示其内部的内容可以省略不写
create database [if not exists] 数据库名称 [character set 字符集] ;
说明:
if not exists : 表示判断数据库是否存在, 如果存在, 不创建, 如果不存在就会创建
character set 字符集 : 设置数据库的字符集的
何为字符集呢 ?
数据存储在磁盘中 是以什么方式存储在磁盘中的?? 二进制方式存储
如何将文字 数字和 单词转换为 二进制呢? 需要按照某个格式(编码)来转换
常见的字符编码:
UTF8(万国码 支持中文和数字和单词) -- 使用最多的为UTF8
GBK 支持中文
ISO-8859-1: 不支持中文
具体的操作方案:
需求: 创建一个数据库, 数据库名称为 bigData_day02
create database bigData_day02 ;
提示:
Query OK, 1 row affected (0.12 sec) 表示创建成功
注意: 如果再次创建同名的数据库 会报出如下错误:
ERROR 1007 (HY000):
Can't create database 'bigData_day02'; database exists
需求: 我就想在执行一次创建这个库语法, 而且还不想出现报错, 怎么办?
create database if not exists bigData_day02 ;
需求: 创建一个数据库为 bigData_day02_test 要求这个库的编码方式为 gbk编码
create database if not exists bigData_day02_test character set gbk;
学习一个快捷键: ctrl + l 可以随时随地清屏操作
2) 查看所有的数据库:
格式:
show databases ; 查询所有的数据库
需求: 查看当前mysql中一共有哪些数据库
show databases
注意事项: 不要去随意的操作其他的数据库, 只需要操作自己创建库即可
3) 删除数据库
格式:
drop database 数据库名称 ;
需求: 请 将 bigData_day02_test 删除掉
drop database bigData_day02_test ;
4) 使用数据库 : 使用数据库的目的, 当我们需要创建表的时候, 或者要操作数据时候, 必须选择一个库
格式:
use 数据库名称;
需求: 请使用 bigData_day02 这个数据库
mysql> use bigData_day02;
Database changed
思考: 使用了数据库以后, 请问 还能不能在创建数据库了呢? 或者 删除数据库呢? 都是可以的
1.4.2: DDL 对表的相关的操作
1) 创建表:
格式:
create table [if not exists] 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
...
);
注意:
() 中定义的起始表头中各个字段的内容 及其字段类型长度约束
() 中最后一行不要添加 逗号
约束:
对某列进行相关约束操作, 例如 不能有重复不能为空 ...
primary key : 主键约束
一个表中只有有一个主键,
被主键约束所约束的字段的这一列不能为空也不能出现重复值
需求: 创建一个学生表, 包含 编号 姓名 和年龄 ,而且编号不能有重复不能为空
use bigdate_day02_test01;
create table if not exists student( -- 请手写 不要复制....
id int primary key,
name varchar(10),
age int
);
执行效果:
mysql> create table if not exists student (
-> id int primary key ,
-> name varchar(10),
-> age int
-> );
Query OK, 0 rows affected (0.32 sec)
注意: 在创建表的时候, 一定要先确定已经使用过数据库了, 否则无法创建成功,
或者压根我们也不知道创建到了哪里去了...
2) 查看表:
2.1: 查看数据库中的所有表:
格式:show tables;
2.2: 查看表结构:
格式:desc 表名;
例如:desc sort;
操作案例:
mysql> show tables;
+--------------------------------+
| Tables_in_bigdate_day02_test01 |
+--------------------------------+
| student |
+--------------------------------+
1 row in set (0.00 sec)
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
3) 删除表 :
格式:
drop table 表名;
需求: 删除掉 student表
drop table student;
执行后, 查询所有表:
mysql> show tables;
Empty set (0.00 sec) -- 没有任何的表
4) 修改表的结构:
4.1) 格式: alter table 表名 add 新列名 类型(长度) [约束];
作用:修改表添加列.
例如:
请在 学生表中 添加一列 性别 类型为 varchar(2)
alter table student add sex varchar(2);
注意:
报错显示 1064 (42000): 表示语法错误, 请检查语法内容
报错显示:
ERROR 1146 (42S02):
Table 'bigdate_day02_test01.student' doesn't exist
错误说明: 在这个 bigdate_day02_test01 库下面 没有这个 student 表
4.2) 格式: alter table 表名 change 旧列名 新列名 类型(长度) 约束;
作用:修改表修改列名.
例如:
请将student表中name字段 修改为 username字段
alter table student change name username varchar(10);
4.3) 格式: alter table 表名 drop 列名;
作用:修改表删除列.
例如:
请删除 student 中 sex 列
alter table student drop sex;
4.4) 格式: rename table 表名 to 新表名;
作用:修改表名
例如:
请将 student 表名修改 teacher表
rename table student to teacher;
3. 安装 dataGrip软件:
参考安装文档: <<5_安装DataGrip.docx>>