在Linux下学习MySQL

在Linux下学习MySQL

目录:

1、升降序排序命令英文全称:

2、MySQL在Linux上的Yum安装过程:

3、为什么需要格式化磁盘?

4、MySQL数据类型:

5、 数据类型属性的常用关键字及其含义:

6、忘记密码处理

7、MySQL索引:

8、MySQL的聚合函数:

9、MySQL的字符串函数:

10、存储过程函数:

11、练习


1、升降序排序命令英文全称:

答:(1)desc + 表名:显示数据表的结构(description)

(2)desc(descend,降序)

(3)asc(ascend,升序)

 

2、MySQL在Linux上的Yum安装过程:

答:①首先将本地的MySQL的rpm文件上传到虚拟机上;

alt + p进入文件传输 → lpwd查看外部主机目录 → lcd E:\\ 进入到外部主机的E盘 → lls 查看外部主机当前目录下的文件和文件夹 → put mysql57-community-release-el7-8.noarch.rpm 和 put mysql-community-server-5.7.13-1.el7.x86_64.rpm则将两个文件导入到Linux虚拟机中

②rpm -ivh解压文件(install-verbose-hash,安装显示安装进度);

#rpm -ivh mysql57-community-release-el7-8.noarch.rpm

③进入到yum源的配置文件夹中,要用yum,必须放在/etc/yum.repos.d的文件夹下,才能生效,yum配置文件必须.repo结尾;

#cd /etc/yum.repos.d/

④查看此文件夹下的列表

#ls

⑤因为可能存在配置文件之间的相互影响,所以备份一下CentOS.repo文件

#mv CentOS.repo CentOS.repo.bak

⑥清除Yum仓库的缓存

#yum clean all

⑦查看Yum仓库的情况

#yum repolist

⑧安装文件

#yum install mysql-community-server-5.7.13-1.el7.x86_64.rpm

安装成功!

 

3、为什么需要格式化磁盘?

答:因为各种操作系统都必须按照一定的方式来管理磁盘,而只有格式化才能使磁盘的结构能被操作系统认识。

格式化会把磁盘上已有的信息全部破坏。

格式化命令可以检查磁盘是否有缺陷,上面有多少空间可用;它还会建立一个目录表,用于存放将来写到该磁盘上的文件的有关信息。因此,在打算使用一个新磁盘之前,必须首先对它进行格式化。

对磁盘进行格式化时可以完成很多功能:在磁盘上确定接收信息的磁道和扇区,记录专用信息,如磁道标志(每个磁道一个)、扇区标志(每个扇区一个)和保证所记录的信息是准确的CRC位(循环冗余校验)。

 

4、MySQL数据类型:

答:(1)整型有五种类型:

tinyint(1个字节)、

smallint(2个字节)、

mediumint(3个字节)、

int(4个字节)、

bigint(5个字节),

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0-256)。

(2) 浮点型(float和double):

float(m, d)(8位精度,4个字节)、:

double(m, d)(16位精度,8个字节),

m为总个数,d为小数位。如float(5, 3),插入一个数123.4567,实际数据库里存储的是123.457,但总个数还是以实际为准,为6位。

(3)字符串(char,varchar,_text)

char(固定长度,最多255个字符)、

varchar(可变长度,最多65535个字符)、

tinytext(可变长度,最多255个字符)、

text(可变长度,最多216- 1个字符)、

mediumtext(可变长度,最多224- 1个字符)、

longtext(可变长度,最多232 - 1个字符)

(4)二进制数据(_Blob)

①BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
②BLOB存储的数据只能整体读出。 
③TEXT可以指定字符集,_BLO不用指定字符集。

主要用于存放音频或者视频数据

(5)日期时间类型:

date:日期 '2008-12-2'

time :时间 '12:25:36'

datetime :日期 + 时间 '2008-12-2 22:06:44'

timestamp:时间戳,自动存储记录修改时间


5、 数据类型属性的常用关键字及其含义:

答:①null :数据列可以保存空值

②not null :数据列不允许包含空值

③default :默认值

④primary key :主键

⑤auto_increment :自动递增,适用于整数类型

⑥unsigned :无符号类型

⑦character set + name :指定一个字符集

 

6、如果忘记了MySQL的密码的话,可以有下面的方法解决:

答:修改MySQL的配置文件(默认为/etc/my.cnf),然后用vi my.cnf[mysqld]下添加一行skip-grant-tables。

②保存配置文件后,重启MySQL服务service mysqld restart.

③再次在命令行输入mysql -uroot -p,到输入密码时直接回车,就会进入MySQL数据库了就会进入MySQL数据库了,然后用flush privileges,刷新一下权限,这个时候用ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';来改密码,再用FLUSH PRIVILEGES;刷新下。

④密码修改完毕后,再按照步骤1中的流程,删掉配置文件中的那行,并且重启MySQL服务,新密码就生效了。

 

7、MySQL索引:

答:以下演示均来自建立的一个叫goods数据库中的表warehouse,里面有四列数据,goods_id,goods_number,goods_date,goods_price。

①查看表中数据:

select * from + 表名

 在Linux下学习MySQL_第1张图片

图7.1 查看表中数据

②创建索引

A)create index index_name on table_name(column_list)

 在Linux下学习MySQL_第2张图片

图7.2 创建索引

B)alter table + table_name add index + index_name(column_list)

 

图7.3 添加索引

③删除索引

A)drop index index_name on table_name

 

图7.4 删除索引

B)alter table + table_name drop index + index_name

 

图7.5 删除索引2

④查看索引

show index from table_name

 在Linux下学习MySQL_第3张图片

图7.6 查看索引

 

8、MySQL的聚合函数:

①count(column_name):返回指定列中非NULL值的个数

 在Linux下学习MySQL_第4张图片

图8.1 count函数示例

②avg(column_name):返回指定列的平均值

 在Linux下学习MySQL_第5张图片

图8.2 avg函数示例

③min(column_name):返回指定列的最小值

④max(column_name):返回指定列的最大值

⑤sum(column_name):返回指定列的所有值之和

⑥group_concat(column_name):返回由属于一组的列值连接组合而成的结果,可以把列级数据转成行级(PS:concat,合并的意思)

 在Linux下学习MySQL_第6张图片

图8.3 group_concat函数示例

 

9、MySQL的字符串函数:

答:(1ASCII(char)返回字符的ASCII码值

 在Linux下学习MySQL_第7张图片

图9.1 ascii函数示例

2BIT_LENGTH(str)返回字符串的比特长度

在Linux下学习MySQL_第8张图片
图9.2 bit_length函数示例
3CONCAT(s1,s2...,sn)s1,s2...,sn连接成字符串

在Linux下学习MySQL_第9张图片
图9.3 concat函数示例
4CONCAT_WS(sep,s1,s2...,sn)s1,s2...,sn连接成字符串,并用sep字符间隔

在Linux下学习MySQL_第10张图片
图9.4 concat_ws函数示例
5INSERT(str,x,y,instr)将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果

在Linux下学习MySQL_第11张图片
图9.5 insert函数示例
6FIND_IN_SET(str,list)分析逗号分隔的list列表,如果发现str,返回strlist中的位置

在Linux下学习MySQL_第12张图片
图9.6 find_in_set函数示例
7LCASE(str)LOWER(str)返回将字符串str中所有字符改变为小写后的结果

 在Linux下学习MySQL_第13张图片

图9.7 lower函数示例

(8)UCASE(str)UPPER(str)返回将字符串str中所有字符转变为大写后的结果

在Linux下学习MySQL_第14张图片
图9.8 upper函数示例
9LEFT(str,x)返回字符串str中最左边的x个字符

在Linux下学习MySQL_第15张图片
图9.9 left函数示例
10LENGTH(s)返回字符串str中的字符数

在Linux下学习MySQL_第16张图片
图9.10 length函数示例
11LTRIM(str)从字符串str中切掉开头的空格

在Linux下学习MySQL_第17张图片
图9.11 ltrim函数示例
12POSITION(substr in str)返回子串substr在字符串str中第一次出现的位置

在Linux下学习MySQL_第18张图片
图9.12 position函数示例
13QUOTE(str)用反斜杠转义str中的单引号

在Linux下学习MySQL_第19张图片
图9.13 quote函数示例
14REPEAT(str,count)返回字符串str重复x次的结果

在Linux下学习MySQL_第20张图片
图9.14 repeat函数示例
15REVERSE(str)返回颠倒字符串str的结果

在Linux下学习MySQL_第21张图片
图9.15 reverse函数示例
16RIGHT(str,x)返回字符串str中最右边的x个字符

在Linux下学习MySQL_第22张图片
图9.16 right函数示例
17STRCMP(s1,s2)比较字符串s1s2

在Linux下学习MySQL_第23张图片
图9.17 strcmp函数示例
18TRIM(str)去除字符串首部和尾部的所有空格

 在Linux下学习MySQL_第24张图片

图9.18 trim函数示例

 

10、存储过程函数:

答:①创建存储过程:

 在Linux下学习MySQL_第25张图片

图10.1 创建存储过程

②查看存储过程:

 在Linux下学习MySQL_第26张图片

图10.2 查看存储过程

③调用存储过程:

 在Linux下学习MySQL_第27张图片

图10.3 调用存储过程

④删除存储过程:

 

图10.4 删除存储过程

 

11、练习:

(1)linux上安装最新版的mysql数据库,创建普通用户dbuser

 

图11.1 创建用户

(2)创建班级的数据库,并把数据库授权给mysql使用,dbuser用户只能在本地网络192.168.13.0网段内连接数据库;

①创建班级数据库classes

 

图11.2 创建数据库

②给dbuser用户进行授权

 

图11.3 授权

③更新用户配置

 

图11.4 更新配置

dbuser用户只能在本地网络192.168.13.0网段内连接数据库;

 

图11.5 授权范围

(3)根据班级的人员结构,设计创建部门表,兴趣表(人员名字,电话,邮箱,爱好,人员ID,姓别,年龄,学校,及兴趣与部门关联表,并把数据录入数据库。

①设置部门表department,有列namephoneemailhobbyidsexage,插入五条数据

 在Linux下学习MySQL_第28张图片

图11.6 创建部门表

②设置兴趣表,有列hobbysalary

 

图11.7 创建兴趣表

③插入四条语句。

 在Linux下学习MySQL_第29张图片

图11.8 插入语句

④输出兴趣与部门关联表。

Select name,phone,email,hobby,id,sex,age,salary from department left join people on department.hobby=people.hobby2;

 在Linux下学习MySQL_第30张图片

图11.9 查找

(4)通过编写一个函数,能通过人员ID得到平均年龄。

BEGIN
	DECLARE V_RESULT VARCHAR(20);
	DECLARE V_HOBBYNUM INT;
	DECLARE V_AVG INT;
	DECLARE V_NUM INT;
	SELECT COUNT(*) INTO V_NUM FROM people WHERE HOBBY = V_HOBBY;
	IF V_NUM=0 THEN
		SET V_RESULT='NO HOBBY EXIST!';
	ELSE 
		SELECT COUNT(*) INTO V_HOBBYNUM FROM department WHERE ID=(SELECT ID FROM people WHERE HOBBY=V_HOBBY);
		IF V_HOBBYNUM=0 THEN
			SET V_RESULT='NO HOBBY PEOPLE';
		ELSE
			SELECT AVG(AGE) INTO V_AVG FROM department WHERE ID=(SELECT ID FROM people WHERE HOBBY=V_HOBBY);
			SELECT CAST(V_AVG AS CHAR) INTO V_RESULT;
		END IF;
	END IF;
	RETURN V_RESULT;
END;

你可能感兴趣的:(数据库)