MySQL第一天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL第一天相关的知识,希望对你有一定的参考价值。

DATABASE day1:
一、搭建数据库服务器
二、数据库服务的基本使用
三、mysql数据类型
四、管理记录
五、用户授权与权限撤销
六、数据备份与恢复
七、MySQL主从同步
八、数据读写分离
九、MySQL优化
十、MySQL 集群
#######################
一、搭建数据库服务器
数据库服务器是用来存储数据
1、购买服务器的硬件配置:存储 CPU 内存
2、安装操作系统:Linux UNIX Windows
3、安装提供数据库服务的软件包:
3.1有哪些类型的软件:mysql mariadb sql-server db2
3.2来源:官网下载 系统安装光盘自带的
3.3类型:RPM(不可修改) 源码包(可自定义)
3.4软件包的开源是否跨平台:

安装前准备
基本需要
-1.采用RHEL7.2系统搭建MySQL服务器
-2.关闭防火墙 systemctl stop firewalld
-3.关闭selinux sed ‘s/=enforcing/=permissive/g‘ /etc/selinux/config
-4.软件mysql-5.7.17-1
准备工作
停止mariadb服务
删除文件

1.安装软件包
[[email protected] 09.mysql]# rm -rf mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm

[[email protected] 09.mysql]# ls mysql-*.rpm

[[email protected] 09.mysql]# rpm -Uvh mysql-community-*.rpm 安装,如果存在旧版本 就升级 ,也可以查看需要哪些依赖包
警告:mysql-community-client-5.7.17-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
perl(Data::Dumper) 被 mysql-community-test-5.7.17-1.el7.x86_64 需要
perl(JSON) 被 mysql-community-test-5.7.17-1.el7.x86_64 需要

[[email protected] 09.mysql]# yum list |grep "perl-Data-Dumper"
perl-Data-Dumper.x86_64 2.145-3.el7 192.168.4.254_rhel7
[[email protected] 09.mysql]# yum list |grep "perl-JSON"
perl-JSON.noarch 2.59-2.el7 192.168.4.254_rhel7
perl-JSON-PP.noarch 2.27202-2.el7 192.168.4.254_rhel7
[[email protected] 09.mysql]# yum -y install perl-Data-Dumper.x86_64 perl-JSON.noarch perl-JSON-PP.noarch
[[email protected] 09.mysql]# rpm -Uvh mysql-community-*.rpm

2.启动服务
systemctl start mysqld
systemctl enable mysqld

3.与MySQL数据库服务相关信息
进程名 mysqld
进程所有者和所属组 mysql mysql
默认端口号 3306
传输协议 TCP
配置文件 /etc/my.cnf
数据库目录 /var/lib/mysql
日志文件 /var/log/mysqld.log (存放初始密码)

使用数据库管理员root用户初始密码连接数据库服务
[[email protected] 09.mysql]# grep -i password /var/log/mysqld.log
2018-02-22T03:21:32.096060Z 1 [Note] A temporary password is generated for [email protected]: ;Go-_qk(2Jon
[[email protected] 09.mysql]# which mysql
[[email protected] 09.mysql]# mysql -uroot -p";Go-_qk(2Jon"
mysql>
mysql> quit //断开连接

设置数据库管理员root用户本机登录密码
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user [email protected] identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> quit

vim /etc/my.cnf #永久生效密码
[mysqld]
validate_password_policy=0
validate_password_length=6

[[email protected] 09.mysql]# systemctl stop mysqld.service
[[email protected] 09.mysql]# systemctl start mysqld.service

[[email protected] 09.mysql]# mysql -uroot -p123456
mysql> show databases;

二、数据库服务的基本使用
把数据存储到数据库服务器上过程
1.连接数据库服务器
不作授权的时候只允许数据库管理员root用户在数据库本机连接数据库服务
mysql -hlocalhost -uroot -p123456
2.创建库(文件夹)
mysql> create database 库名; ##等于在/var/lib/mysql创建了一个目录
mysql> system ls /var/lib/mysql ##可以用linux命令,不用分号
mysql> select database(); ##类似linux中的pwd
mysql> use 库名; ##进入库
mysql> drop database 库名; ##删除库
mysql> drop database 库名\c ##终止继续打命令
3.建表(系统文件)
表必须保存在库里。
mysql> use mysql; ##进入库
mysql> show tables; ##查看库里面所有表
mysql> select * from user; ##查看表中所有列的内容
mysql> select user,host from user; 查看表中user,host列内容
mysql> desc user; ##查看表中有什么列,什么类型
mysql> select user,host,select_priv from user; 查看表中select_priv,user,host列内容
###############################################################3
建表命令
行(记录)
列(字段名)
把学生信息保存到gamedb库里
name age
tom 19
jim 21

mysql> create table gamedb.stu( name char(10),age int(2)); ##创建表中的列、类型,列为name,age,类型为char,int。
Query OK, 0 rows affected (0.19 sec)

mysql> use gamedb; ##进入库

mysql> show tables; ##查看表库中所有表
+------------------+
| Tables_in_gamedb |
+------------------+
| stu |
+------------------+
1 row in set (0.00 sec)

mysql> desc stu;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(10) | YES | | NULL | |
| age | int(2) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+

mysql> select * from stu;
Empty set (0.00 sec)

mysql> insert into stu values("jim",21); ##插入表中列内的内容,name为jim,age为21
mysql> insert into stu values("tom",19);

mysql> select * from stu; ##查看stu表中所有列的内容(值)
+------+------+
| name | age |
+------+------+
| jim | 21 |
| tom | 19 |
+------+------+
2 rows in set (0.00 sec)

mysql> select name from stu; ##查看stu表中name列的内容(值)
+------+
| name |
+------+
| jim |
| tom |
+------+
2 rows in set (0.00 sec)

mysql> delete from stu; ##删除表中所有列内的内容(值)
Query OK, 2 rows affected (0.06 sec)

mysql> select * from stu; ##查看表在所有列中的内容(值)
Empty set (0.00 sec)

mysql> drop table stu; ##删除表
Query OK, 0 rows affected (0.12 sec)

mysql> drop database gamedb; ##删除库
Query OK, 0 rows affected (0.00 sec)

管理数据库服务使用的时sql命令;
sql命令使用规则?
sql命令类型

三、MySQL数据类型
1.整数型
数值不够指定宽度时,左边空格补位
宽度仅显示宽度,存数值的大小由类型决定
使用关键字ZEROFILL时,填0代替空格补位
类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1字节 -128~127 255 微小整数
smallint 2字节 -32768~32767 0~65535 小整数
mediumint 3字节 -2^23~2^23-1 0~2^24-1 中整数
int 4字节 -2^31~2^31-1 0~2^32-1 大整数
bigint 8字节 -2^63~2^63-1 0~2^64-1 极大整数
float 4字节 单精度浮点数
double 8字节 双精度浮点数

mysql> create database db1;
Query OK, 1 row affected (0.00 sec)

mysql> use db1;
Database changed

mysql> create table db1.t2(name char(4) ,age tinyint); ##无符号表示 age tinyint unsigned
Query OK, 0 rows affected (0.41 sec)

mysql> desc t2;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name | char(4) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into t2 values("tom",127);
Query OK, 1 row affected (0.04 sec)

mysql> select * from t2;
+------+------+
| name | age |
+------+------+
| tom | 127 |
+------+------+
1 row in set (0.00 sec)

2.浮点数
float(n,m) n总宽度,m小数位数
mysql> create table db1.t3( age tinyint unsigned,rust float(5,2),pay float(7,2));
Query OK, 0 rows affected (0.40 sec)

mysql> desc t3;
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| age | tinyint(3) unsigned | YES | | NULL | |
| rust | float(5,2) | YES | | NULL | |
| pay | float(7,2) | YES | | NULL | |
+-------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t3 values(21,59.9,18000.23);
Query OK, 1 row affected (0.08 sec)

mysql> select * from t3;
+------+-------+----------+
| age| rust| pay |
+------+-------+----------+
| 21 | 59.90 | 18000.23 |
+------+-------+----------+
1 row in set (0.00 sec)

3.字符类型 1个字节一个字符
定长:char(字符数) 最大长度255字符 ##不够指定字符长度在右边用空格补齐(空间浪费,常用)
变长:varchar(字符数) 最大65532个字符 ##按实际大小分配空间(系统帮忙计算空间,但影响处理速度)
大文本类型:text/blob 字符数大于65535存储时使用
mysql> create table db1.t8(name char(5),age tinyint,rust float(5,2),pay float(7,2));
Query OK, 0 rows affected (0.39 sec)
mysql> desc t8;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name | char(5) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| rust | float(5,2) | YES | | NULL | |
| pay | float(7,2) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> insert into t8 values("tom",21,159.92,18000.23);
Query OK, 1 row affected (0.04 sec)

mysql> select * from t8;
+------+------+--------+----------+
| name | age | rust | pay |
+------+------+--------+----------+
| tom | 21 | 159.92 | 18000.23 |
+------+------+--------+----------+
1 row in set (0.00 sec)

以上是关于MySQL第一天的主要内容,如果未能解决你的问题,请参考以下文章

冲刺合集

新手前端程序员就职指南之 - 入职第一天

PHP获取一个月的第一天和最后一天

史上最简单的Excel导入通讯录方法

团队项目汇总

MySQL中如何获得指定日期中月份的第一天是周几?