MySQL

Posted 凌逆战

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。

mysql

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

用在哪些领域:金融机构、游戏网站、购物网站、论坛网站

提供数据服务的软件

  1、软件分类:MySQL、SQL_Server、Oracle、Mariadb、DB2、MongoDB ...

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

    1、是否开源

      开源软件:MySQL、Mariadb、MongoDB

      商业软件:Oracle、DB2、SQL_Server

    2、是否跨平台

      不跨平台:SQL_Server

      跨平台:MySQL、Mariadb、MongoDB、DB2、Oracle

    3、公司的类型

      商业软件:政府部门、金融机构

      开源软件:游戏网站、购物网站、论坛网站... ...

MySQL的特点

 

  1、关系型数据库
    1、关系型数据库的特点
      1、数据是以行和列的形式去存储的
      2、这一系列的行和列称为表
      3、表中的每一行叫一条记录
      4、表中的每一列叫一个字段
      5、表和表之间的逻辑关联叫关系
    2、示例
      1、关系型数据库存储
        表1、学生信息表
          姓名 年龄 班级
          牛郎 25 AID1803
          织女 23 AID1801
        表2、班级信息表
          班级 班主任
          AID1803 卢大大
          AID1801 孙大大
      2、非关系型数据库中存储
        {"姓名":"牛郎","年龄":25,"班级":"AID1803","班主任":"卢大大"}
        {"姓名":"织女","年龄":25,"班级":"AID1803"}
  2、跨平台
    可以在Unix、Linux、Windows上运行数据库服务
  3、支持多种编程语言
    Python、java、php ... ...

2、MySQL的安装

  1、Ubuntu安装MySQL服务 RedHat(红帽)、CentOS、Ubuntu
    1、安装服务端
      sudo apt-get install mysql-server
    2、安装客户端
      sudo apt-get install mysql-client
  2、Windows安装MySQL服务
    1、下载MySQL安装包(windows)
      mysql-installer***5.7.***.msi
    2、双击、按照教程安装即可  http://www.runoob.com/mysql/mysql-install.html

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

4、基本SQL命令

  1、SQL命令的使用规则
    1、每条SQL命令必须以 ; 结尾
    2、SQL命令不区分字母大小写
    3、使用 c 来终止命令的执行 (Linux中 ctrl + c)
  2、库的管理
    1、库的基本操作
      1、查看已有的库
        show databases;
      2、创建库(指定默认字符集)
        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关键字

 

技术分享图片
 1     1、创建库AID1803db,指定字符集为utf8
 2         create database AID1803db default charset=utf8;
 3     2、切换到该库AID1803db
 4         use AID1803db;
 5     3、查看当前所在库
 6         select database();
 7     4、查看库中已有的表
 8         show tables;
 9     5、查看AID1803db的字符集(查看创建库的语句)
10         show create database AID1803db;
11     6、删除库AID1803db
12         drop database AID1803db;
练习

 

  3、表的管理
    1、表的基本操作
      1、创建表(指定字符集)
        create table 表名(
        字段名 数据类型,
        字段名 数据类型,
        ... ...
        );
      2、查看创建表的语句(字符集)
        show create table 表名;
      3、查看表结构
        desc 表名;
      4、删除表
        drop table 表名;
    2、表的命名规则(同库的命名规则)

技术分享图片
 1 1、创建库 python
 2     create database python;
 3 2、在库 python 中创建表 py_mysql,指定字符集utf8
 4      表中字段有 id int 和 name char(20) 两个字段
 5     use python;
 6     create table py_mysql(
 7     id int,
 8     name char(20)
 9     )default charset=utf8;
10 3、查看表 py_mysql 的字符集以及存储引擎
11     show create table py_mysql;
12 4、查看 py_mysql 的表结构
13     desc py_mysql;
14 5、删除表 py_mysql
15     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 -p mysqld.cnf mysqld.cnf.bak
      (-p选项连同原文件权限一起复制)
    4、用vi打开mysqld.cnf
      vi mysqld.cnf
      [mysqld]
      character_set_server = utf8 保存退出
      a -> 写入 -> ESC -> shift + : -> wq
    5、重启mysql服务
      /etc/init.d/mysql restart | reload(重载配置文件)
    6、退出超级用户 exit
    7、登录到mysql验证:mysql -uroot -p123456
              create database 库名;
              show create database 库名;

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 表名;

技术分享图片
 1 1、查看所有的库 : show databases;
 2 2、创建新库 stu1 : create database stu1;
 3 3、在库 stu1 中创建表 students ,字段要求如下
 4      1、id int
 5      2、name char(15)
 6      3、age int
 7      4、address char(20)
 8 4、查看表 students 的表结构: desc students;
 9 5、在表中插入一条记录(行)
10     insert into students values(1,"Tom",25,"Beijing");
11 6、在表中一次性插入2条记录(行)
12     insert into students values(...),(...);
13 7、查看所有表记录 : select * from students;
14 8、删除表 students : drop table students;
15 9、删除库 stu1 : drop database stu1;
16 7、客户端把数据存储到数据库服务器上的过程
联系

 

 

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

  1、连接到数据库服务器 : mysql -uroot -p123456
  2、选择一个库 :use 库名;
  3、创建表或者修改表 :create ...
  4、断开与数据库服务器的连接 :exit | quit | q

 

8、名词介绍

  1、DB (database)
    DB就是数据库,存储数据的仓库
  2、DBMS(database management system)
    数据库管理系统
    管理数据库的软件:MySQL、Oracle、MongoDB ... ...
  3、DBS(database system)
    数据库系统
    DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统、人事管理系统) + 用户

 

9、数据类型

1、数值类型(有符号signed和无符号unsigned)
  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
      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  节省存储空间,但是性能低

技术分享图片
 1 1、创建表stuinfo,字段要求如下:
 2     学号:id 大整型                 id int,
 3     姓名:name 变长,宽度为15        name varchar(15),
 4     班级:classes 定长,宽度为7      classes char(7),
 5     年龄:age 微小整型,要求不能输入负数
 6                 age tinyint unsigned,
 7     身高:height 浮点型,小数位为2位 heigit float(5,2)
 8 2、查看表结构 : desc stuinfo
 9 3、在表 stuinfo 中插入2条记录(行)
10     insert into stuinfo values
11     (1,"张三丰","AID1803",23,175.00)
12 4、查询所有表记录
13     select * from stuinfo;
14 5、查询所有学生的姓名、年龄和身高
15     select name,age,height from stuinfo;
练习

  3、枚举类型
    1、定义
      字段值只能在列举的范围内选择
    2、enum(...) 单选(最多有65535个不同的值)
      字段名 enum(值1,值2,...,值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
        create table t6(
        id int,
        name varchar(15),
        age tinyint unsigned,
        birth_year year,
        birthday date,
        class time,
        meeting datetime
        )default charset=utf8;

 

        insert into t6 values
        (1,"武松",40,1979,19790520,090000,20180504000000);
        select * from t6;
      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 新表名;


1、MySQL中的数据类型有 数值类型、字符类型、枚举类型、时间类型。
2、关系型数据库的核心内容是 关系 即 二维表

2、操作题
  1、创建一个学校的库 school
  2、在库中创建一张表 students 来存储学生信息
    学号、姓名、年龄、成绩、性别、爱好、入学时间
  3、查看students的表结构
  4、在students中添加一个字段id,添加在第一列
  5、在表中随意插入5条记录
  6、查看所有的学生信息
  7、查看所有学生的姓名和成绩
  8、查看成绩及格(>60分)的学生的姓名和成绩

 



 

















































































































































































































以上是关于MySQL的主要内容,如果未能解决你的问题,请参考以下文章

从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

mysql查看版本的四种方法