zoukankan      html  css  js  c++  java
  • MySQL学习记录

    一、MYSQL概述

    1.1 什么是数据库

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

    1.2 哪些公司在使用数据库

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

    1.3 提供数据库服务的软件

    1 软件分类

        MySQL、SQL_Server、Qracle、Mariadb、DB2、MongoDB
    

    2 在生产环境中,如何选择使用哪个数据库

    •     (1) 是否开源
            开源软件:MySQL、Mariadb、MongoDB
            商业软件:Oracle、DB2、SQL_Server
      
    •     (2) 是否跨平台
            不跨平台:SQL_Server
            跨平台:MySQL、Mariadb、MongoDB、Oracle、DB2
      
    •   (3) 公司的类型
            商业软件:政府部门、金融机构
            开源软件:游戏网站、
      

    1.4 MySQL的特点

    1、关系型数据库

    •     1、关系型数据库的特点
            1、数据是以行和列的形式去存储的
            2、
            3、表中的每一行叫一条记录
            4、表中的每一列叫一个字段
            5、表与表之间的逻辑关联叫关系
      
    •     2、示例
            1、关系型数据库存储
      

      表一 学生信息表:

      姓名 年龄 班级
      牛郎 25 AID1803
      织女 232 AID1801

      2、表二 班级信息表

      班级 班主任
      AID1803 卢大大
      AID1801 孙大大

    2、非关系型数据库

    •   {"姓名":“牛郎”,"年龄":25,“班级”:"AID1803","班主任":"卢大大"}
        {"姓名":"织女","年龄":25,"班级":"AID1803"}
      

    跨平台
    可以支持Unix、Linux、Windows上运行数据库服务
    3、支持多种编程语言
    Python、java、php...

    二、MySQL安装

    1、Ubuntu安装MySQL服务 RetHat(红帽)、CentOS、Ubuntu

    1、安装服务端
        sudo apt-get install mysql-server
    2、安装客户端
        sudo apt-get install mysql-client
    

    2、Windows安装MySQL服务

    1、下载MySQL安装包
        mysql-installer******5.7.******.msi
    2、双击、按照教程安装即可
    

    3、启动和连接MySQL服务

    1、服务端启动

    1、 查看MySQL服务状态
        sudo /etc/init.d/mysql status
        
    2、 停止、启动、重启 MySQL服务
        sudo /etc/init.d/mysql stop|start|restart
    

    2、客户端连接

    1、 命令格式
        mysql -h主机地址 -u用户名 -p密码
        mysql -hlocalhost -uroot -p123456
        
    2、 本地连接可以省略 -h 选项
        mysql -u用户名 -p密码
        mysql -uroot -p123456.
    

    3、MySQL命令

    1、命令规则
    1、每条SQL命令必须以;结尾
    2、SQL命令不区分字母大小写
    3、使用c来终止命令的执行(Linux 中使用 Ctrl + c)
    
    2、库的管理
    1、库的基本操作
        1、查看已有的库
        show databases;
            
        2、创建库
        create database 库名字;
        create database 库名字 default charset=utf8;  指定字符集编码
            
        3、查看创建库的语句
        show create database 库名字;
        
        4、查看当前所在库
        select database();
            
        5、切换库
        use 库名;
        
        6、查看库中已有表
        show tables;
            
        7、删除库
        drop database 库名;
    
    2、库名的命名规则
        1、可以使用数字、字母、_,但不能使用纯数字
        2、库名区分字母大小写
        3、库名具有唯一性
        4、不能使用特殊字符和MySQL关键字
    
    3、练习:
        1、创建库AID1803db,指定字符集为utf8
            create database AID1803db default charset=utf8;
            
        2、切换到该库创建库AID1803db
            use AID1803db;
            
        3、查看当前所在库
            select database();
            
        4、查看库中已有的表
            show tables;
            
        5、查看AID1803db的字符集(查看创建库的语句)
            show create database AID1803db;
            
        6、删除库AID1803db
            drop database AID1803db;
    

    3、表的管理

    1、表的基本操作
    1、创建表(指定字符集)
        create table 表名(
        字段名 数据类型,
        字段名 数据类型,
        ......
        );
    2、查看创建表的语句(字符集)
        show create table 表名;
    
    3、查看表结构
        desc 表名;
    
    4、删除表
        drop table表名;
    
    2、表的命名规则(同库的命名规则)
    3、练习
    1、 创建库python
        create database python;
    2、 在库python中创建表py_mysql,指定字符集utf8
        use python;
        create table py_mysql(
        id int,
        name char(20)
        );
    3、 查看表py_mysql的字符集以及存储引擎
        show create table py_mysql;
        
    4、 查看py_mysql字符集以及存储引擎
        desc py_mysql;
        
    5、 删除表py_mysql
        drop table py_mysql;
    
    4、注意
    1、所有的数据都是以文件的形式存放在数据库目录下
    2、数据库目录:/var/lib/mysql
    
    5、更改库、表的默认字符集
    1、方法
        通过更改MySQL服务的配置文件来实现。
    
    2、步骤
    1、获取root权限
        sudo -i
    2、切换到配置文件所在路径、
        cd /etc/mysql/mysql.conf.d
    3、备份
        cp mysqld.cnf mysqld.cnf.bak
    4、用vi打开mysqld.cnf,在
        [mysqld]
        character_set_server = utf8 保存退出
    5、重启mysql
        /etc/init.d/mysql restart
    
    6、表记录管理
    1、在表中插入记录
    1、insert into 表名 values(值1)、(值2)......,(值N);
    2、insert into 表名(字段名列表) values(值1),...(值N);
    
    2、查询表记录
    1、select * from 表名;
    2、select 字段1,字段名2,...,字段名N from 表名;
    
    3、练习
    1、查看所有的库
    2、创建新库 stu1
    3、在库stu1中创建表students,字段要求如下
        1、id int
        2、name char
        3、age int
        4、address char(20)
    4、查看表students的表结构
    5、在表中插入一条记录
    6、在表中一次性插入2条记录
    7、查看所有表记录
    8、删除表students
    9、删除库stu1
    
    7、客户端把数据存储到数据库服务器上的过程
    1、连接到数据库服务器 mysql -uroot -p123456
    2、选择一个库:user 库名;
    3、创建表或者修改表:create ...
    4、断开与数据库服务器的连接:exit | quit | q
    
    8、名词介绍
    1、DB (database)
        DB就是数据库,存储数据的仓库
    2、DBMS (database management system)
        数据库管理系统
        管理数据库的软件:MySQL、Qracle、MongoDB ......
    3、DBS(database system)
        数据库系统
        DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统、人事管理系统) + 用户
    
    9、数据类型
    1、数值类型
    1、整形
    1、int 大整形(4字节)
        取值范围:0~2**32 - 1 (42亿多)
    2、tinyint微小整形(1个字节)
        1、有符号(signed默认):-128 ~ 127
        2、无符号(unsigned):0 ~ 255
    3、smallint 小整形(2个字节)
        取值范围:0~65535
    4、bigint 极大整形(8个字节)
        取值范围:0 ~ 2 ** 64 - 1
    
    2、浮点型
    1、float(4个字节,最多显示7个有效位)
        1、用法
            字段名 float(m,n) m:表示总位数 n:小数位位数
            salary float(5,2) 取值范围 -999.99 ~ 999.99
            数值大了有效位只有7位
        2、注意
            1、浮点型插入整数时会自动补全小数位位数
            2、小数位如果多于指定的位数,会对指定位的下一位进行四舍五入
            float(5,2) -> 23.128 ->23.13
    2.double(8个字节,最多显示15个有效位)
    1、用法
        字段名 double(m,n)
    3、decimal(M+2个字节,最多显示28个有效位)
        1、用法
            decimal(28,5)
    
    2、字符类型
    1、char(定长)
          1、取值范围:1 ~ 255
          2、不给定宽度默认值为1
    2、varchar(变长)
            1、取值范围 1~65535
            2、注意
                1、varchar没有默认宽度,必须给定一个宽度值
                    name varchar(20)
    3、char 和 varchar 的特点
        1、char 
            浪费存储空间,但是性能高
        2、varchar
            节省存储空间,但是性能低
    
    3、枚举类型
    1、定义
        字段值只能在列举的范围内选择
    2、enum(...) 单选(最多有65535个不同的值)
        字段名(值1,值2,值3,...,值N)
    3、set(...) 多选(最多有64个不同的值)
        字段名 set(值1,值2,...,值N)
        插入记录时 “Python,boy,Mysql”
    
    4、日期时间类型
    1、year :年 YYYY
    2、date : 日期 YYYYMMDD
    3、time : 时间 HHMMSS
    4、datetime :日期时间 YYYYMMDDHHMMSS
    5、timestamp :日期时间 YYYYMMDDHHMMSS 
    6、注意
        1、插入记录时datetime字段不给值默认返回NULL
        2、插入记录时timestamp字段不给值默认返回系统当前时间
    
    10、表字段的操作
    1、语法:alter table 表名 执行动作;
    1、添加字段
    alter table 表名 add 字段名 数据类型 first | after 字段名;
    2、删除字段
    alter table 表名 drop 字段名;
    3、修改字段名数据类型
    alter table 表名 modify 字段名 新数据类型;
    注意:修改数据类型时会受到表中原有数据类型的限制
    4、修改字段名
    alter table 表名 change 旧名 新名 数据类型;
    5、修改表名
    alter table 表名 rename 新表名;
  • 相关阅读:
    grad-cam 、cam 和热力图,基于keras的实现
    高斯过程(转)
    Keras中使用LSTM层时设置的units参数是什么
    Real Time Credit Card Fraud Detection with Apache Spark and Event Streaming
    NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)
    NodeJs+Request+Cheerio 采集数据
    数组与对象的深浅复制
    Git(进击学习:远程仓库操作)-V3.0
    牛逼的css3:动态过渡与图形变换
    Git(远程仓库:git@oschina)-V2.0
  • 原文地址:https://www.cnblogs.com/taoke2016/p/8985785.html
Copyright © 2011-2022 走看看