Mysql(Python相关) day01

目录:

Mysql(Python相关) day01

MySQL概述

什么是数据库

数据库是存储数据的仓库

哪些公司在用数据库

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

提供数据库服务的软件

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

MySQL特点

关系型数据库特点

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

示例

1. 关系型数据库存储
    1. 表1、学生信息表

            姓名   年龄 班级
            星矢    25     三班
            水冰月  26 六班
    2. 表2、班级信息表
            班级      班主任
            三班      大空翼
            六班      松人

非关系型数据库存储

    {"姓名":"星矢","年龄":25,"班级":"三班"}
    {"姓名":"水冰月","年龄":26,"班级":"六班","班主任":"松人"}

跨平台

可以在Unix、Linux、Windows上运行数据库服务

支持多种编程语言

python、java、php …

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

  1. 数据库软件
    是一种软件,可以看得见,可操作,用来实现数据库逻辑功能
  2. 数据库
    是一种逻辑概念,用来存储数据的仓库,侧重存储
  3. 数据仓库
    从数据量来说,数据仓库要比数据库庞大的多,主要用于数据挖掘和数据分析

    数据库:user表 验证
    数据仓库:哪个时间段用户登录量最多,哪个用户一年购物最多,……

MySQL安装

Ubuntu安装MySQL

  1. 安装服务端
    sudo apt-get install mysql-server
  2. 安装客户端
    sudo apt-get install mysql-client
  3. Ubuntu安装软件
    1. sudo apt-get update
    2. sudo apt-get -f install
      修复依赖关系

Windows安装MySQL服务

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

启动和连接

  1. 服务端启动
    1、sudo /etc/init.d/mysql start
    2、sudo /etc/init.d/mysql status | stop | restart
  2. 客户端连接
    1. 命令格式
      mysql -h主机地址 -u用户名 -p密码
      mysql -hlocalhost -uroot -p123456
    2. 本地登录可省略-h选项
      mysql -uroot -p123456

表库基本操作

基本SQL命令

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

库的管理

  1. 库的基本操作
    1. 查看已有的库
      show databases;
    2. 创建库(指定字符集)
      create database 库名 [character set utf8];
    3. 查看创建库的语句
      show create database 库名;
    4. 查看当前所在库
      select database();
    5. 切换库
      use 库名;
    6. 查看库中已有表
      show tables;
    7. 删除库
      drop database 库名;
  2. 练习
    1. 创建库testdb,指定字符集为utf8
      create database testdb character set utf8;
    2. 进入到库testdb
      use testdb;
    3. 查看当前所在库
      select database();
    4. 创建库testdb2,指定字符集为latin1
      create database testdb2 character set latin1;
    5. 进入到库testdb2
      use testdb2;
    6. 查看testdb2的默认字符集
      show create database testdb2;
    7. 删除库testdb
      drop database testdb;
    8. 删除库testdb2
      drop database testdb2;
  3. 库名的命名规则
    1. 可以使用数字、字母、_,但是不能为纯数字
    2. 库名区分字母大小写
    3. 库名具有唯一性
    4. 不能使用特殊字符和mysql关键字

表的管理

  1. 表的基本操作
    1. 创建表
      create table 表名(
      字段名1 数据类型,
      字段名2 数据类型,
      字段名3 数据类型
      );
    2. 查看创建表的语句(字符集、存储引擎)
      show create table 表名;
    3. 查看表结构
      desc 表名;
    4. 删除表
      drop table 表名;
  2. 练习
    1、创建库python1
    2、在 python1 库中创建表 pymysql并指定字符集为utf8,字段有三个:id name age 数据类型自己定义
    3、查看表pymysql的默认字符集和存储引擎
    4、查看表 pymysql 的表结构
    5、删除表 pymysql
    6、删除库 python1
    7、创建库 python2
    8、在库python2中创建表 t1 指定字符集utf8,字段有 id name score三个,数据类型自己定义
    9、查看t1的表结构
  3. 注意
    1. 所有的数据都是以文件的形式存放在数据库目录下
    2. 数据库目录:/var/lib/mysql(默认安装路劲)

表记录的管理

  1. 在表中插入记录
    1. insert into 表名 values(值1),(值2),…;
    2. insert into 表名(字段名1,字段名2,…) values(值1),(值2),…;
  2. 查询表记录
    1、select * from 表名 [where 条件];
    2、select 字段名1,字段名2,… from 表名 [where 条件];
  3. 练习
    1. 查看所有库
    2. 创建一个新库 studb
    3. 在 studb 中创建一张表 tab1,指定字符集utf8,表中字段有 id name age score 四个
    4. 查看tab1的表结构
      desc tab1;
    5. 在 tab1 中随意插入2条记录
      insert into tab1 values
      (1,”Tom”,22,100),(2,”Lucy”,23,80);
    6. 在 tab1 的name,age两个字段插入2条记录
      insert into tab1(name,age) values
      (“Bob”,30),(“Green”,33);
    7. 查看 tab1 中的所有记录
      select * from tab1;
    8. 查看 tab1 中所有人的名字和成绩
      select name,score from tab1;

如何更改库的默认字符集

  1. 方法
    通过更改MySQL的配置文件实现
  2. 步骤
    1. 获取root权限
      sudo -i
    2. 备份mysql的配置文件
      cd /etc/mysql/mysql.conf.d/
      cp mysqld.cnf mysqld.cnf.bak
    3. 修改配置文件
      subl mysqld.cnf
      在[mysqld]下面添加:
      character_set_server = utf8
    4. 重启MySQL服务/重新加载配置文件(reload?????)
      /etc/init.d/mysql restart | reload?????
    5. 创建库验证默认字符集是否为utf8

客户端把数据存储到数据库服务器上的过程

  1. 连接到数据库服务器 mysql -h … -u … -p …
  2. 选择库 use 库名
  3. 创建表/修改表
  4. 断开与数据库服务器的连接 exit | quit | \q

数据类型

数值类型()

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

    1. float(4个字节,最多显示7个有效位)
      1. 用法
        字段名 float(m,n) m:总位数 n:小数位位数
        float(5,2) 取值范围? -999.99 ~ 999.99
      2. 注意
        1、浮点型插入整数时会自动补全小数位
        2、小数位如果多于指定的位数,会对下一位四舍五入
    2. double(8个字节,最多显示15个有效位)
    3. decimal(最多显示28个有效位)

      1. 字段名 decimal(m,n)
      2. 存储空间(整数部分和小数部分分开存储)
        规则:将9位数字的倍数包装成4个字节
        即:对于每个部分,需要4个字节来存储9位数的每个倍数,剩余数字所需的存储空间如下表:

        剩余数字 字节
        0 0
        1-2 1
        3-4 2
        5-6 3
        7-9 4
        示例:decimal(19,9) —>9字节
        整数部分:10/9=商1余1 4字节+1字节=5字节
        小数部分:9/9=商1余0 4字节+0字节=4字节

字符类型

  1. char(定长)
    1. 宽度取值范围:1~255
    2. 不给定宽度默认为1
  2. varchar(变长)
    1. 取值范围:1~65535
  3. char 和 varchar 的特点
    1. char:浪费存储空间,但是性能高
    2. varchar:节省存储空间,但是性能低
  4. text / longtext(4G) / blob / longblob(4G)
  5. 字符类型的宽度和数值类型的宽度的区别
    1. 数值类型的宽度为显示宽度,仅仅用于select查询时显示,和占用的存储空间大小无关,可用zerofill查看效果
    2. 字符类型的宽度超过则无法存储
  6. 练习
    1. 创建一个库studb2,在studb2库中创建表tab,字段如下:
      学号:id 要求显示宽度为2,位数不够用0填充
      姓名:name 变长,宽度20
      年龄:age 微小整型,不能输入负数
      身高:height 浮点型,小数位为2位
      工资:salary 浮点型,最大为 9999 9999 . 99
      create table tab(
      -> id int(2) zerofill,
      -> name varchar(20),
      -> age tinyint unsigned,
      -> height float(5,2),
      -> salary decimal(10,2)
      -> );
    2. 查看 tab 的表结构
    3. 在表中插入 1 条记录
    4. 查询所有学生的 id 、name 、height 和 salary

枚举类型(字段值只能在列举的范围内选择)

  1. 单选(最多65535个不同值)
    字段名 enum(值1,值2,…,值N)
  2. 多选(最多64个不同值)
    字段名 set(值1,值2,…,值N)
    插入记录时 “girl,python,mysql”

日期时间类型

  1. year : 年 YYYY
  2. date : 日期 YYYYMMDD
  3. time : 时间 HHMMSS
  4. datetime
    timestamp : 日期时间 YYYYMMDDHHMMSS
    ## 插入记录时datetime不给值默认返回NULL,而timestamp字段默认返回系统当前时间
  5. 示例
    mysql> create table t11(
    -> id int,
    -> name char(15),
    -> birth_year year,
    -> birthday date,
    -> class time,
    -> meeting datetime
    -> )character set utf8;

作业:

  1. 面试题
    1. MySQL中的数据类型有:_ _ _ _
    2. 关系型数据库的核心内容是 关系二维表
    3. 简述客户端把数据存储到数据库服务器上的过程
    4. char和varchar的区别,各自的特点
    5. 创建一个学校的库 school
    6. 在库中创建一个表 students 存储学生信息,字段如下
      学号(显示宽度为3,不够用0填充)、姓名、年龄(不能为负数)、手机号、成绩(浮点型)、性别(单选)、爱好(多选)、入学时间(年月日)
    7. 查看students的表结构
    8. 在表中随意插入1条记录
    9. 在表中的 姓名、手机号、成绩 三个字段插入3条记录
    10. 查看所有学生的姓名、手机号和成绩

猜你喜欢

转载自blog.csdn.net/luohongtucsdn/article/details/80910596