DBA 1 - 1

数据库 01day

7台机器 50-56
[root@room9pc01 ~]# clone-vm7
Enter VM number: 1
IP:192.168.4.50 /51 /52 /53 /54 /55 /56

===============================================
服务器CPU  内存  存储
操作系统的版本:W   L    U
                  rhel7
5.7
装包: 源码  RPM  包的来源   软件的版本

                    RDBMS   NoSQL Redis Mongodb
主流数据库服务软件:Oracle  DB2   MySQL  MariaDB  
                   SQL SERVER 
开源软件
商业软件
跨平台

开源软件不等于免费!

------------------
关系型数据库 :  关系型数据库软件提供的数据库服务存储数据的时候必须按照预先设计好的结构去存储数据,按预定义的数据存储结构去存储数据,并且数据之间可以关联操作查询。
关系型数据库RDBMS:Oracle  DB2   MySQL  MariaDB   SQL SERVER 
非关系型数据库 : 非关系型数据库软件提供的数据库服务存 往数据库里存储数据的时候,可以不事先定义存储数据的格式,想怎么存就怎么存。(比方说我存几个值,这几个值类型都不是固定的,不用预先设定数据存储的格式! 可以自用灵活的根据你现在数据的产生的数据去存储数据)
非关系型数据库NoSQL: Redis Mongodb
NoSQL:不仅仅是SQL

开源软件
商业软件
跨平台:

Oracle  DB2   跨平台,不开原
MySQL  MariaDB 既开源 又跨平台!
SQL SERVER:不开原,不跨平台 纯商业软件!

rhel7 是14年发行的
在生产环境下,包不追求最新,追求最稳定版!

软件包: 生产环境中,系统ios光盘中 会把发行系统当年用到的各个常用的软件包 像apache但是没有nginx

源码 : 自定义安装,想用什么功能自己就调用什么选项,但是缺点就是你在配置的时候 想装这个包提供什么功能,你当前的操作系统 必须有对应提供功能的软件 必须装上,必须需要解决依赖关系,解决依赖关系比较麻烦。
RPM : 安装卸载比较方便,但是软件安装什么功能,安装路径等配置文件,都是别人封装好的,编译好的,直接用rpm命令安装卸载!
--------------------------------------------------

本次实验用的是  社区开原版,5.7的!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一搭建数据库服务器 
在IP地址是192.168.4.50 主机 上运行mysql数据库服务。

#####################################################
[root@room9pc01 ~]# scp '/root/桌面/mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar' 192.168.4.50:/root/
[root@host50 ~]# tar -xvf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar 
[root@host50 ~]# ls *.rpm

[root@host50 ~]# rm -rf mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm 
[root@host50 ~]# yum -y install perl-JSON
[root@host50 ~]# rpm -Uvh mysql-community-*.rpm
[root@host50 ~]# systemctl start mysqld
[root@host50 ~]# systemctl enable mysqld
[root@host50 ~]# systemctl status mysqld

[root@host50 ~]# ps -C mysqld

[root@host50 ~]# netstat  -utnlp  | grep  mysqld

++++【【【查看mysql服务是否起来 ,可以查看三个命令。 】】】
[root@host51 ~]# systemctl status mysqld
[root@host51 ~]# ps -C mysqld
[root@host51 ~]# ps aux | grep mysqld
主:不管什么服务 不能只根据"systemctl status XXX" 来判断!!

[root@host50 ~]# rpm -qa | grep -i mysql

[root@host50 ~]# which mysql
/usr/bin/mysql
[root@host50 ~]# rpm -qf /bin/mysql
mysql-community-client-5.7.17-1.el7.x86_64

[root@host50 ~]# ls /var/log/mysqld.log 
/var/log/mysqld.log
[root@host50 ~]# grep -i password /var/log/mysqld.log
.....@localhost: uqf=pod?p3ZC   #//uqf=pod?p3ZC 为初始密码  5.7版本以后都有初始密码

[root@host50 ~]# mysql -hlocalhost -uroot -p'uqf=pod?p3ZC'      //通过初始密码进入数据库
.. .. ..
mysql> show databases;       //通过初始密码无法进行操作,需要修改密码
mysql> set global validate_password_policy=0;        只检查密码的长度    

mysql> set global validate_password_length=6;        密码长度不能小于6个字符

mysql> alter user root@"localhost" identified by "123456";

mysql> quit
Bye

[root@host50 ~]# mysql -hlocalhost -uroot -p123456            //修改后的密码再次进入数据库,验证一下。
.. ... ....
【让密码策略永久生效】
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6

[root@host50 ~]# systemctl restart mysqld


为数据库账号修改密码:
mysqladmin  [-u用户名]  [-p[旧密码]]  password  '新密码'
=========================================
mysql> show database \c
mysql> show database/c
    -> \c
mysql> 
mysql> '
    '> \c
    '> '
    -> \c
mysql> 
==================================================
2.4 sql命令使用规则?
2.5 sql命令分类?
#命令不区分大小写!  以分号结尾; 默认不支持table补齐 (可以网上下载插件,不建议用)

2.6 管理数据库的sql命令
查看  show  databases;
创建  create  database  库名;
切换  use  库名;  
删除  drop   database  库名;   
显示当前所在的库      select  database();

– Show databases; // 显示已有的库
// 切换库
– Use 库名 ;
– Select database(); // 显示当前所在的库
– Create database 库名 ; // 创建新库
// 显示已有的表
– Show tables;
– Drop database 库名; // 删除库

库管理命令 ( 续 1)
• 数据库的命名规则
– 可以使用数字 / 字母 / 下划线,但不能纯数字
– 区分大小写,具有唯一性
– 不可使用指令关键字、特殊字符
+++++++++++++++++++++++++
++++++++++++++++++++++++++
2.7 管理表的 sql命令###
表管理命令
• 新建指定名称的表

– create table 库名 . 表名 (
字段名 1 字段类型 ( 宽度 ) 约束条件 ,
字段名 2 字段类型 ( 宽度 ) 约束条件 ,
.. ..
字段名 N 字段类型 ( 宽度 ) 约束条
);

表管理命令 ( 续 1)
• 表 类似于系统的文件

– Desc 表名 ; // 查看表结构
– Select * from 表名; // 查看表记录
– Drop table 表名 ; // 删除表

记录管理命令
• 记录 类似于文件里的行

– Select * from 表名 ; // 查看表记录
– Insert into 表名 values( 值列表 );// 插入表记录
– Update 表名 set 字段 = 值 ; // 修改表记录
– Delete from 表名 ; // 删除表记录
+++++++++++++++++++++++++++
案例
mysql> create database db1;

mysql> use db1;
Database changed
mysql> create table t1(
    -> name char(15),
    -> class char(7)
    -> );
Query OK, 0 rows affected (0.58 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1            |
+---------------+
1 row in set (0.00 sec)

mysql> 
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(15) | YES  |     | NULL    |       |
| class | char(7)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

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

mysql> 

mysql> insert into t1 values("libai","nsd1803"),("dufu","nsd1803");                                         

mysql> select * from t1;

mysql> update t1 set class="nsd1809";

mysql> select * from t1;

mysql> delete from t1;

mysql> select * from t1;

mysql> show tables;

mysql> desc t1;

mysql> drop table t1;

mysql> select * from t1;

mysql> show tables;

mysql> 

=======================================================
--------------------------------------------------------------------------

==============================================
mysql> show databases;


mysql> use db1;
Database changed
mysql> create table 学生信息表2(
    -> 姓名 char(15),
    -> 班级 char(7)
    -> ) DEFAULT CHARSET=utf8;

mysql> insert into 学生信息表2 values("崔志伟","nsd1802");

mysql> select * from 学生信息表2 ;

=================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
数值类型

整数型       //默认 范围(有符号)
例如 tinyint

create table db1.t2(            //范围(有符号
level tinyint
);
insert into t2 values(25);

create table db1.t3(
level tinyint unsigned            /unsigned 范围(无符号)
);
insert into t3 values(251);

【浮点型】
create table db1.t4(
pay double(5,2)
);
insert into t4 values(999);
insert into t4 values(111.223);

select * from db1.t4;

整数.小数  总位数


字段名  类型
           float(m,n)
++++++++++++++++++++++++++++++++++++++++++++++
字符类型】】】】】】
• 定长: char( 字符数 )        # 如果不指定字符数 默认就是1位       
– 最大长度 255 字符
– 不够指定字符数时在右边用空格补齐
– 字符数断超出时,无法写入数据。

• 变长: varchar( 字符数 )        ## 如果不指定字符数  语法错误   
– 按数据实际大小分配存储空间
– 字符数断超出时,无法写入数据。

65532  ??
• 大文本类型: text/blob
– 字符数大于 65535 存储时使用

char处理效率高
varchar 节省空间, 但在生产环境中多用char 少用varchar
-------------------------------------------------------------
t1                        t2
name  varchar ()            name char()
lucy                    lili
le                    le
a                     a
---------------------------------------------------------------------------------
create table t5(
name char(15),
emali varchar(30)
);
insert into t5 values("bob","bob@163.com"),("lucy","lucy@sina.com.cn");

select * from db1.t5;

=========================================================================
枚举类型】】】】】】】】】】
• 从给定值集合中选择单个值, ENUM
– 定义格式: enum( 值 1, 值 2, 值 N)




• 从给定值集合中选择一个或多个值, SET
– 定义格式: set( 值 1, 值 2, 值 N)

create table t6(
name char(15),
age tinyint unsigned,
pay float(7,2),
sex enum("boy","girl","no"),
likes set("woman","money","game","eat")
);

mysql> desc db1.t6;

mysql> insert into t6 values("bob",21,2000,"no","eat,game");
Query OK, 1 row affected (0.08 sec)

mysql> select * from db1.t6;
+------+------+---------+------+----------+
| name | age  | pay     | sex  | likes    |
+------+------+---------+------+----------+
| bob  |   21 | 2000.00 | no   | game,eat |
| bob  |   21 | 2000.00 | no   | game,eat |
+------+------+---------+------+----------+
2 rows in set (0.00 sec)

mysql> 
============================================================

【【【日期时间类型】】】】】


mysql> create table t7(
    -> name char(15),
    -> syear year,
    -> birthday date,
    -> up_class time,
    -> party datetime
    -> );


mysql> insert into t7 values("yaya",1990,20181120,083000,20180618213000);
Query OK, 1 row affected (0.05 sec)

mysql> desc db1.t7;

mysql> select * from db1.t7;

 


【【MySQL 内置时间函数的使用】】
使用时间函数获取数据给日期时间类型字段赋值

mysql> select now();


mysql> select year(now());


mysql> select date(now());


mysql> select month(now());


mysql> select day(now());


mysql> select time(now());


mysql> select year(20191120);


mysql> select date(20191120);


mysql> select time(20191120);


mysql> select month(20191120);


mysql> select curdate();


mysql> select curtime();


mysql> 

案例:   使用函数给 t7表 赋值      (使用时间函数获取数据给日期时间类型字段赋值)
mysql> create table t7(
    -> name char(15),
    -> syear year,
    -> birthday date,
    -> up_class time,
    -> party datetime
    -> );

mysql> desc t7;

mysql> insert into t7 values("jing",year(19901120),date(now()),083000,now());

mysql> select * from t7;

3 rows in set (0.00 sec)

mysql> 

【【【 datetime 与 timestamp的区别  】】】】
——(如果不给timestamp 赋值  默认自己写入 系统默认日期时间, datetime如果不给值,那就为空NULL)

案例::::
mysql> create table t8(
    -> name char(5),
    -> meetting datetime,
    -> party timestamp
    -> );
Query OK, 0 rows affected (0.21 sec)

mysql> desc t8;

mysql> insert into t8 values ("bob",now(),now());

mysql> select * from t8;

mysql> insert into t8(name,meetting) values ("lucy",20191120214858);   『//指定给某些字段赋值时,可以列出来   只给name,meetting 写值』
Query OK, 1 row affected (0.05 sec)

mysql> select * from t8;


mysql> insert into t8(name,party) values ("lucy",20191120214858);     //指定给某些字段赋值时,可以列出来   只给name,party 写值』
Query OK, 1 row affected (0.34 sec)

mysql> select * from t8;


mysql> 

注意: NULL 为空

---------------------------------------------------------------------------
数值类型宽度数 字符类型宽度 的区别
int 默认是11位宽度数

age  int(2)

默认用空格补位

name char(2) 

案例::::
mysql> create table t12(
    -> name char(5),
    -> level int(3) zerofill,        //zerofill 意思是用0补位
    -> money int(5) zerofill
    -> );

mysql> desc t12;

mysql> insert into t12 values("swk",18,29);
Query OK, 1 row affected (0.03 sec)

mysql> select * from t12;


mysql> insert into t12 values("zbj",8,222229);
Query OK, 1 row affected (0.31 sec)

mysql> select * from t12;


mysql> insert into t12 values("ts",888,2222);
Query OK, 1 row affected (0.05 sec)

mysql> select * from t12;


mysql> 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
安装 MySQL (续 2 )     准备工作
– 停止 mariadb 服务
– 删除文件 /etc/my.cnf
– 删除数据
– 卸载软件包
[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# rm -rf /etc/my.cnf
[root@localhost ~]# rm -rf /var/lib/mysql/*
[root@localhost ~]# rpm -e --nodeps mariadb-server mariadb
警告: /var/log/mariadb/mariadb.log 已另存为 /var/log/mariadb/
mariadb.log.rpmsave

注意注意注意注意::如果mysql数据库也坏了,可以用rpm -e --nodeps跟 包 名字  》 一个一个的把包删除了,然后再重新安装。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值