linux+mysql+mongo+redis基础指令一文秒懂

Linux基础指令

基础指令:

  1. 安装网络工具,终端输入:sudo apt install net-tools,可以输入ifconfig查看虚拟机Ip

2. 适配客户机分配率,终端输入:sudo apt install open-vm-tools

3. 指令格式:指令名 选项 参数

4. ls -a 显示所有的文件信息(包含隐藏文件)

5. ls -l 以列表形式展示信息

6. ls -h 以可读性更强的形式显示

7. ls -alh 以列表形式和更强的的形式显示所有的文件信息(最常用)

8. pwd 当前文件路径

9. cd 切换路径 cd ~ 回到家目录 cd - 回到上次所在目录 cd ..回到父级路径

10. mkdir 创建文件夹 mkdir -p 创建多级文件夹

11. rmdir 删除文件夹

12. touch 创建文件

13. rm 删除文件  rm -r 递归删除  rm -f 忽略错误

14. 重定向  > 写入   >> 追加

15. cat  连接多个文件,将内容输出到屏幕

16. head -n  查看文件前n行 tail -n 查看文件后n行

17. more 文件   显示文件内容,每次显示一屏幕   空格,显示下一屏幕  q 退出

18. wc  文件统计  wc -l 行数 wc -w 单词数  wc -m 字符数  wc -c 字节数

19. cp  复制粘贴  (1) cp 源文件 目标路径  

(2) cp 源文件 目标路径 新文件名字

20. mv  剪切粘贴 (1) mv 源文件 目标路径  

(2) mv 源文件 目标路径 新文件名字

21. tar  归档  tar -c 创建tar包  tar -x 解开tar包  tar -f 文件(必须放在末尾)  tar -v 文件详细信息  tar -t 列表显示归档内容

22. *.tar.gz  压缩解压  gzip -r 压缩  gzip -d 解压

23. |  管道 左边输入 右边输出  grep 以行为单位过滤  

24. ps -e 所有进程  ps -f 进程详细信息

25. kill  杀死进程  kill -9 清理信息  常用的例子:ps -ef | grep bash  kill -9 进程号

26. top  查看占用cpu内存最多的进程

27. ln -s源文件 连接文件     软连接:相当于创建了快捷方式,源文件删除 链接文件废弃

28. ln 源文件  链接文件     硬链接:改一个,其他链接同步更改,源文件删除,硬链接文件正常使用,相当于创建了一个新的文件,该文件和源文件保持同步

用户指令:

  1. sudo useradd 用户名   添加用户  sudo useradd -m 自动创建家目录
  2. sudo userdel 用户名    删除用户  sudo userdel -r  删除家目录以及邮件池
  3. sudo groupadd 组名    添加组
  4. sudo groupdel  组名    删除组
  5. sudo passwd (用户名)  更改root(用户)密码
  6. su (用户名) 切换到管理员(指定用户)
  7. whoami   查看当前用户名
  8. exit  退出当前用户,返回上个用户,直至退出系统
  9.  ls  -l  第一个字符是l 代表软连接  d 代表文件夹  - 代表文件
  10. 权限:r:可读(4)  w:可写,可以修改(2)  x:可执行,可以cd, 可以运行(1)  -:无权限(0)  

案例:777:rwxrwxrwx   750:rwxr-x---   000:---------

前三个字符:当前用户权限,中间三个字符:当前用户组的其他用户,后面三个字符:非当前用户组的用户

远程连接(ssh)

  1. 安装  sudo apt install openssh-server
  2. 虚拟机远程连接需要修改配置文件  终端输入:cd /etc/ssh/sshd_config  把”PermitRootLogin ”,修改为”PermitRootLogin yes”
  3. 远程拷贝工具 scp

本地拷贝到远程:scp 本地文件  用户名@ip地址:新文件名

(1) scp abc.txt  qyc@192.168.13.31: cba.txt  拷贝地址默认为家目录

  1. scp -r abc.txt  qyc@192.168.13.31:\home\用户家目录\Desktop

远程拷贝到本地:scp  用户名@ip地址:新文件名 本地文件  

  1. scp  qyc@192.168.13.31: cba.txt abc.txt
  2. scp -r qyc@192.168.13.31:\home\用户家目录\Desktop\456本地文件夹

服务操作

  1.  systemctl status ssh  查看服务状态
  2.  systemctl start ssh   启动服务
  3.  systemctl restart ssh  重启服务
  4.  systemctl stop ssh   停止服务

文本编辑

  1. 安装文本编辑器  sudo apt install vim 
  2. 摁下 i,I,o,O,a,A 进入插入模式

  i  光标前插入  I 行首插入

  a  光标后插入 A 行末插入

  o  下方另起一行  O 上方另起一行

  1. gg  移动光标到一行第一句  M 移动到中间  G 移动到最后一行最后一句

  h 向左  j 向下  k  向上  l 向右

  1. dd  删除整行  n dd 删除n行  D 删除光标之后  d0 删除光标之前
  2. yy  复制  n yy 复制n行  p 粘贴
  3. /???   ???是搜索的字  输入后摁下回车  n 下一个  N上一个
  4. 摁下esc  退出编辑模式
  5. 摁下 : 进入命令模式
  6. :wq  保存并退出   :!q  不保存强制退出

mysql基础指令 

关系型数据库:

  1. 登录  mysql -u root -p 123456
  2.  -u 用户名 -p 密码  -h 主机ip地址  -P 主机ip端口
  3. 虚拟机安装指令: sudo apt install mysql-server
  4. 远程连接需要更改配置文件: /etc/mysql/mysql.conf.d/mysqld.conf  将”bind_address” 改为虚拟机的ip,修改完之后要重启服务:systemctl restart mysql
  5. show databases;  展示所有的数据库
  6. create database 数据库名 charest=utf8;  创建数据库
  7. drop database 数据库名;  删除数据库
  8. select database() ;  查看当前使用的数据库
  9. user 数据库名;  使用数据库
  10. show tables;  显示所有的表
  11. create table 表名( 列名  类型  约束1 约束2 约束3, 列名 类型 约束1 约束2, 列名 类型 约束1 );  创建数据表
  12. desc 表名;      查看表结构
  13. drop table 表名; 删除数据表
  14. (1) alter table 表名 drop 列名; 删除数据表

(2)alter table 表名 add 列名 类型 约束1 约束2 ...;  添加数据表

(3)alter table change 原列名 新列名 类型 约束1 约束2 ...;  修改数据表

15. primary key  主键,可以确定唯一的一行

16. not null  非空,不能为空

17. auto_increment  自增长,每次+1

18. unique  唯一,列中内容不重复

19. default  默认值

20. foreign  外键,与其他表关联 是其他表的左键

21. check  检查(mysql8才能用), alter table user add constraint check_age check(age > 0);

CURD 增删改查

  1. select * from 表名;非常耗时,谨慎使用
  2. select 列 , 列,... from 表;
  3. select 列 as 别名,列as 别名 from 表名;
  4. 条件: (1) 比较运算符: =  > >= < <= !=  <>

        (2) 逻辑运算符:and or  not

        (3) 判空:is null;  is not null

        (4) in[a,b,c]   精确比较

(5) between 1 and  5  范围比较

(6) like  像 like % 多个字符  like - 一个字符

5. 关联查询:表与表之间存在关联关系

(1) 嵌套查询:第一次查询的结果作为第二次查询的条件

(2) 表连接:

  • 笛卡尔链接:一个表中每一行都和另外一个表中所有行连接
  • 内连接:inner join  举例: select user.id as 用户id, user.username as  用户名, role.nick as 昵称, role.level as 等级 from user inner join role  on user.id = role.user_id;
  • 外连接:左外连接:left join,以左表为主,左表条件满足 正常显示 不满足 右侧补null。举例:select * from user left join role on user.id = role.user_id;
  • 外连接:右外连接:right join ,以右表为主,右表条件满足,正常显示,不满足补null。举例:select * from role right join user on user.id = role.user_id;
  • 全连接:full join   mysql不支持关键字 full join,left join   union  right join

举例: select * from user right join role on user.id = role.user_id union  select * from user left join role on user.id = role.user_id;

6.分组,分页,排序,去重

(1) distinct 去重,单独列展示 并对列去重。举例: select  distinct user_id from role;

(2) group by  分组, 一般会结合count (*)进行统计, select info as '组信息', count(*) as 个数 from role group by info;

(3) order by  排序,asc 升序desc 降序,select * from role order by user_id desc , id  desc  ;

(4) limit  一个数字n 表示前n个,两个数字表示start,count   比如 (1,3),每页显示count个 第n页公式 (n-1) * count,count

 

  1. insert into  表名 values (列1, 列2,列n),(列1, 列2, 列n);  列的个数要与值得个数一致
  2. insert into  表名  (列1, 列2) values (值1, 值2), (值1, 值2); (比较经常使用) 可以指定插入哪些列,有默认值和可以为空的列可以不插入,没有默认值且非空的列必须添值
  3. insert into   表名  set  列1=值1,列2=值2;  插入指定的一行的列与值

update 表名 set 列1 = 值1 where 条件;  如果没有条件就修改整个表

delete from 表名 where 条件;   如果没有条件就清空表、

用户指令

  1. create user qyc@% identified by 123456;  创建用户qyc,密码为123456
  2. grant 权限列举 to ‘qyc’@‘%’ on  数据名.表名   分配权限  all 代表所有权限  *.*代表数据库中所有表
  3. flush privileges;  刷新权限
  4. drop user  'qyc'@'%'; 删除用户
  5. alter user ‘qyc’@‘%’  identified by ‘12345678’;修改密码

外键

  1. 概念:MySQL中的外键(Foreign Key)是数据库表中的一个字段,它指向另一个表的主键(Primary Key)。外键用于在两个表之间建立链接,保证数据的参照完整性。
  2. constraint 外键名 foreign key列名)references表名()on update cascade on delete   cascade;    添加外键
  3. alter table 表名 drop foreign key 外键名;  删除外键

函数

  1. select database();  查看当前使用数据库
  2. select user();      查看当前用户
  3. select version();   查看当前版本
  4. select now();      查看现在时间,包括年、月、日、小时、分钟和秒
  5. select curdate();   查看当前日期
  6. select curtime();   查看当前时间,只包括小时、分钟和秒
  7. select unix_timestamp();   获取当前时间的时间戳

特殊数据类型

  1. int  整型
  2. varchar char   字符型
  3. datetime  default current_timestamp 在插入新记录时自动设置时间戳字段的值为当前的 日期和时间

  default current_timestamp on update current_timestamp  插入时或更新时把该列的值设置为当前的日期和时间

  1. enum  枚举  enum("男“,”女“, ”保密“)  default "保密"  默认保密

使用python操作mysql

  1. 导入模块   import pymysql
  2. 构建连接   con = pymysql.content(user=root,password=123456 datebase=python2407)
  3.  构建游标  cur = con.cursour()

通过游标执行sql       cur.excute(sql语句)  sql语句:select * from students;  insert into students valuaes %s, 小明

  1. cur.fetchall()   获取所有数据,返回元组
  2. cur.fetchone()  获取一个数据,返回元组
  3. cur.fetchmany(size=n)  获取n个数据,返回大元组,默认一个小元组
  4. cur.scroll(mode=relative)  移动游标 relative相对位置  负值倒退 正值前进

absolute  绝对位置  0是初始位置 一直到len-1 可以随意定位

  1. cur.close()       关闭游标
  2. con.close()      关闭连接

索引

  1. 索引类型:主键索引、唯一索引、普通索引
  2. 索引不是越多越好,数据修改概率比较小,适合建索引,反之不适合

事物

  1. 四大特性ACIP:

原子性:事务不可在分割,要么全部执行要不全部放弃

一致性:事务执行前后都要保持数据一致性

隔离性:多个事务相互不干扰

持续性:事务一旦提交永久更改

  1. 关键字:begin  开始事物

rollback  回滚事务(出现异常时)

commit  提交事务

  1. 隔离级别,隔离处理高并发情况
  2. 读未提交,读已提交,可重复度,串行化

sqlite文件数据库

概念:一个文件就是一个数据库,数据库下可以有表

mongodb基础指令 

  1. 特点:结构不是固定的,没有关系表
  2. ubuntu安装:网站   https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/
  1. 终端输入:cat /etc/lsb-release
  2. sudo apt-get install gnupg curl
  3. curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \

   sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \   --dearmor

  1. echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
  2. sudo apt-get update
  3. sudo apt-get install -y mongodb-org
  4. echo "mongodb-org hold" | sudo dpkg --set-selections

echo "mongodb-org-database hold" | sudo dpkg --set-selections

echo "mongodb-org-server hold" | sudo dpkg --set-selections

echo "mongodb-mongosh hold" | sudo dpkg --set-selections

echo "mongodb-org-mongos hold" | sudo dpkg --set-selections

echo "mongodb-org-tools hold" | sudo dpkg --set-selections

  1. 启动服务:sudo systemctl start mongod
  2. 查看服务状态:sudo systemctl status mongod

pymongo:

  1. 导入模块  import pymongo
  2. 构建客户端  client = pymongo.MongoClient()
  3. db = client.create_database(python2407)  创建数据库
  4. db = client.get_database(python2407)    使用数据库,没有就创建
  5. db = client.drop_database(数据库名)   删除数据库
  6. db.list_database_names   列出所有的数据库名
  7. student = client.create_collection(student)   创建集合
  8. student = db.get_collection(student)     使用集合,没有就创建
  9. db.list_collection_names  列出所有集合名
  10. db.drop_collection(集合名) 删除集合

db = client.get_database(“python2407a”) 以下举例均在此数据库下

collection = db.get_collection(“student”)

  1. client.insert_one({name:101})  插入单个数据
  2. client.insert_many([{name:101},{name:张三}])  插入多个数据
  3. collection.delete_one({age:25})  删除第一个age=25的元素
  4. collection.delete_many({name:张三})  删除所有name=”张三”的数据
  5. collection.update_one({name:101},{$set:{name:1011,age:18}}, upsert=True)  更改第一个name=101的数据
  6. collection.update_many({name:张三},{$set:{name:张珊珊}},upsert=True)  更改所有name=张三的数据
  7. collection.find_one({name:张三})   查找第一个name=张三
  8. collection.find({name:张三})       查找全部name=张三
  9. 关闭连接  client.close()

 

redis基础指令 

  1. 内存数据库,内存键值对,操作内存中的数据效率要远远高于操作磁盘数据效率
  2. 启动服务:在Redis目录下输入cmd打开命令窗口,输入redis-server.exe redis.windows.conf,运行指定配置文件
  3. 启动客户端:上方打开的启动服务器不要关闭,重新打开一个cmd命令窗口,输入:redis-cli -h 192.168.13.20 -a 123456    -h是本机主机ip    -a是密码  进入后使用auth跟密码
  4. config get *    获取所有配置  
  5. config get requirepass  获取密码配置

以下是配置文件的个别内容

  1. config set loglevel warning  设置配置文件(临时配置,服务器重启会失效)
  2. dbfilename 数据库文件名    会不断的把内存中的数据与磁盘文件数据同步
  3. save   同步条件 save 900 1   如果在900s(15m)中至少改变了一个,执行保存

save 300 10 如果在300s(5m)中至少改变了十个,执行保存

save 60 10000 如果在60s(1m)中至少改变了一万个,执行保存

  1. requirepass    获取密码
  2. dir    获取文件
  3. bind   服务器绑定的ip
  4. slaveof <masterip> <masterport>   主从关系中 从的是哪个主机ip 端口
  5. masterauth <master-password>     主机密码
  6. 命令窗口输入  info replication   查看主从信息
  7. ubuntu  安装redis   终端输入 sudo apt install redis-server

redis五种数据类型

import redis

# 构建连接

client = redis.Redis(db=1)

# 关闭连接

client.close()

  1. 键的操作
  1. print(client.type("id"))   打印 id 的类型(假设已经存在)
  2. client.expire("id", 100)   设置id存活时间
  3. print(client.ttl("id"))     打印剩余存活时间
  4. client.persist("id")       设置为永久存在

  1. 字符串
  1. client.set("id",101)      创建字符串的键
  2. print(client.get("id").decode())   获取键
  3. client.mset({"name": "张三", "age": 23})  获取键的值
  4. print(client.mget(["name", "age"]))   获取键的多个值
  5. client.incr("id", amount=2)        id 自增,步长为2
  6. client.decr("id", amount=2)      id自减,步长为1(默认)

  1. 列表
  1. client.lpush("key_list", 1, 2, 3)    创建列表并向上添加(左)
  2. client.rpush("key_list", 0)     向下添加(右)
  3. print(client.llen("key_list"))       打印列表长度
  4. client.lpop("key_list")            删除上(左)
  5. client.rpop("key_list")            删除下(右)
  6. print(client.lindex("key_list",1))    返回索引对应的元素
  7. print(client.lrange("key_list",1,3))   返回索引范围内的元素
  8. print(client.ltrim("key_list",2,3))    切割

  1. 哈希
  1. client.hset("key_hash", "key2", "value2")  创建hash表,添加键值对
  2. print(client.hget("key_hash", "key2"))     获取表中键对应的值
  3. print(client.hlen("key_hash"))            获取长度
  4. client.hdel("key_hash", "key1")           删除对应的键值对
  5. print(client.hkeys("key_hash"))           获取所有的键
  6. print(client.hvals("key_hash"))          获取所有的值
  7. print(client.hgetall("key_hash"))         获取所有的键值对

  1. 集合
  1. client.sadd("key_set", 1, 2, 3, 4, 5)  

client.sadd("key_set2", 1, 3, 5, 7)      创建表并添加数据

  1. client.srem("key_set", 1,6)            删除对应的数据
  2. print(client.sismember("key_set","3"))  判断是否是成员
  3. print(client.scard("key_set"))          打印成员个数
  4. print(client.smembers("key_set"))      打印所有成员
  5. print(client.sinter(["key_set", "key_set2"]))  求两列表的交集
  6. print(client.sunion(["key_set", "key_set2"]))  求两列表的并集
  7. print(client.sdiff(["key_set", "key_set2"]))     求两列表的差集

  1. 有序集合
  1. client.zadd("key_zset", {"q": 5, "y": 2, "c": 6})   创建表并添加权重
  2. client.zrem("key_zset","q")            删除值和对应的权重
  3. print(client.zrange("key_zset", 1, 10))    查找范围内满足条件的权重
  4. print(client.zcount("key_zset",1,7))      查找范围内满足条件的权重的个数

print(client.zscore("key_zset","c"))       根据值查看权重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值