Mysql 学习(一)

数据库软件:
开源软件: MYSQL 、 mongdb、 redis、mariadb
商业软件:oracle 、db2 、SQL Server(windows)
关系型数据型软件 mysql mariadb
要按照一定组织结构存储数据,并且数据和数据之间可以互相管理操作。
非关系型数据库软件(NoSQL)mongdb 、redis 、memcached
key = 值
MySQL 的特点及应用:
主要特点:–适用于中小规模、关系型数据系统
—Linux/Unix、Windows等多种操作系统
—使用C和C++编写,可移植强
—通过API支持Python/Java/Perl/PHP等语言
典型应用环境:—LAMP平台、与Apache HTTP Server
—LNMP平台、与Nginx组合
一 、下载mysql软件
下载网址 :https://dev.mysql.com/downloads/file/?id=485654
1、卸载系统自身带mariadb等软件
#yum -y remove mariadb
#mv /etc/my.cnf /etc/my.cnf.old 将RHEL自带的mariadb-libs改名备份
(或者:#rpm -qa | grep -i mariadb
#systemctl stop mariadb
#rpm -e --nodeps mariadb mariadb-server)
#tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.26-1.el7.x86_64.rpm 头文件和库文件作为Mysql的嵌入式库文件
mysql-community-libs-5.7.26-1.el7.x86_64.rpm 数据库客户端应用程序的共享库
mysql-community-embedded-5.7.26-1.el7.x86_64.rpm Mysql嵌入式函数库
mysql-community-test-5.7.26-1.el7.x86_64.rpm 数据库服务器的测试套件
mysql-community-embedded-compat-5.7.26-1.el7.x86_64.rpm Mysql嵌入式兼容函数库
mysql-community-common-5.7.26-1.el7.x86_64.rpm 数据库和客户端共享文件
mysql-community-devel-5.7.26-1.el7.x86_64.rpm 数据库客户端应用程序的库和头文件
mysql-community-client-5.7.26-1.el7.x86_64.rpm 数据库客户端软件
mysql-community-server-5.7.26-1.el7.x86_64.rpm 非常快速和可靠的SQL数据库服务器
mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm 数据库客户端应用程序的共享兼容库
#ls *.rpm
_____________________________________________________________________
2、安装Mysql 依赖包 :# yum -y install perl-Data-Dumper perl-JSON perl-Time-HiRes
# rpm -Uvh mysql-community- *.rpm 安装mysql (采用U升级安装,可替换冲突文件)
# systemctl start mysqld.service 启动
# rpm -qa | grep -i mysql 查看安装情况
# systemctl status mysqld
# systemctl list-unit-files | grep -i mysql
服务名:mysqld 默认端口号:3306
传输协议:TCP 进程所有者:Mysql ;进程所属组:mysql
服务的主配置文件:/etc/my.cnf (不用修改配置文件)
数据库目录:/var/lib/mysql
日志文件:/var/log/mysqld.log
服务脚本为:/usr/lib/systemd/system/mysqld.service
启动服务:# systemctl start mysqld
设置开机自启 :# systemctl enable mysqld
查看服务进行和端口:# ps -C mysqld
# netstat -antulp |grep mysqld


二、数据库服务的基本使用
2.1 使用初始化密码在本机连接数据库服务
首次登陆 : # mysql -u root -p 无需密码直接登录
**语法: #mysql -h 数据库服务器ip地址 -u 用户名 -p密码 **
# grep password /var/log/mysqld.log | tail -1 查看初始密码(随机生成的)
# mysql -hlocalhost -uroot -p’,usw1POMyEkG’ (随机密码有特殊符号时,用单引号括起来)
2.2 重置本机连接密码
修改root口令 :(validate_password_policy 验证密码策略
0 or LOW ---->只检查长度; 1 or MEDIUM(默认) ---->长度、数字、小写/大写、和特殊符号;
2 or STRONG -----> 长度 、数字、小写/大写、特殊字符、字典文件)
]# mysql -hlocalhost -uroot -p’,usw1POMyEkG’
mysql> set global validate_password_policy=0; 密码强度检查等级
mysql> set global validate_password_length=6; 密码最小长度
mysql> alter user root@“localhost” identified by “123456”; (使用 alter user 重设口令)
# mysql -hlocalhost -uroot -p123456
mysql> show databases;
注意:(这里设计到一个问题:想要设置密码策略,必须前提安装了validate_password 插件,即支持密码强度的要求.
mysql>INSTALL PLUGIN validate_password SONAME ‘validate_password.so’; 或者修改配置文件安装插件)
想要密码设置策略永久有效,修改配置文件/etc/my.cnf
#vim /etc/my.cnf
[mysqld]
plugin-load=validate_password.so 安装插件
validate_password_policy=0
validate_password_length=6
# systemctl restart mysqld 重启服务
禁用或降低安全级别:
[mysqld]
validate-password=OFF 禁用
validate_password_policy=LOW 降低安全级别

  1. 3 把数据存储在数据库服务器上的过程
    数据库存储流程:连接数据路服务器—> 建库 ---->建表 ---->插入记录 ---->断开连接
    连接数据库服务器的方式(命令行 API 图形工具)
    选择库(存放数据的文件夹)
    选择表(文件)
    插入记录(文件中的行)
    断开连接
    术语:
    列:一列包含相同性质的数据; 行:一行时一组相关的数据(表记录);
    主键:唯一的,一个数据表只能有一个主键,用主键查询数据;
    外键:用于关联两个表;复合键:将多个列作为

2.4 操作指令分类
-----MySQL指令:环境切换、看状态、退出等控制
-----SQL指令:数据库定义/查询操纵/授权语句
注意事项:–操作指令不区分大小写(密码、变量值除外)
–每条SQL指令以 ;结束或分隔
–不支持Tab建自动补齐
– \c可废弃当前编写错的操作指令
------常用的SQL操作指令:
----DDL数据定义语言 (create alter drop)
----DML数据操作语言 (insert update delete)
----DCL数据控制语言 (grant revoke)
----DTL数据事物语言 (commit rollback savepoint)
2.5 管理数据库的sql命令
库类似于系统的文件夹 (不能删除系统默认的四个库)
— show database; //显示已有的库
—Use 库名; //切换库
—select database(); //显示当前所在的库
—create database 库名; //创建新库
—show tables; //显示已有的表
—drop database 库名; //删除库
数据库的命名规则:—可以使用数字/字母/下划线,但是不能纯数字;
—区分大小写,具有唯一性
—不可使用指令关键字/特殊字符
显示当前所在的库:mysql> select database;
新建库:mysql> create database gamedb;
2.6 管理表的sql命令
表的字段设置: 字段名 | 字段类型 |是否为空 |是否为主键 |默认值 |描述信息
表类似于系统的文件:
—create 库名.表名 //创建表
— Desc 表名; //查看表结构
—select * from 表名; //查看表记录
—drop table 表名; //删除表
新建指定名称的表:–CREATE TABLE 库名.表名 (
字段名1 字段类型(宽度)约束条件,
字段名2 字段类型(宽度)约束条件,
字段名N 字段类型(宽度)约束条件
);
字段名即为列名;行即为表记录;

2.7 管理记录的sql命令
记录类似于文件里的行
—select * from 库名.表名; // 查看表里所有记录
—insert into 表名 values (值列表); //插入表记录 ,值赋值字符要用双引号括住;
—update 表名 set 字段=值; //修改表记录
—delete from 库名.表名; //删除表记录
2.8 Mysql 数据类型
2.8.1 常见的信息种类: 数值型 字符型 枚举型 日期时间型
数值型(只能存整数):TINYINT 微小整数0~255 ; SMALLINT 小整数 0-65535;MEDIUMINI 中整数;
INT:大整数(主要用这种); BININT (8个字节,极大整数)
unsigned (使用数值类型有符号的范围即从零开始的数值,负数不允许。unsigned要跟在类型后面)
关于整数字段:–使用UNSIGNED ( unsigned)修饰时,对应的字段只保存正数
–数值不够指定宽度时,在左边填空格补位
–宽度仅是显示宽度,数值的大小由类型决定
–使用关键字ZEROFILL时,填0代替空格部位
–数值超出范围时报错
关于浮点型字段:
浮点型 (存储小数):FLOAT: 四个字节,单精度浮点数; DOUBLE :8个字节 双精度浮点数
—定义格式:float(总宽度,小数位数)
—当字段值与类型不匹配时,字段值作为0处理
—数值超出范围时,仅保存最大/最小值
float(M,N) M 设置总数位
double(M,N) N 设置小数位位数
字符类型:定长 、 变长 、大文本类型
定长:char(字符数)–最大长度255字符—不够指定字符数时在右边用空格补齐—字符数断超时,无法写入数据
变长:varchar(字符数0- 65532)–按数据实际大小分配存储空间–字符数断超时,无法写入数据
大文本类型(音频/视频/):text/blob —字符数大于65535存储时使用
日期时间类型: 日期时间(DATATIME 、TIMESTAMP) ; 日期 DATA 、年份 YEAR、时间 TIME
datetime:占用8个字节
timestamp:占用4个字节
关于日期时间字段:当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值;
而DATATIME字段默认赋值为NULL

mysql> create table t7( meeting datetime, party timestamp );
mysql> insert into t7 values(now(),now());
mysql> insert into t7(meeting)values(20191020152031);
mysql> insert into t7(party) values(20151015102435);
日期 DATE:占用四个字节, YYYYMMDD 范围:0001-01-01~9999-12-31
年份 YEAR:占用一个字节 YYYY,范围:1901~2155
时间 TIME:占用3个字节 格式:HH:MM:SS
YEAR 年份的处理:默认用4位数表示,当只用2位数赋值时,01~69视为2000–2069,而70 ~99视为1970 ~1999
获取日期时间给对应的日期时间类型的字段赋值:
获取日期时间函数:
now():获取当前系统的时间; mysql> select now();
year(日期时间)获取指定时间中的年 ; mysql> select year(now()); mysql> select year(20181020);
month(日期时间) 获取指定时间中的月; mysql> select month(now());
date(日期时间)获取指定时间中的日期; mysql> select date(now());
day(日期时间)获取指定时间中的天; mysql> select day(now());
time(日期时间)获取指定时间中的时间 mysql> select time(now());
mysql> insert into t6(name,start_year)values(“tom”,1999); 给指定字段赋值;
----枚举类型 (插入记录时记录的值在列举的范围内选择)
enum 只能在选项里选择一个;
set (在选项里选择一个或多个,所有值放在一个双引号里,不同值用 “ ,” 分隔)
三、 卸载MySQL
1、 #rpm -qa |grep -i mysql
#rpm -e --nodeps mysql-community-server-5.7.26-1.el7.x86_64
警告:/etc/my.cnf 已另存为 /etc/my.cnf.rpmsave
2、查找之前老版本mysql的目录、并且删除老版本mysql的文件和库
#find / -name mysql
#rm -rf /var/lib/mysql 删除MySQL相关的文件
#rm -rf /var/bin/mysql
#rm -rf /etc/my.cnf
查看还有没有mysql服务:# systemctl list-unit-files | grep -i mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值