Linux与数据库简要总结
Linux
Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux能运行主要的UNIX工具软件、应用程序和 络协议。它支持32位和64位硬件。Linux继承了Unix以 络为核心的设计思想,是一个性能稳定的多用户 络操作系统。
Linux的发行版本有很多,我学习的是centos7版本,在学习之前已经购买阿里云服务器并且还安装的centos7的虚拟机;
阿里云上的服务器只有命令行;而虚拟机可以选择安装可视化桌面,在桌面与命令行之间切换可以用ctrl+alt+f1和ctrl+alt+f2;
Nginx – HTTP server / wsgi
MySQL – Persestence/RDB 关系型数据库 SQL语言 持久化 方便、快速的存取 保证数据的有效性
Cluster 集群,N个服务器 + Nginx/Load Balance 负载均衡 + Keepalived 热备
Redis – High Speed Cache/NoSQL(= Not Only SQL)高速缓存服务
linux 相关命令如下:
Nginx – HTTP server / wsgi
MySQL – Persestence/RDB 关系型数据库 SQL语言 持久化 方便、快速的存取 保证数据的有效性
Cluster 集群,N个服务器 + Nginx/Load Balance 负载均衡 + Keepalived 热备
Redis – High Speed Cache/NoSQL(= Not Only SQL)高速缓存服务
查看进程:ps – process state
新增用户:adduser
修改/新增密码:passwd + 用户名
切换用户:su – switch user
重启:reboot/init 6
关机:shutdown/init 0
显示连接用户:who/who am i/w
历史命令:history
执行历史命令:!+ 历史编
查看当前工作路径:pwd – print working directory
切换目录:cd – change directory
列出当前目录下的文件:ls – list directory contents
列出当前目录下的文件(含隐藏文件):ls -a
以长格式列出当前目录下的文件:ls -l 或 ll
以长格式列出当前目录下的文件(含隐藏文件):ls -la 或ls -l -a
注:长格式中:‘r – read读 w – write写 x – execute执行’
查看内容前n行(不写-n,默认前10行):head -n 文件名
查看内容后n行(不写-n,默认后10行):tail -n 文件名
回到当前用户主目录:cd ~
以.开头的文件或文件夹为隐藏文件
查看文件里面的内容:cat + 文件名
查看命令手册(manual):man + 命令
查看命令详细信息(information):info + 命令
查看命令简略帮助信息:命令 + –help
(–help|less 或–help|more 一页页的显示)
创建空文件:touch +文件名
删除文件:rm + 文件名
强制删除文件:rm -f +文件名
创建文件夹: mkdir + 文件名
删除空文件夹: rmdir + 文件名
强制删除文件夹: rm -rf + 文件名
回声命令:echo
拷贝:cp +文件名 a/修改后文件名(不写则默认不改文件名)
剪切/改名字:mv +文件名 a/修改文件名(不写则默认不改文件名)
往文件内写入内容: echo ‘内容’ > 文件名
比较两个文件内的内容,找出不同:diff A文件名 B文件名
字符统计,查出文件内字符数量:wc +文件名
结果(行数,单词数,字符数(含末尾光标))
字符统计,查出文件内指定字符数量:grep -o 字符名 文件名|wc -l
检查文件类型:file + 文件名
联 :wget +域名
联 下载指定文件名:wget +域名 -O +文件名
查找文件内指定内容:cat +文件名|grep +内容
文件内容去重:uniq [-cdu][-f][-s][-w][–help][–version][输入文件][输出文件]
uniq +文件名 去除文件内的重复内容
uniq -c 文件名 检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数
文件内容排序:sort [-bcdfimMnr][-o][-t][+–][–help][–verison][文件]
sort +文件名 文件内的排序
压缩:gzip +文件名
解压缩:gunzip +文件名
一起归档:tar -cvf 指定文件名 +需归档文件名(*.txt即所有的txt格式文件)
解档: tar -xvf 指定文件名
命令所在路径:which +命令
查看所有包含该命令所在路径:whereis +文件名
日历:cal +年份
录制脚本(记录操作):script +文件名(默认为typescript)
(退出:exit)
同一Linux不同用户相互之间可以发信息:write +用户名
可以直接发送警告:wall +内容 (所有用户都可以收到)
杀掉进程:kill +进程
强制杀掉进程:kill -9 +进程
新增/修改当前用户权限:chmod u+x +文件名
(x:执行;r:读;w:写)
去掉当前用户权限: chmod u-x +文件名
同组用户增加权限:chmod g+x +文件名
其他用户增加权限:chmod o+x +文件名
所有用户修改权限为可读可写可执行:chmod 777 +文件名
(-rwxrwxrwx 当前用户、同组用户、其他用户 二进制:111 111 111 也就是777)
执行文件:./文件名
python2中可读汉字(页首写):#* coding:utf-8 *
移除软件:remove
查进程:ps -aux 或ps -ef
列出安装的软件:yum list installed
centos 7 防火墙:firewalld
查看防火墙状态:firewall-cmd –state
查看服务状态:systemctl status 服务名
停止防火墙:systemctl stop firewalld
系统控制(centos7): systemctl
重启防火墙:firewall-cmd –reload
那怎么开启一个端口呢
添加
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload
查看
firewall-cmd –zone= public –query-port=80/tcp
删除
firewall-cmd –zone= public –remove-port=80/tcp –permanent
(其它低版本:servies)
安装rpm文件:rpm -iv 文件名
查看端口状态:netstat -na|grep 端口
查看端口 及其进程:netstat -nap|grep 端口
将信息放入指定文件:netstat -nap > 文件名
将错误信息放入指定文件:netstat -nap 2> 文件名
停止nginx:nginx -s stop
远程连接到其他服务器:ssh 用户名@IP地址
络拷贝
本地复制到远程:scp 地址及文件名 用户名@IP地址:下载到指定地址及文件名
远程复制到本地:scp 用户名@IP地址:地址及文件名 下载到指定地址及文件名
上传与下载前奏:sftp 用户名@IP地址
下载:get 文件名
上传:put 文件名
nat: 络地址转换
路由器端口映射:外 可以访问内
找当前目录下文件:find -name 文件名
找内容(n为行 ,R为递归的寻找,均可省略):grep “字符” 文件名 -n -R
xargs
创建符 链接(硬链接。新建一个链接B指向A,AB都是打开同一文件):ln 文件名A 文件名B
注:此处A和B都指向文件源,删除一个,另一个不受影响,相当于不占用空间的情况下做了备份
软链接(相当于windws下的快捷方式,新建一个链接B,为A的快捷方式):ln -s 文件名A 文件名B
redis后台运行(多一个&):redis-sever myredis.conf &
redis后台运行(重定向,输出到指定文件):redis-server myredis.conf > 文件名 &
后台运行的任务放到前台(%后面的数字代表第几个任务):fg %1
启动服务端:redis-cli
输密码:auth 密码
访问
自己写的程序开机自启
方法一:
cd /etc
vi rc.local
添加要执行的程序地址:
例如:/home/xl/./hello.py
那么开机就会执行该python程序(前提hello.py改为可执行)
方法二、
可以利用crontab实现
这时候才完成了全部工作。
取得进程 并关闭
ps -aux|grep 进程名|awk ‘{print $2}’|xargs kill
在任意目录下都可以执行mycal ==> ln -s /root/mycal /usr/bin/mycal
root文件夹下所有可执行程序在任意目录下都可执行:
cd ~
vi .bash_profile
在bin后加:/root
定义用户登录可执行的动作:
vi .bash_profile
export PASH 的下一行添加动作就可以了
例如:
echo Welcome to my world!
定义开机执行的动作:
cd /etc
vi rc.local
最后一行添加动作就可以了
例如:nginx
注: 以上的命令肯定不能涵盖所有Linux命令,其余的命令在用的时候再查就好了。也可以通过’菜鸟教程’上去查询与学习。
VI-VIM
创建文件:vi +文件名(若有则打开该文件)
i
esc
在命令行时:
:set nu :列
:set nonu :取消列
:syntax on:高亮语法
:set ts=4 制表键改成4个空格
dd:删整行
dw:删一个单词
u:撤销
5dd:删5行
G:到最后一行
gg:到第一行
100G:到100行
/字符 查找字符
n 重复上一个搜寻
:1,$s/word1/word2/g ==>从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)【g全局搜索,gc为全局搜索且每次修改需确认 gice==> 全局,忽略大小写,修改需确认,不显示错误】
开始录制宏(宏的名字只能是abcd中的一个):qa
结束录制:q
宏录制的内容重复执行n遍:n@a
用正则表达式需转义
定义缩写书写方式,即短缩写代替长的代码,下次使用直接可以调出:
命令模式下: :abbr 字符 长字符
(退出后,下次进入就么没有了)
定义快捷键,命令模式下:
:map 快捷键 命令A
注:当然,这些只是一些简单的命令,至于所有的快捷方式及命令,可以参见下图,这张图是从其他地方发现的,感觉特别有用,至于在哪儿发现的,我忘了,但是百度一下,你应该就会知道。

数据库
数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
在信息化 会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
MySql 关系型数据库
Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
注:关系型数据库 ==> 关系代数 + 集合论
用二维表组织数据
SQL ==> 自己的编程语言 ==> 结构化查询语言
安装数据库客户端及服务器:yum install mariadb-server mariadb
启动数据库服务器:systemctl start mariadb
停止数据库服务器:systemctl stop mariadb
连接本地数据库服务器:mysql -u root -p
连接其他用户的数据库服务器:mysql -h ip地址 -u 用户名 -p
显示所有数据库:show databases; (有分 哦)
要使用mysql数据库:use mysql
查看表内所有行所有列:select * from user;
查询用户名、连接方、密码:select user, host, password from user;
修改连接方访问,远程连接(%为所有人):update user set host=’%’ where host=’xxx’ and user=’root’;
查看 络端口是否正常:netstat -na|grep 端口
数据库服务开机自启:systemctl enable mariadb
取消数据库服务开机自启:systemctl disable mariadb
– SQL: Structured Query Language
– DDL: create / drop / alter
– DML: insert / delete / update
– DQL: select
– DCL: grant / revoke
自增:auto_increment
通过主键id 与外键sid 将多个表格联系起来 进行查询(例如:学生,班级,信息三个表格)
select * from table1 t1, table t2, table3 t3
where name=” and t1.id=t2.sid and t3.sid=t2.id
倒序查询:select * from student order by (-id);
desc 看表的结构
函数返回表中的记录数:count(*)
根据一个或多个列对结果集进行分组: group by()
modify 修改类型:alter table 表格名称 modify 项目名称 改后的类型;
change 修改类型:alter table 表格名称 change 改前的项目名称 改后的名称 改后的类型;
关键字==>max,min,avg,求最大值,最小值,平均值: select 关键字 from student;
给表TbSC添加外键约束;
(on delete cascade – 主键删除时此外键也删除)
(on update cascade – 主键更新改变时外键也更新)
(on delete set null – 主键删除时,外键值设置为null)
alter table TbSC add constraint fk_cid foreign key (sid) references bStudent(stuid) on delete cascade on update cascade;
where 里面不能写聚合函数直接判断,但是having可以:
select * from A group by XX having avg(XXX)>=90;
表达式:IF( expr1 , expr2 , expr3 )
expr1条件,条件为true,则值是expr2 ,false,值就是expr3
IFNULL( expr1 , expr2 )
在 expr1 的值不为 NULL的情况下都返回 expr1,否则返回 expr2
sql语言
SQL 是用于访问和处理数据库的标准的计算机语言。
如下,创建一个叫company的数据库,并进行增删改查的操作:
– SQL (结构化查询语言-Structure Query Laguage)
– DDL (数据定义语言)creat 创建/ drop 删除 /alter 修改
– DML
– DQL
– DCL
– 创建comany数据库
drop database if exists company;
create database company default charset utf8;
– 关系型数据库用二维表组织数据
– 关系型数据库有自己的编程语言
– 切换到campany数据库
use company;
– 创建部门表
– 能够唯一确定一条记录的列可以设置为主键
– 删表
drop table if exists tb_dept;
create table tb_dept
(
deptno integer not null comment ‘部门编 ’,
dname varchar(20) not null comment ‘名称’,
dloc varchar(10) comment ‘所在地’,
primary key (deptno)
);
alter table tb_dept add ddate date not null comment ‘成立日期’;
– 向部门表添加数据
insert into tb_dept values (10, ‘财务部’, ‘成都’,now());
insert into tb_dept (deptno, dname) values (20, ‘研发部’);
insert into tb_dept (deptno, dname) values (30, ‘销售1部’), (40, ‘销售2部’), (50, ‘后勤部’);
– 删除数据(注意:一定要带上条件)
delete from tb_dept where deptno=50;
update tb_dept set dloc=’深圳’, ddate=’2018-4-1’ where deptno=30;
update tb_dept set dloc=’成都’, ddate=’2018-4-3’ where deptno=20 or deptno=40;
– 查所有行所有列
select * from tb_dept;
– 投影
select deptno, dname from tb_dept;
– 别名
select deptno as 部门编 , dname as 部门名称 from tb_dept;
– 筛选
select deptno, dname from tb_dept where dloc=’深圳’;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!