目录:

  • Mysql(Python相关) day01

    • MySQL概述

      • 什么是数据库
      • 哪些公司在用数据库
      • 提供数据库服务的软件
    • MySQL特点
      • 关系型数据库特点
      • 示例
      • 非关系型数据库存储
      • 跨平台
      • 支持多种编程语言
      • 数据库软件、数据库、数据仓库
    • MySQL安装
      • Ubuntu安装MySQL
      • Windows安装MySQL服务
      • 启动和连接
    • 表库基本操作
      • 基本SQL命令
      • 库的管理
      • 表的管理
      • 表记录的管理
      • 如何更改库的默认字符集
      • 客户端把数据存储到数据库服务器上的过程
    • 数据类型
      • 数值类型()
      • 字符类型
      • 枚举类型(字段值只能在列举的范围内选择)
      • 日期时间类型
      • 作业:

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. 查看所有学生的姓名、手机号和成绩

Mysql(Python相关) day01相关推荐

  1. 如何写一个完整的django网站:配置环境啥的不讲(python+mysql+html相关) 肆

    虽然好像到现在为止只有几个人看了,但是心塞的作者还是给大家放一下网站的目录伐, 其中两个文件夹中可以忽略,存放css和js样式的,但是实践证明必须导入外部文件中的内容,额,js和css存放在图片2所示 ...

  2. 大厂面试 Mysql数据库相关面试题总结

    1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库:Oracle.DB2.Microsoft SQL Server.Microsoft Access.MySQL 非关系型数据库:NoSql. ...

  3. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day01.txt 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQ ...

  4. 爬取实习吧与python相关的招聘信息及分析与数据可视化

    大数据时代,计算机行业蓬勃发展,越来越多的人投身计算机事业养家糊口.所以该如何选择工作,现在社会需要怎么样的计算机人才,我们该如何对应的提升自己的本领都是尤为重要的.这篇文章就是对实习吧招聘网站有关p ...

  5. boost::parameter::python相关的测试程序

    boost::parameter::python相关的测试程序 实现功能 C++实现代码 实现功能 boost::parameter::python相关的测试程序 C++实现代码 #include & ...

  6. 共享一PYTHON 相关应用领域的介绍资料

    无意思 搜索到[PYTHON 相关应用领域的介绍资料]资料列表 ,感觉非常好,这里共享: http://woodpecker4org.b0.upaiyun.com/pyconcn/pycon2012c ...

  7. Mysql数据库(四)——mysql索引相关知识

    Mysql数据库(四)--mysql索引相关知识 一.索引的概念 二.索引的优缺点 1.优点 2.缺点 三.创建索引的原则 四.索引的分类和创建方法 1.普通索引 ①.直接创建索引 ②.修改表方式创建 ...

  8. mysql子查询sysdate_Oracle向MySQL 迁移相关事项

    Oracle向MySQL 迁移相关事项 从Oracle移植到MySQL主要有六个方面的内容需要移植,一是表Table,包括表结构和数据,二是触发器Trigger,三是存储过程Procedure,函数f ...

  9. python下载包管理器_Python包管理整理:setuptool管理python相关的包

    setuptool管理python相关的包 一.介绍 setuptool管理python相关的包的工具.这些包是zip格式发布,但是后缀一般都是.egg setuptool能解决python包的依赖关 ...

最新文章

  1. java编程50实例_java编程实例大全及详解谜底(50例).doc
  2. react: menuService
  3. 关于uint8_t/uint16_t/uint32_t/uint_fast16_t
  4. Jsoup 抓取和数据页 认识HTTP头
  5. php 文字超出画布,input实现文字超出省略号(代码示例)
  6. leetcode-深度优先搜索
  7. 2017.3.22 小z的袜子 思考记录
  8. 鼠标悬浮标签显示提示内容
  9. MemCache详细介绍
  10. 并发编程学习之写时复制CopyOnWriteArrayList
  11. ARC098E Range Minimum Queries
  12. C# 判断字符串中文汉字
  13. 计算器算贝塞尔公式_我不是灯光设计师,但是我会算空间的平均照度
  14. 数据库连接池实现原理
  15. mysql联合主键及用法
  16. 台湾成功大学起诉苹果Siri专利侵权 库克哥凌乱了
  17. spy++是可以获取浏览器当前页面的标题的,并且可以根据“窗口标题”和“类名”实现对浏览器的显示和隐藏,
  18. 黑暗爆炸 #1059. [ZJOI2007]矩阵游戏
  19. su vs sudo的区别
  20. 2022年计算机四级考试冲刺试题及答案(多选题)

热门文章

  1. cdma编码 计算机网络,计算机网络——2.物理层
  2. 分库分表之MyCat详解
  3. oracle 8103错误,【数据恢复】详解ORA-8103错误
  4. FP-Growth算法理解
  5. iPhone定义自己的个性手机铃声
  6. CT三维重建及三维可视化资料:opengl+VTK+PCL点云库
  7. 国密SM9系列算法验证工具
  8. asset store_在Asset Store上发布成功的产品
  9. javaEE基于ssm的超市会员管理系统
  10. layui文件上传重复问题