数据库基础---RDBMS1 DAY01

常见的软件

  主流操作系统:Unix,Linux,Windows

软件名开源跨平台厂商
orcale甲骨文
MySQL甲骨文
sql server微软
DB2IBM
Redis开源软件
Memcache开源软件
MongoDB开源软件

专业术语

  DB(BataBase):数据库,依照某种数据模型进行组织并存放到存储器的数据集合
  DBMS(DataBase Management System):数据库管理系, 用来操纵和管理数据库的服务软件

 DBS(DataBase System):数据库系统,即DB+DBMS,指带有数据库并整合了数据库管理软件的计算机系统

起源与发展

  应用最广泛的开源数据库软件,最早隶属于瑞典的MYSQL  AB公司,2008年1月,MYSQL AB被Sun收购,2009年4月,Sun被Oracle收购。

  崭新的开源分支MariaDB    为应付mysql可能闭源的风险而诞生,由mysql原作者Widenius主导开发,与mysql保持最大程度兼容

特点及应用

  主要特点:适用于中小规模,关系型数据库,支持Linux,unix,windows等多种操作系统,支持python,Java,Perl,php等编程语言

  典型应用环境:LAMP平台,与Apache HTTP Server组合。   LNMP平台,与nginx组合。

------------------------------------------------------------------------------

                                  MySQL安装   :准备环境,安装软件,启动服务,相关参数

构建MySQL服务器

   

                               MySQL初始化配置:初始密码登录,修改root密码,修改密码策略

---------------------------------------------------                   -------------------------------------------------

MySQL安装

  准备环境--基本需求:
     1,创建centos系统虚拟机1台

     2,配置ip地址192.168.4.50

     3,关闭firewalld

     4,禁用selinux

     5,拷贝软件 mysql-5.7.17.tar

     6,配置yum源

  安装软件

     从官网下载rpm包

        --http://dev.mysql.com/downloads/mysql

    mysql-community-client  //客户端应用程序         

   mysql-community-common    //数据库和客户端库共享文件

   mysql-community-devel    //客户端应用程序的库和头文件                                           

   mysql-community-embeddeb  //嵌入式函数库                                         

   mysql-community-embedded-compat  //嵌入式兼容函数库                                           

  mysql-community-embedded-devel  //头文件和库文件作为mysql的嵌入式库文件

  mysql-community-libs  //mysql  数据库客户端应用程序的共享库

  mysql-community-libs-compat  //客户端应用程序的共享兼容库

安装软件(续一)

  必须安装的软件包server,client ----yum安装自动解决软件依赖

]#tar -xvf mysql-5.7.17.tar
]#yum -y install mysql-community-*.rpm
]#rpm -qa | grep -i mysql

启动服务--首次启动服务,会执行数据初始化

  

]#systemctl start mysqld       //启动服务
]#systemctal  enable mysqld    //开机运行
]#systemctl status mysqld  //查看运行状态
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2021-06-27 04:25:50 CST; 1min 23s ago

]#netstat -utnlp | grep :3306   查看服务器信息
]#ps -C mysqld  //查看进程

 

相关参数--软件安装后自动创建相关目录与文件

文件

说明

/etc/my.cnf

主配置文件

                  /var/lib/mysql

数据库目录

默认端口号

3306

进程名

Mysqld

传输协议

tcp

进程所有者

Mysql

进程所属组

Mysql

错误日志文件

/var/log/mysqld.log

MySQL初始配置

  初始密码登录

     数据库管理员名为root

        --默认仅允许root本机连接

        --首次登录密码在安装软件时随机生成

        --随机密码存储在日志文件/va/log/mysqld.log里

        --连接命令  ]#mysql  -h数据库地址  -u用户  -p密码

]# grep 'password' /var/log/mysqld.log    //查看随机密码

2021-04-18T01:31:32.750331Z 1 [Note] A temporary password is generated for root@localhost: w-JyI#sdN8iQ

]# mysql -hlocalhost -uroot -p'w-JyI#sdN8iQ'    //连接

修改密码

    具体操作如下

        使用alter user 命令修改登录密码

        新密码必须满足密码策略

        管理员root使用新密码连接服务

//修改登录密码

mysql>alter user root@"localhost"  identified  by "密码";
]#mysql   -hlocalhost  -uroot  -p密码   //使用新密码登录

mysql> alter  user root@"localhost" identified  by  "123qqq...A"    //修改密码

[root@localhost ~]# mysql -uroot -p123qqq...A      //用修改的密码登录

修改密码策略

策略名称验证方法
0 or LOW长度
1  or  MEDIUM长度;数字,小写/大写,和特殊字符
2  or  STRONG字典文件

mysql>show  variables like "%password%";  //查看变量
mysql>set global validate_password_policy=0;  //修改密码策略
mysql>set gloab varidate_password_length=6;  //修改密码长度
]# vim  /etc/my.cnf            //把策略写进配置文件,会永久有效
[mysql]                                  
validate_password_policy=0   
varidate_password_length=6
:wq


                           连接MySQL服务        ---连接方式

                                                              ---数据存储流程

                                                              ---MySQL管理环境

数据库基本权限

                               MySQL基本操作    ---库管理命令

                                                              ---表管理命令

                                                              ---记录管理命令


连接MySQL服务

  连接方式

    客户端连接MySQL服务的方法

        1,命令行,  2,web页面,   3,安装图形软件,   4,编写脚本(php,java,python)

    使用MySQL命令

      --mysql  -h服务器IP  -u用户名   -p密码   [数据库名]  

      --quit或exit退出

数据存储流程

  客户端把数据存储到数据库服务器上的步骤

     1.连接数据库服务器      2.建库    3.建表   4.插入记录    5.断开连接

MySQL管理环境

  SQL命令使用规则

    --SQL命令不区分字母大小写(密码,变量值除外)

    --每条SQL命令以  ;  结束

    --默认命令不支持tab键自动补齐

    -- \c 终止SQL命令

常用SQL命令分类

  管理数据库使用SQL(结构化查询语言)

      1,DDL    数据定义语言   如:create,   alter,    drop

      2,DML   数据操作语言     如:insert,update,delete

      3,DCL    数据控制语言    如:grant,revoke

       4,DTL   数据事务语言   如:commit,rollback,savepoint

mysql基本操作

  库管理命令

    库类似于文件夹,用来存储表

       --可以创建多个库,通过库名区分

       --show databases;          //显示已有的库

       --select  user();               //显示连接用户

       --use  库名;   //切换库

       --select  databases();    //显示当前所在的库

       --create database 库名;  //创建新库

       --show tables;   //显示已有的表

       --drop  database  库名;     //删除库

    库名的命名规则

       --仅可以使用数字,字母,下划线,不能纯数字

       --区分字母大小写,具有唯一性

   --不可使用指令关键字,特殊字符

mysql> create database DB1;
Query OK, 1 row affected (10.01 sec)

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

表管理命令

  建表

    --表存储数据的文件

   mysql>create table 库名.表名(

                                         字段名1   类型(宽度),

                                         字段名2   类型(宽度),

                                        ......

)DEFAULT  CHARSET=utf8;            //指定中文字符集,可以给字段赋值中文

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

mysql> create table db1.stuinfo(name    char(15),
    -> homeaddr   char(20)
    -> );
Query OK, 0 rows affected (0.02 sec)

表类似于文件

   --desc  库名.表名;      //查看表结构

   --drop table 库名.表名;

mysql> desc db1.stuinfo;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(15) | YES  |     | NULL    |       |
| homeaddr | char(20) | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.08 sec)

记录管理命令

    记录  类似于文件里的行

      --select  *  from  库名.表名;               //查看表记录

      --insert  into   库名.表名    values(值列表);    //插入表记录

      --update  库名.表名  set  字段=值;      //修改表记录

      --delete   from  表名;     //删除表记录       

mysql> insert into db1.stuinfo values("jim","usa"),("lilei","china);
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from db1.stuinfo;
+-------+----------+
| name  | homeaddr |
+-------+----------+
| jim   | usa      |
| lilei | china    |
+-------+----------+
2 rows in set (0.00 sec)

mysql> update db1.stuinfo  set  homeaddr="beijing";
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from db1.stuinfo;
+-------+----------+
| name  | homeaddr |
+-------+----------+
| jim   | beijing  |
| lilei | beijing  |
+-------+----------+
2 rows in set (0.00 sec)

                           常见信息种类--信息种类

                           字符类型---定长char,变长varchar

MySQL数据类型  数值类型--整数型,浮点型

                             日期时间类型---类型,时间函数

                             枚举类型--enum,set


常见信息种类

   数值型:体重,身高,成绩,工资

   字符型:姓名,工作单位,通讯住址

   枚举型:兴趣爱好,性别,专业

   日期时间型:出生日期,注册日期

字符类型

    定长char

        定长:char(字符个数)

            最大字符个数255

            不够指定字符个数时在右边用空格键补齐

            字符超出个数时,无法写入数据

mysql> create table db1.t1(
    -> name  char(5),
    -> homeaddr  char(50)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> insert into db1.t1 values("bob","USE");
Query OK, 1 row affected (0.01 sec)

mysql> select * from db1.t1;
+------+----------+
| name | homeaddr |
+------+----------+
| bob  | USE      |
+------+----------+
1 row in set (0.00 sec)

mysql> desc db1.t1;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(5)  | YES  |     | NULL    |       |
| homeaddr | char(50) | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

     变长varchar

          变长:varchar(字符个数)

              --按数据实际大小分配存储空间

             --字符超出个数时,无法写入数据

          大文本类型:text/blob

              --字符数大于65535存储时使用

mysql> create table db1.t2( name  char(5), email varchar(30) );
Query OK, 0 rows affected (0.02 sec)

mysql> insert into db1.t2 values("lucy","lucy@tedu.cn");
Query OK, 1 row affected (0.01 sec)

mysql> desc db1.t2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | char(5)     | YES  |     | NULL    |       |
| email | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> select * from db1.t2;
+------+--------------+
| name | email        |
+------+--------------+
| lucy | lucy@tedu.cn |
+------+--------------+
1 row in set (0.00 sec)

数值类型

    整数型

       只能存储整数

类型名称有符号范围无符号范围
tinyint微小整数-128~1270~255
smalint小整数-32768~327670~65535
mediumint中整数-2^23 ~ 2^23-10 ~ 2^24-1
int大整数-2^31 ~ 2^31-10 ~ 2^32-1
bigint极大整数-2^63 ~ 2^63-10 ~ 2^64-1
unsigne使用无符号存储范围

   浮点型

        格式1:字段名     类型;

        格式2:字段名      类型(总宽度,小数位数)

类型名称有符号范围无符号范围
float单精度-3.402823466E+38到-1.175494351E-381.175494351E-38到3.402823466E+38
double双精度-1.7976931348623157E+308到-2.2250738585072014E-3082.2250738585072014E-308到1.7976931348623157E+308
mysql> create table db1.t3(pay float,id double);
Query OK, 0 rows affected (0.01 sec)
mysql> create table db1.t4(pay float(5,2),id double(4,2));
Query OK, 0 rows affected (0.01 sec)

mysql> desc db1.t3;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| pay   | float  | YES  |     | NULL    |       |
| id    | double | YES  |     | NULL    |       |
+-------+--------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc db1.t4;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| pay   | float(5,2)  | YES  |     | NULL    |       |
| id    | double(4,2) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

日期时间型

    类型

       日期时间:datetimetime

        --范围:1000-01-01  00:00:00 ~ 999-12-31  23:59:59

        --格式:yyyymmddhhmmss

      日期时间 timestamp

         --范围:1970-01-01  00:00:00 ~ 2038-01-19  00:00:00

         --格式:yyyymmddhhmmss

      日期  date

          --范围:0001-01-01 ~ 9999-12-31

          --格式:yyyymmdd

       年  year

          --范围:1901~2155

          --格式:yyyy

       时间  time

         --格式:HH:MM:SS

mysql> create table db1.t7(name char(10),up_class time,start year,party datetime);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into db1.t7 values("bob",090000,1990,20200913183000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from db1.t7;
+------+----------+-------+---------------------+
| name | up_class | start | party               |
+------+----------+-------+---------------------+
| bob  | 09:00:00 |  1990 | 2020-09-13 18:30:00 |
+------+----------+-------+---------------------+
1 row in set (0.00 sec)

     关于日期时间字段

         --当未给timestamp字段赋值时,自动以当前系统时间赋值,而datetime值为NULL(空)

mysql> create table db1.t8(meetting  datetime,pary timestamp);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into db1.t8 values(20200813091525,20210728223000);
Query OK, 1 row affected (0.00 sec)

mysql> insert into db1.t8(meetting) values(20191120223000);
Query OK, 1 row affected (0.00 sec)
mysql> insert into db1.t8(pary) values(20191120223000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from db1.t8;
+---------------------+---------------------+
| meetting            | pary                |
+---------------------+---------------------+
| 2020-08-13 09:15:25 | 2021-07-28 22:30:00 |
| 2019-11-20 22:30:00 | 2021-07-03 09:36:36 |
| NULL                | 2019-11-20 22:30:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)

     

year的类型

          --要求使用四位数赋值

          --当时用2位数赋值时:

              --01 ~ 69视为 2001 ~2069

               --70 ~99视为 1970 ~ 1999 

mysql> insert into db1.t7 values("tom",190000,58,20200813100000);
Query OK, 1 row affected (0.00 sec)
mysql> insert into db1.t7 values("tomA",190000,88,20200813100000); 
Query OK, 1 row affected (0.00 sec)
mysql> select * from db1.t7;
+------+----------+-------+---------------------+
| name | up_class | start | party               |
+------+----------+-------+---------------------+
| bob  | 09:00:00 |  1990 | 2020-09-13 18:30:00 |
| tom  | 19:00:00 |  2058 | 2020-08-13 10:00:00 |
| tomA | 19:00:00 |  1988 | 2020-08-13 10:00:00 |
+------+----------+-------+---------------------+
3 rows in set (0.00 sec)

       时间函数

          MySQL服务内置命令

              可以使用时间函数给字段赋值

                   

类型用途
curtime()获取当期系统时间
curdate()获取当期系统日期
now()获取当期系统日期和时间
year()获取年
month()获取月
day()获取日
date()获取日期
time()获取时间

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 09:19:25  |
+-----------+
1 row in set (0.00 sec)

枚举类型

  enum

    enum单选

       --格式:字段名  enum(值1,值2,值n)

       --仅能选择一个值

       --字段值必须在列表里选择

  

 set

     set多选

        --格式:字段名  enum(值1,值2,值n)

        --选择一个或多个值

       --字段值必须在列表里选择

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值