三、Linux基础
Linux常用指令
切换:cd
删除文件: rm
创建文件:touch
创建文件夹: mkdir
显示当前在哪个文件夹:pwd
显示当前文件夹下的普通文件: ls
显示详细信息:ll
剪切/重命名:mv
查看文件: cat
编辑:vi/vim
复制: cp
切换账户: su
创建账户:useradd
删除账户:userdel
创建用户组:groupadd
删除用户组:groupdel
查找文件:find
查找行:grep
压缩: tar
修改权限:chmod (rwx)
查看进程:ps process
杀进程:kill -9 进程号
查看日志:tail
文件名开头有“.”是隐藏文件
四、MySQL基础
1、什么是数据库:
按照数据结构来组织、存储和管理数据的仓库。
2、什么是关键性数据库、主关键字、外键、索引
3、数据库语言四大分类DDL、DML、DQL、DCL
A、DDL(数据定义语言)
用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER 表名 (列 1 类型 约束,列 2 类型 约束…)
其余常用命令有:drop,alter,truncate和rename。
B、DQL(数据查询语言)
基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
e.g:
//假如要查询女员工表的姓名、年龄,并以年龄升序排列
select name,age from tb_emp where sex='女' order by age;
some details:
a. 查询条件:where
基本条件查询语句 select * from student where id =1(表示查询student表中id=1的学生的所有列)
where后跟查询条件,查询的如果是字符串,要带引号;多条件查询如果是并且条件用and 或者用or
e.g:
查询出班级号为20201001班的学生并且要求是男生,年龄大于20
SELECT * from student where class_num = '20201001' and sex = '男' and age > 20
查询出班级号为20201001班的学生或者性别为女的学生
SELECT * from student WHERE class_num = '20201001' or sex = '女'
b. 去重查询 DISTINCT
例子:查询出表当中有哪些性别 SELECT DISTINCT sex FROM student
c. 模糊查询重点 模糊查询可以实现搜索功能
基本语法 like 通配符
例子 select * from student where name like '%王' 表示模糊查询name以王结束的
select * from student where name like '王%' 表示模糊查询name以王开头的
select * from student where name like '%王%' 表示模糊查询name中包含王字的
d. 排序查询 ORDER BY 倒序关键字DESC
默认排序规则是根据id进行排序,并且是id从小到大 SELECT * FROM student
例子 按照年龄从低到高进行排序
SELECT * FROM student ORDER BY age
按照年龄从高到低进行排序
SELECT * FROM student ORDER BY age DESC
e. 分页查询
分页公式:(页码-1)*步长,步长
limit关键字 限定查询多少条数据
OFFSET关键字 从第几条数据开始查询 默认第一条数据是0
查询出第二页的数据,这一页有3条数据
SELECT * FROM student LIMIT 3 OFFSET 3
知道页数和每页查询的数据(固定)
SELECT * FROM student LIMIT 数据量 OFFSET 数据量 * (页数-1)
SELECT * from student LIMIT 0,3
LIMIT 0,3 limit后一个数据表示从第几条数据查起,后面数据是查询的条数
f. 聚合查询
count() :记录查询列有多少行
SUM() :求数值序列的和
AVG() :求平均数
MAX() :求最大值
C、DML(数据操作语言Data Manipulation Language)
insert into tb_emp values(2,'lili','男','IT部');
D、DCL(数据控制语言)
用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK 回滚命令使数据库状态回到上次最后提交的状态。
其格式为:
SQL >ROLLBACK;
3)REVOKE:取消授权。
4) COMMIT [WORK]:提交。
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。
提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型:
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL >COMMIT;
(2) 隐式提交
用 SQL 命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL >SET AUTOCOMMIT ON
4、delete、drop、truncate的区别?
delete:只是删除表中的数据。
drop:是删除表,包括表的结构和数据。
truncate:是删除数据和自增索引,保留表结构。(可理解为删除原表创建了新表)
5、数据库的类型
关系型数据库;非关系型数据库;网状数据库;层次数据库。目前最常见的数据库模型主要是:关系型数据库和非关系型数据库。
A. 关系型数据库
关系型数据库模型是将复杂的数据结构用较为简单的二元关系(二维表)来表示。在该类型数据库中,对数据的操作基本上都建立在一个或多个表格上,我们可以采用结构化查询语言(SQL)对数据库进行操作。关系型数据库是目前主流的数据库技术,其中具有代表性的数据库管理系统有:Oracle、DB2、SQL Server、MySQL等。
a. Oracle
Oracle数据库是由美国的甲骨文(Oracle)公司开发的世界上第一款支持SQL语言的关系型数据库。经过多年的完善与发展,Oracle数据库已经成为世界上最流行的数据库,也是甲骨文公司的核心产品。Oracle数据库具有很好的开放性,能在所有的主流平台上运行,并且性能高、安全性高、风险低;但是其对硬件的要求很高、管理维护和操作比较复杂而且价格昂贵,所以一般用在满足对银行、金融、保险等行业大型数据库的需求上。
b. DB2
DB2是IBM公司著名的关系型数据库产品。DB2无论稳定性,安全性,恢复性等等都无可挑剔,而且从小规模到大规模的应用都可以使用,但是用起来非常繁琐,比较适合大型的分布式应用系统。
c. SQL Server
SQL Server是由Microsoft开发和推广的关系型数据库,SQL Server的功能比较全面、效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操作系统紧密继承,无论是应用程序开发速度还是系统事务处理运行速度,都能得到大幅度提升。但是,SQL Server只能在Windows系统下运行,毫无开放性可言。
d. MySQL
MySQL是一种开放源代码的轻量级关系型数据库,MySQL数据库使用最常用的结构化查询语言(SQL)对数据库进行管理。由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个人需要对其缺陷进行修改。
由于MySQL数据库体积小、速度快、成本低、开放源码等优点,现已被广泛应用于互联网上的中小型网站中,并且大型网站也开始使用MySQL数据库,如网易、新浪等。
B. 非关系型数据库
NOSQL(Not Only SQL)泛指非关系型数据库。关系型数据库在超大规模和高并发的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。NOSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。常见的非关系型数据库管理系统有Memcached、MongoDB,redis,HBase等。
注:关系型数据库都是把数据保存在硬盘上,不会随着关机而丢失数据
非关系型数据库是吧数据保存在内存中,电脑一旦关机数据也会丢失。
6、事务的并发异常
A、回滚丢失:此种更新丢失是因为回滚的原因,所以叫做回滚丢失。
B、覆盖丢失:此种更新是因为更新被其他事务覆盖了,所以叫做覆盖更新
C、脏读:一个事务读取了另一个事务尚未提交的数据
D、不可重复读:一个事务对同一行数据执行了两次或以上的查询,结果却不同
E、幻读:幻读和不可重复读有点像,只是针对的一般是数据的数量(一组)
7、隔离级别
隔离级别主要包括:
读未提交(read uncommitted)
读已提交 (read committed)
可重复读 (repeatable read)
串行化 (serializable)
隔离级别越高,数据的效率越低
MySQL数据库InnoDB存储引擎(默认)的默认隔离级别是Repeatable Read
Oracle数据库默认的隔离级别是Read Committed
8、SQL表的连接方式
外连接分为两种:是以某张表为主:有主表
left join :左外连接(左连接),以左表为主表
right join:右外连接(右连接),以右表为主表
语法:左表 left/right join 右表 on 左边.字段 = 右表.字段
左外连接结果最少不少于左表的数量,右外也是相同。
C. 自然连接:natural join ,自然连接,就是自动匹配连接条件:系统以字段名字作为匹配模式(同名字段就作为条件,多个同名字段都作为条件)
自然连接:可以分为自然内连接和自然外连接。
自然内连接:左表 natural join 右表;
自然外连接:左表 natural left join 右表
交叉连接:cross jojn(笛卡尔积)