美文网首页
MySQL—day1

MySQL—day1

作者: 致自己_cb38 | 来源:发表于2019-04-24 19:21 被阅读0次

    一、 引入

    浏览器访问HTML静态页面:

    image.png

    浏览器访问动态网页的流程:

    image.png

    二、 学习数据库的重要性

    web开发的本质就是对数据库的操作。

    PHP开需要操作大量的字符串。数组,这两个数据来源一大部分是来源于数据库。

    web优化,服务器架构需要对数据库进行调优。

    三、 数据库课程体系

    在我们全栈学科的整个过程中,数据库分为三个部分:

    基础阶段:6天时间 MySQL基本操作。SQL语言(增删改查(CURD))。数据库的高级操作(视图,触发,函数,变量,过程)。

    高级阶段:服务器的时候,SQL优化,数据库的主从。

    部署阶段:项目上线的时候,生产环境服务器数据库的搭建。负载均衡,数据库的集群。

    四、 数据库基础概念

    1.什么是数据库

    数据库:database DB。数据的存储仓库。车库,粮库,仓库,优衣库。

    文件:数据库存储数据也是文件的方式进行存储的。

    数据库的专业定义:高效的数据存储以及数据处理软件。

    2.数据库的分类

    数据库大致分为三种:层次式数据库,网络式数据库,关系式数据库。不同种类的数据库存储数据的方式是不一样的。

    数据库有类型之分:关系型数据库,非关系型数据库。

    image.png

    参考网站:http://www.mamicode.com/info-detail-314758.html

    1) 网状数据库

    处理以记录类型为节点的网状数据模型的数据库

    image.png

    2) 层级式数据库

    层级数据库是将数据组织成有序的树状结构数据。并使用一对多的结构链接不同层级的数据。

    image.png

    3) 关系式数据库

    当前使用最广泛的数据库

    3.不同类型的数据库的主要产品

    1) 关系型数据库:

    大型:DB2 .Oracle

    中型:SQL server, mysql, mariaDB,postgreSQL .

    小型:access ,sqllite

    2) 非关系型数据库:

    memcached

    redis

    mongodb

    4.两种数据库类型的区别:

    关系型数据库是存储在磁盘中的。相对来说比较安全,进行复杂的查询,支持事务。

    非关系型数据库存储在内存。相对来说不安全,耦合度比较低,水平扩展比较好。速度比较快。性能比较好。

    五、 关系型数据库

    1. 什么是关系型数据库

    关系型数据库就是建立在关系模型(数学模型)上的数据库。

    关系型数据库其实就相当于一张Excel表格。

    银行实例:

    用户账号信息表:

    image.png

    流水信息表:

    image.png

    游戏解释数据库:

    image.png image.png image.png

    1) 实体、实体集与属性

    image.png image.png

    实体:客观存在的事物,对应的是数据库当中的一条记录。

    实体集:抽象出来的,具体实体的一个抽象概念,所对应的的是数据库的一张表。

    属性:实体具有很多的属性,对应到数据库中是表当中的一个字段。

    2) 数据库的组织架构

    一个数据库由多张数据表组成,每一张表中可以有多条记录。每一个表中也具有多个字段。

    六、 MySQL数据库介绍

    MySQL是一个关系型数据库,是瑞典的MySQLAB公司的产品。MySQL目前属于oracle。

    MySQL是web最好用的一款数据库,由于其开源的特点,在开源社区具有非常高的活跃度。

    MySQL分为两个版本,社区版和企业版。社区版是开源的,免费的。但是企业版是收费。

    MySQL具有很好的支持,特别是对PHP的支持,PHP有专门的的MySQL扩展。lamp以及lnmp都是非常流行的服务器架构。

    七、 SQL语句

    1. 概念

    SQL:(structured query language )结构化查询语言。同时这个sql也是数据库文件的脚本的后缀名。

    是数据库客户端与数据库服务器通信的语言。SQL语言是一种SQL通信的规范。美国国家标准协会(1986)制定了标准,几乎所有的关系型数据库都支持SQL语言。

    2. SQL语句分类

    根据数据库的操作对象进行划分(数据库,表,数据)。

    u DCL:数据库控制语言:主要是进行权限以及数据库用户的管理。

    u DDL:数据库定义语句。创建表,创建库。

    u DML:数据操作语言(对数据的增删改查)。

    DQL:数据库查询语言。

    八、 访问数据库服务器

    1. 访问步骤

    1) 开启服务器

    2) 连接服务器

    3) 进行操作

    2. 开启MySQL服务器的方式

    1) 使用系统服务开启

    使用window系统服务界面操作》

    image.png

    2) 使用命令行模式开启

    image.png

    开启命令:

    net  start mysql
    

    关闭命令:

     net  stop mysql
    

    3. 使用客户端连接数据库

    1) 客户端方式

    mysql提供了一个自己的客户端软件:MySQL command line client

    image.png
    image.png

    2) 命令行模式

    mysql [-h主机名] [-p端口号] -u用户名 -p(密码)

    -h:h表示主机,默认的是localhost。

    -p:p表示port,是端口的意思。默认的端口是3306.

    -u:u表示user,是用户的意思。mysql 安装好之后只有一个用户root,是管理员账号。

    -p:p表示password,是密码的意思。管理员root账号的密码是在安装的时候设置。

    image.png

    3) 使用工具

    image.png image.png
    image.png
    image.png

    4) 退出

    使用\q或者quit退出。

    image.png

    九、 数据库操作

    1. 查看数据库

    1) 查看数据库管理软件中的所有数据库。

    show databases;
    
    image.png

    系统的三个数据库一定不要删掉

    2) 查看数据库的建库语句

    show create database database_name;
    
    image.png

    2. 创建数据库

    1) 创建语法

    create database [if not exists] database_name [charset 字符集];
    

    不能创建一个已经存在的数据库:

    image.png

    可以使用if not exists进行判断,在判断没有这样的数据库时再添加。

    image.png
    image.png

    在创建数据库的时候是可以指定字符编码。

    image.png

    创建gbk编码的数据库:

    image.png

    2) 判断数据库是否已经存在

    3) 可以指定数据库的字符集:

    4) 数据库名称的命名规则

    • 数据库的名字有字母,数字,下划线组成。

    • 不能以数字开头,也不能为纯数字。

    • 当使用系统的关键字命名的时候要是用反撇号(`)包起来。尽量不要使用系统的关键字,否则会产生莫名其妙的问题。

    • 名称的长度一般不超过64个字符。

    • 起名字一定要有意义。

    3. 删除数据库

    drop database [if exists]  database_name;
    
    image.png

    再删除数据库之前要判断数据库是否存在。

    image.png

    看图说话:

    image.png

    不能直接删除不存在的数据库。

    删除的数据如果是使用系统关键字命名的。那么再删除的语法当中也应该将名称使用反撇号括起来。

    image.png

    4. 修改数据库

    主要是修改数据库的字符集。

    alter database database_name charset 新字符集;
    
    image.png

    5. 选择数据库

    use databases_name;
    
    image.png

    \s可以查看到当前的用户,当前的数据库主机,当前操作的数据库

    image.png

    十、 数据表的操作

    1. 查看数据表

    1) 查看所有数据表

    show tables;
    
    image.png

    当数据库没有数据表的时候,显示的是空或者empty set。

    image.png

    2) 查看表结构

    desc table_name;
    
    image.png

    3) 数据类型简单介绍

    整形 int

    浮点型 float

    字符串 char varchar

    日期类型 time ,datetime

    2. 建数据表

    1) 基本语法

    create  table table_name(
    字段1 数据类型 字段属性,
    字段2 数据类型  字段属性
    )charset 字符集;
    

    注意:如果是最后一个字段,字段的最后的逗号要省略。

    create table hreo(
    id int comment ‘英雄ID号’,
    name varchar(30) comment ‘名称’,
    skill varchar(20) comment ‘技能’
    )charset utf8;
    
    image.png

    2) 查看数据表的创建语句

    show create tabel table_name ;  
    
    image.png

    3. 删除数据表

    drop table  table_name;
    
    image.png

    4. 修改数据表

    1) 修改表的名字

    alter table table_name rename [to] new_name;
    
    image.png

    十一、 数据操作

    数据的操作也叫(CURD),也就是数据的增删改查。

    1. 插入数据

    insert into table_name(字段1,字段2,……) values (值1,值2,……);
    

    --数据的插入

    --数据的插入
    insert into hero(id,name,skill) values(2,'猪头人','脑残');
    insert into hero(id,name,skill) values(3,'牛头人','杀猪');
    insert into hero(id,name,skill) values(5,'羊头人','杀牛');
    
    insert into hero(id,name,skill) values(8,'喜洋洋','白胖胖'),
    (9,'灰太狼','吃平底锅');
    
    image.png

    注意:输入的时候,值得顺序一定要和字段的顺序保持一致。如果说知道表字段的顺序,并且知道表字段的数据类型和限制条件。那么也可以使用下面这种语法:

    insert into table_name  values(值1,值2……);
    
    image.png

    2. 查询数据

    数据查询使用select 关键字进行数据表的扫描。

    1) 查询指定字段的内容

    select 字段1,字段2…… from table_name;
    
    select name from hero;
    
    image.png

    2) 查询所有的列数据

    select * from table_name;
    

    *表示所有的字段,菊花表示查询数据库所有字段。

    image.png

    2) 按照条件查询

    select (字段/*) from  table_name where 条件;
    
    --查询ID为3的英雄的技能
    select skill from hero where id=3;
    
    image.png

    3. 修改数据

    修改数据也是网页操作中比较常见操作。

    update table_name set 字段=值,字段2=值2…… where 条件;
    

    注意:

    update更新操作一般都是由where条件的,如果要运行的是一个没有where条件的SQL更新语句,那么一定要小心小心再小心。update操作在没有where条件的时候会修改整个表当中的所有数据。

    image.png
    image.png

    4. 删除数据

    delete from table_name  where 条件;
    

    同样的,删除操作一般也是具有where条件的,如果没有where条件,一定要再三确认。

    image.png
    image.png

    十二、 字符集以及校对规则

    1. 乱码问题

    1) 产生原因

    image.png image.png

    数据库表的字符编码与客户端通信使用的字符编码不一致。数据库采用的是utf8保存的。客户端使用的是gbk获取的,所以产生乱码。

    2) 解决办法

    客户端的编码是无法改变的。只能设置数据的字符集编码。

    查看当前数据库关于字符集的一些变量:

    show  varables like ‘%character%’;
    
    image.png

    第一种解决办法:

    设置使用gbk通信:

    set names gbk;
    
    image.png
    image.png

    第二种解决办法:

    单独去设置影响显示的系统变量:

    set 变量名 = 值;
    
    set character_set_client = utf8;
    
    image.png

    2. 字符集

    1) 概念

    字符集:字符的编码。

    2) 常用的字符集编码

    ASCII:美国的通用信息编码。

    gbk/gb2312:汉字编码。

    utf8:万国码,本质上是使用8位可变长度的字节的字符编码,几乎支持所有的文字。

    3) 数据库中的编码:

    数据库编码默认的是使用utf编码。数据表的编码默认使用数据库的编码。

    设置了新的数据库编码之后,已有的表还保持之前的字符编码,新建的表采用新的编码方式。

    4) 字符集统一规则 只有以下几个方面的字符编码方式一致,最终文字的显示才会准确。

    • 数据库的编码

    • 数据表的编码

    • PHP文件存数据的编码

    • PHP文件取数据的编码

    • HTML显示的编码

    5) 查看数据库支持的编码

    show charset;
    
    image.png

    3. 校对规则(排序规则

    1) 概念

    校对集:同一个字符编码当中,字符串的比较规则就叫校对集。

    image.png
    image.png

    2) 查看服务器支持的校对规则

    show collaction;

    [图片上传失败...(image-d1b43b-1556096227562)]

    3) 校对规则命名特点

    image.png

    ci:表示不区分大小写 A===a

    cs:表示区分大小写 A!=a

    bin: 表示按照二进制编码顺序排序。

    utf8一般使用 utf8_general_ci 这种校对集规则。

    校对规则是针对一种字符编码的,一种字符编码可以有多种校对集。

    默认的校对规则在查看建表语句的时候是不显示的。

    相关文章

      网友评论

          本文标题:MySQL—day1

          本文链接:https://www.haomeiwen.com/subject/ktaygqtx.html