人工智能(mysql)—— mysql基础知识

一、MySQL概述

    1、数据库定义

                数据库是一个存储数据的仓库

    2、数据库应用领域

                金融机构、游戏网站、购物网站、论坛网站 ...

    3、提供数据库服务的软件

            a、软件分类
                    MySQL、Mariadb、SQL_Server、Oracle、DB2、MongoDB ...
            b、生产环境中,如何选择使用哪个数据库
                 1)是否开源
                        开源软件:MySQL、Mariadb、MongoDB
                        商业软件:Oracle、DB2、SQL_Server
                 2)是否跨平台
                        跨平台:MySQL、Oracle、Mariadb、DB2、MingoDB
                        不跨平台:SQL_Server(Windows)
                 3)公司的类型
                        商业软件:政府部门、金融机构
                        开源软件:游戏网站、购物网站、论坛网站 ...

    4、MySQL特点

            a、关系型数据库
                1)关系型数据库的特点
                        数据是以行和列的形式去存储的
                        这一系列的行和列称为表
                        表中每一行叫一条记录
                        表中的每一列叫一个字段
                        表和表之间的逻辑关联叫关系
                2)示例
                    I、关系型数据库存储
                    
表1、学生信息表
姓名年龄班级
小白10六二班
小明11六一班

表2、班级信息表
班级班主任
六二班孔子
六一班老子

                    II、非关系型数据库存储
                        以键值对形式存储
                            {"姓名":"小白","年龄":10,"班级":"六二班","班主任":"孔子"}
                            {"姓名":"小明","年龄":11,"班级":"六一班","班主任":"老子"}
            b、跨平台
                    可以在Unix、Linux、Windows上运行数据库服务
            c、支持多种编程语言
                    Python、Java、php ...

    5、数据库软件、数据库、数据仓库

            a、数据库软件
                    是一种软件,可以看得见,可操作,来实现数据库逻辑功能
            b、数据库
                    是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现,侧重存储
            c、数据仓库
                    数据仓库主要用于数据挖掘和数据分析

                    eg:网购
                        数据库: user --> 用户名和密码
                        数据仓库:哪个时间段用户登录量最多,哪个用户一年购物最多...

二、MySQL安装

    1、Ubuntu安装MySQL服务

        a、安装服务端
            sudo apt-get install mysql-server
        b、安装客户端    
            sudo apt-get install mysql-client
                依赖关系:
                    sudo apt-get update
                    sudo apt-get -f install   # 修复依赖关系
                    sudo apt-get install 软件包

    2、Windows安装MySQL服务

        a、下载MySQL安装包(windows)
                mysql-installer***5.7.***.msi
        b、双击、按照教程安装

    3、启动和连接MySQL服务

        a、服务端启动
                sudo /etc/init.d/mysql start         # 启动
                sudo /etc/init.d/mysql stop         # 停止
                sudo /etc/init.d/mysql restart      # 重启
                sudo /etc/init.d/mysql status       #查看当前状态
                sudo /etc/init.d/mysql reload      #重新加载配置文件
        b、客户端连接
             1)、命令格式
                    mysql -h主机地址 -u用户名 -p密码
                    mysql -hlocalhost -uroot -p123456
            2)、本地连接可省略 -h 选项

                    mysql -uroot -p123456

三、配置:更改库、表的默认字符集

    1、方法

            通过更改MySQL服务的配置文件来实现

    2、步骤

        a、获取root权限

                sudo  -i

        b、切换到配置文件所在路径

                cd  /etc/mysql/mysql.conf.d

        c、备份

                cp  mysqld.cnf  mysqld.cnf.bak

        d、用vi打开mysqld.cnf,在[musqld]下修改如下,并保存退出

                [musqld]
                character_set_server = utf8

        e、重启mysql服务

                /etc/init.d/mysql  restart

        f、退出超级用户   

                exit

        g、登录到mysql验证
                mysql  -uroot  -p123456
                create  datavase  库名;
                show  create  database  库名;

四、术语

    1、DB(database)

            DB就是数据库,存储数据的仓库

    2、DBMS(database  management  system)

            数据库管理系统
            管理数据库的软件:MySQL、Oracle、MongoDB ... ...

    3、DBS(database  system)

            数据库系统
            DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统、认识管理系统) + 用户

五、数据类型

    1、数值类型

        a、整型(有符号signed  和 无符号unsigned)

            1)int 大整型(4个字节)
                    字段名 int
                    字段名 int  unsigned
                    取值范围:0~2**32 -1(42亿多)
            2)tinyint 微小整型(1个字节)
                    I、有符号(signed默认):-128 ~ 127
                    II、无符号(unsigned) : 0~255
            3)bigint 极大整型(8个字节)
                    取值范围:0 ~ 2**64 - 1
            4)smallint    小整型(2个字节)
                    取值范围(0 ~ 65535)

        b、浮点型

            1)float(4个字节,最多显示7个有效位)
                    I、用法
                            字段名 float(m,n)  m:总位数  n:小数位位数
                            float(5,2) 取值范围 -999.99 ~ 999.99
                    II、注意
                            浮点型插入整数时会自动补全小数位位数
                            小数位如果多余指定的位数,会对指定位的下一位进行四舍五入
            2)double(8个字节,最多显示15个有效位)
                    字段名 double(m,n)    m:表示总位数    n:小说位位数
            3)decimal(最多显示28个有效位)
                    I、用法
                            字段名 decimal(m,n)
                    II、存储空间(整数部分和小数部分分开存储)
                            规则:将9的倍数包装成4个字节                        
                                余数   字节
                                 1-2     1
                                 3-4     2
                                 5-6     3
                                 7-8     4

                        decimal(19,9)
                            整数部分:10/9=商1余1 4字节+1字节=5字节
                            小数部分:9/9=商1余0  4字节+0字节=4字节
                        decimal(43,11)
                            整数部分:32/9=商3余5  4字节+3字节=7字节
                            小数部分:11/9=商1余3  4字节+2字节=6字节

    2、字符类型

        a、char(定长)

                1)取值范围:1 ~ 255
                2)不给定宽度,默认为1

        b、varchar(变长)

                1)取值范围:1 ~ 65535
                2)注意:varchar没有默认宽度,必须给定一个宽度值

        c、char和varchar的特点

                1)char :     浪费存储空间,性能高
                2)varchar :节省存储空间,性能低

        d、text / longtext(4G)(存储大文本)

    3、数值类型的宽度和字符类型的宽度区别

            a、数值类型宽度为显示宽度,只用于select查询显示,和占用存储空间大小无关,用 zerofill 来显示效果
                    id int(3) zerofill
            b、字符类型的宽度超过则无法存储

    4、枚举类型

            a、定义
                    字段值只能在列举的范围内选择
            b、enum(... ) 单选(最多有65535个不同的值)

                    字段名  enum(值1,值2,... ,值N)

		create table info(sex enum("man","woman","secret"));
		insert into info values("man");
		select * from info;

            c、set(... )多选(最多有64个不同的值)
                    字段名  set(值1,值2,... ,值N)
                    插入记录时:“Python,boy,Mysql”

create table hobby(sex set("play","eat","python"));
insert into hobby values("play,python");
select * from hobby;

    5、日期时间类型

            a、year:年         YYYY
            b、date:日期     YYYY-MM-DD
            c、time:时间     HH:MM:SS
            d、datetime:   日期时间    YYYY-MM-DD HH:MM:SS
            e、timestamp:日期时间    YYYY-MM-DD HH:MM:SS
            f、注意:
                    插入记录时datetime字段不给值,默认返回NULL
                    插入记录时timestamp字段不给值,默认返回系统当前时间
            g、示例
create table infos( 
id int, name varchar(15) ,
age tinyint unsigned,  
birth_year year,
birthday date,
class time, 
meetting datetime 
);
insert into infos values (1,"大宝",40,1979,19790520,090000,20180609120933);
insert into infos values (2,"小爱",23,"1979","1979-05-20","09:00:00","2018-06-09 12:09:33");
select * from infos;

六、日期时间函数

        NOW()           返回服务器当前时间
        CURDATE()    返回当前日期
        CURTIME()     返回当前时间
insert into infos values(2,"小宝",25,"2001",CURDATE(),CURTIME(),NOW());
select * from infos;

    1、日期时间运算

        a、语法格式
            select ... from 表名
            where 字段名 运算符 (时间 - interval 时间间隔单位);
                    时间间隔单位:
                            1 day | 2 hour | 1 minute | 1 year | 3 month


            where meeting > (now() - interval 1 day);
                                            现在时间 - 1天的时间 = 1天前的时间点

        b、示例
            1、查询1天以内的记录
                select * from infos where meeting>(now()-interval 1 day);
            2、查询1年以前的记录
                select * from infos
                where meeting<(now()-interval 1 year);
            3、查询1天以前,3天以内的记录
                select * from infos where
                meeting<(now()-interval 1 day) and
                meeting>(now()-interval 3 day);

七、运算符操作(查询、修改、删除)    

    1、数值比较&字符比较&逻辑比较

            数值:= 、!= 、> 、>= 、< 、<=
            字符:= 、!=
            逻辑:and 、or

    2、范围内比较

            between 值1 and 值2
            in(值1,值2,...)
            not in(值1,值2,...)

    3、匹配空、非空

            a、空 :is null
            b、非空 :is not null
            注意:
                    1)NULL :空值,必须用 is 或者 is not 去匹配
                    2)""   :空字符串,只能用 = 或者 != 去匹配

    4、模糊比较

        a、where 字段名 like 表达式
        b、表达式
                1)_ :匹配单个字符
                2)% :匹配0到多个字符
        c、示例
1、名字中至少有2个字符的记录
	select * from sanguo where name like "_%_";
2、匹配名字为非空NULL的记录
	select * from sanguo where name like "%";
3、匹配名字中只有三个字符的记录
	select * from sanguo where name like "___";
4、匹配姓赵的记录
	select * from sanguo where name like "赵%";

    5、正则匹配查询regexp

            where  字段名  regexp “正则表达式”;
        a、正则表达式符号
                ^ :以 ... 开头
                $ :以 ... 结尾
                . :匹配任意一个字符
                [] :包含 ... 内容
                        [0-9]:匹配带数字的
                        [a-z]:匹配带小写字母的
                        [A-Z]:匹配带大写字母的
                * :星号前面的字符出现0个或多次
                          .:    :任意一个字符出现0次或多次
                        “^赵.*”:赵姓
        b、示例
1)select name from sanguo where name regexp "[0-9]";
# 匹配名字中带数字的的记录
2)select name from sanguo where name regexp "^[0-9]";
# 匹配名字中以数字开头的记录
3)select name from sanguo where name regexp "[0-9]$";
# 匹配名字中以数字结尾的记录
4)select name from sanguo where name regexp "^司.*懿$";
# 匹配名字中以司开头,以懿结尾的记录
5)select name from sanguo where name regexp " ...";
        c、说明
                mysql 5.7.21版本中,正则表达式中 . 匹配的是字节
                mysql 8.0... 版本中,正则表达式中 . 匹配的是字符

                5.7 版本: ^...$   "aaa" "貂"  "666"    #一个汉字 3个字节
                8.0 版本: ^...$   "司马懿"  "aaa"

八、附录1:数据库数据创建

为了方便,建立直接复制、黏贴一下代码,快速创建数据库和表。

create database MOSHOU;
use MOSHOU;
create table hero(
id int,
name char(15),
sex enum("男","女"),
country char(10)
)default charset=utf8;
insert into hero values
(1,"曹操","男","魏国"),
(2,"小乔","女","吴国"),
(3,"诸葛亮","男","蜀国"),
(4,"貂蝉","女","东汉"),
(5,"赵子龙","男","蜀国"),
(6,"魏延","男","蜀国");

use MOSHOU;
create table sanguo(
id int,
name char(20),
gongji int,
fangyu tinyint unsigned,
sex enum("男","女"),
country varchar(20)
)default charset=utf8;
insert into sanguo values
(1,'诸葛亮',120,20,'男','蜀国'),
(2,'司马懿',119,25,'男','魏国'),
(3,'关6羽',188,60,'男','蜀国'),
(4,'赵云666',200,66,'男','魏国'),
(5,'8孙权',110,20,'男','吴国'),
(6,'貂蝉',666,10,'女','魏国'),
(7,null,1000,99,'男','蜀国'),
(8,'',1005,88,'女','蜀国');

九、附录

        人工智能(mysql)—— 目录汇总





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值