zoukankan      html  css  js  c++  java
  • MySQL数据库

     

    MySQL概述
      1、什么是数据库 :存储数据的仓库
      2、使用公司 :金融、游戏、购物、论坛 ...
      3、提供数据库服务的软件
        MySQL、Oracle、MongoDB、Mariadb、SQL_Server、Redis
      4、生产环境中,如何选择
        1、是否开源
          开源 :MySQL、MariaDB、MongoDB、Redis
          商业 :Oracle、SQL_Server、DB2
        2、是否跨平台
          不跨平台 :SQL_Server
          跨平台 :... ...
        3、公司类型
          商业软件 :金融机构
          开源软件 :民营企业
    MySQL特点
      1、关系型数据库
        数据是以行和列(表格)形式存储
        一行 :一条记录,一列 :一个字段
        表和表之间逻辑关联叫关系

        示例 :关系型数据库
      表1、学生信息表
        姓名   年龄  班级
        星矢   23   1812
        水冰月  25   1809
      表2、班级信息表
        班级    班主任
        1812    大空翼
        1809    松人
        示例 :非关系型数据库
        {'姓名':'星矢','年龄':23,'班级':'1812'}
        {'姓名':'水冰月','年龄':25,'班级':'1809','班主任':'松人'}
      2、跨平台
      3、支持多种编程语言
        python、java、php ... ...
    数据库、数据库软件、数据仓库概念
      1、数据库 :逻辑概念,存放数据仓库,侧重存储
      2、数据库软件 :真实软件,实现数据库的逻辑功能
      3、数据仓库
        数据量比数据库庞大
        侧重于数据分析和数据挖掘

    MySQL安装
      服务端 :yum install mysql-server
      客户端 :yum install mysql-client

    启动和连接MySQL服务
      1、服务端启动
        /etc/init.d/mysql status|start|stop|restart
        service mysql status|start|stop|restart
      2、客户端连接
        mysql -hIP地址 -u用户名 -p密码
        mysql -hlocalhost -uroot -p123456
        mysql -h127.0.0.1 -uroot -p123456
        mysql -uroot -p123456 本地登录可省略-h选项

    SQL命令使用规则
      1、每条命令必须以 ; 结尾
      2、SQL命令不区分字母大小写
      3、使用 c 终止当前命令执行

    库的管理(库名区分字母大小写)
      1、查看已有库
        show databases;
      2、创建库[指定字符集]
        create database 库名 character set utf8;
        create database 库名 charset utf8;
      3、切换库
        use 库名;
      4、查看当前所在库
        select database();
      5、删除库
        drop database 库名;
      6、查看创建库的语句
        show create database 库名;

      创建库testdb,指定字符集为utf8
        create database testdb charset utf8;
      进入到库testdb
        use testdb;
      查看当前所在库
        select database();
      创建库testdb2
        create database testdb2;
      进入到库testdb2
        use testb2;
      查看库testdb2的字符集(查看创建库的语句)
        show create database testdb2;
      删除库testdb
        drop database testdb;
      删除库testdb2
        drop database testdb2;
    View Code

    表的管理
      1、创建表
        create table 表名(
        字段名 数据类型,
        字段名 数据类型,
        字段名 数据类型)charset=utf8;
      2、查看创建表的语句(字符集、存储引擎)
        show create table 表名;
      3、查看当前库中所有表
        show tables;
      4、查看表结构
        desc 表名;
      5、删除表
        drop table 表名;

      创建库python1
        create database python1;
      在python1库中创建表 pymysql并指定字符集utf8,字段有3个:id int, name char(20),age int
        use python1;
        create table pymysql(
          id int,
          name char(20),
          age int
          )charset=utf8;
      查看python1库中的所有表
        show tables;
      查看表pymysql的字符集及存储引擎(语句)
        show create table pymysql;
      查看表pymysql的表结构
        desc pymysql;
      删除表pymysql
        drop table pymsql;
    View Code

    注意
      MySQL基于磁盘存储,所有数据以文件形式存放在数据库目录/var/lib/mysql下
    表记录的管理
      1、增(insert)
        insert into 表名 values(值1),(值2);
        insert into 表名(字段1,字段2) values(xx);
      2、查(select)
        select * from 表名 where 条件;
        select 字段1,字段2 from 表名 where 条件;

      查看所有库
        show databases;
      创建新库studb,并指定字符集utf8
        create database studb charset utf8;
      在studb库中建表stuinfo,字段有id、name、age三个,数据类型自己定义
        use studb;
        create table stuinfo(
          id int,
          name char(15),
          age int);
        show tables;
      查看表stuinfo的表结构
        desc stuinfo;
      在stuinfo中插入2条表记录
        insert into stuinfo values (1,'金毛狮王',60),(2,'紫衫龙王',19);
      在stuinfo表中name和age两个字段插入2条记录
        insert into stuinfo(name,age) values ('青翼蝠王',60),('白眉鹰王',66);
      查看stuinfo中的所有记录
        select * from stuinfo;
      查看表中所有学生的姓名和年龄
        select name,age from stuinfo;
      查看表中年龄大于20的学生信息
        select * from stuinfo where age>20;
    View Code

    如何更改默认字符集(改配置文件)
      1、方法 :通过更改配置文件实现
      2、步骤
        cd /etc/mysql/mysql.conf.d/
        cp mysqld.cnf mysqld.cnf.bak
        vim mysqld.cnf
        [mysqld]下面添加:
          character_set_server = utf8
        /etc/init.d/mysql restart

    数据类型
      1、数值类型
        整型
          int 大整型(4个字节) 最大取值2**32 - 1
          tinyint 微小整型(1个字节)
            有符号(默认) :-128~127
        无符号 :unsigned 0~255
          smallint(2个)
          bigint(8个)

        浮点型
          float(m,n) :最多显示7个有效位
            m代表总位数,n代表小数位位数
            float(5,2) 取值范围:-999.99~999.99
            decimal(m,n) :最多显示28个有效位

      2、字符类型
      定长 :char(宽度)
        取值范围 :1-255
      变长 :varchar(宽度)
        取值范围 :1-65535
      text / longtext / blob / longblob(4G)
      char和varchar的区别
        char :浪费存储空间,性能高
        varchar:节省存储空间,性能低

        字符类型宽度和数值类型宽度区别
          字符宽度,超过范围不能存储
          数值宽度,显示宽度,只用于查询显示,和存储无关,可用zerofill查看效果
          id int(3) zerofill

      3、枚举类型
      单选(enum) :字段名 enum('M','F')
      多选(set) :字段名 set('','','','')
        注意 :hobby set('Python','MySQL','study')
        插入记录时 :'Python,study'
      4、日期时间类型
      date :'yyyy-mm-dd'
      time :'hh:mm:ss'
      datetime :'yyyy-mm-dd hh:mm:ss'
      timestamp:'yyyy-mm-dd hh:mm:ss'
      datetime不给值默认返回NULL
      timestamp不给值默认返回系统当前时间

    日期时间函数
      now() :返回服务器当前时间
      curdate() :返回当前日期

      year(字段名)
      date(字段名)
      time(字段名)

      创建库studb2,并在库中创建表 student
        id 大整型,
        name 字符类型,宽度15,
        age 微小整型,不能为负数,
        class 字符类型(AID1812),
        height 浮点型,小数2位,
        money 浮点型,小数2位
    
        create database studb2;
        use studb2;
        create table student(
          id int,
          name varchar(20),
          age tinyint unsigned,
          class char(7),
          height float(5,2),
          money decimal(20,2)
          )charset=utf8;
      查看表结构 :desc student;
      查看字符集 :show create table student;
      在表中插入1条记录
        insert into student values (1,'赵敏',23,'AID1812','170','20000');
      查询所有表记录
        select * from student;
      在表中id和name两个字段插入2条记录
        insert into student(id,name) values (2,'周芷若'),(3,'张无忌');
      查询所有学生的id和姓名
        select id,name from student;
    View Code

    表记录管理
      1、删除(delete)
        delete from 表名 where 条件;
        delete from 表名;
        如果不加where条件,所有记录全部清空
      2、修改(update)
        update 表名 set 字段=值1,字段=值2 where 条件;
    表字段和表记录总结
        表字段操作   表记录操作
      增  add       insert
      删  drop      delete
      改  modify     update
      查  desc      select

    运算符操作
      数值比较/字符比较/逻辑比较
        数值比较 :> >= < <= = !=
        字符串 := !=
        逻辑比较 :and or between 值1 and 值2

      匹配空、非空
        空 :where name is null
        非空:where name is not null
        NULL:空值,只能用is、is not去匹配
        '' :空字符串,用 = 、!= 去匹配
      模糊查询(like)
        where 字段名 like 表达式
        表达式
          * % :匹配0到多个字符
          * _ :匹配1个字符
        select name from sanguo where name like '_%_';#匹配至少有2个字符
        select name from sanguo where name like '___';#匹配3个字符
        select name from sanguo where name like '%';#匹配所有,但不包含NULL
        select name from sanguo where name like '赵%';#匹配姓赵的英雄
        4、范围内比较
        where country in('蜀国','魏国')
        where id in(1,2,3,5)
        not in

    SQL查询
      总结
        3、select ...聚合函数 from 表名
        1、where ...
        2、group by ...
        4、having ...
        5、order by ...
        6、limit ...;
      order by :给查询结果进行排序
        order by 字段名 ASC/DESC
        ASC(默认) :升序
        DESC :降序
      limit(永远放在SQL命令的最后)
        1、作用 :限制显示查询记录的条数
        2、用法
          limit n :显示n条记录
          limit m,n :从第m+1条记录开始,显示n条
          limit 2,3 :显示第3、4、5条记录
        limit分页
        每页显示5条记录,显示第3页的记录
          limit m,n
        limit 10,5
        每页显示n条记录,显示第m页:
          limit (m-1)*n,n
      聚合函数
      分类
        avg(字段名) :该字段的平均值
        sum(字段名) :求和
        max(字段名) :最大值
        min(字段名) :最小值
        count(字段名) :统计该字段记录的个数

      having语句 :对分组聚合后的结果,进一步筛选
      找出平均攻击力>105的国家的前2名,显示国家名称和平均攻击力
      select aaa,avg(bbb) from xxx
        group by aaa
        having avg(bbb)>105
        order by avg(bbb) DESC
        limit 2;

  • 相关阅读:
    个人网站开发之用户模块
    个人网站开发记录(三)
    第二章 python变量及文件
    第十二章 函数的----
    第十一章 函数的参数
    第十章 函数
    第九章 内存管理
    第八章 文件的处理
    第七章 字符编码
    第六章 数据类型——元组、字典、集合、数据类型的转换
  • 原文地址:https://www.cnblogs.com/zhaoyang1997/p/10864624.html
Copyright © 2011-2022 走看看