• Mysql快速入门


    MySQL简介:MySQL是开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL5.5版本之后都是由Oracle发布的版本,MySQL之前被SUN公司收购,而SUN公司现在又被Oracle公司收购,所以现在MySQL也是属于Oracle旗下的一款产品。

    1.什么是MySQL?

    维基百科上这么解释:

    MySQL原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。
    MySQL在过去由于 性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用
    但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社群们对于Oracle是否还会持续支持 MySQL社群版(MySQL之中唯一的免费版本 有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库

    2.为什么要使用MySQL?

    主要有以下几点:

    (1).mysql性能卓越,服务稳定,很少出现异常宕机。

    (2).mysql开放源代码且无版权制约,自主性及使用成本低。

    (3).mysql历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助。

    (4).mysql软件体积小,安装使用简单,并且易于维护,安装及维护成本低。

    (5).mysql品牌口碑效应,使得企业无需考虑就直接用之,lamp,lnmp流行架构。

    (6).mysql支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。

    3.MySQL安装

     首先在这里我们来教大家用linux来安装我们的MySQL,在linux里有两种方式一:rpm软件包管理,rpm相当于我们的本地安装,二:yum安装,yum安装就相当于在线安装,好了现在来进入我们的安装教程:

    在线安装方式

    1.打开虚拟机:

    查看是否有MySQL软件:rpm -qa|grep mysql

    有的话我们可以使用卸载方式:

    yum remove mysql mysql-server mysql-libs mysql-common

    rm -rf /var/lib/mysql

    rm /etc/my.cnf

    查看是否还有mysql软件,有的话继续删除。

    软件卸载完毕后如果需要可以删除mysql的数据库:/var/lib/mysql

    2.下载rpm包:

    要使用yum 安装mysql,要使用mysqlyum仓库,先从官网下载适合你系统的仓库

    http://dev.mysql.com/downloads/repo/yum/

    我们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm

     然后将mysql-community-release-el6-5.noarch.rpm上传到linux系统。

     3.安装仓库列表:

    注意:在上传的mysqlrpm包当前目录下,执行以下命令:

    yum localinstall mysql-community-release-el6-5.noarch.rpm 

    4.安装mysql

    yum install mysql-community-server

    Rpm本地安装方式

    如果没有网络环境可以使用参考资料中的mysql-rpm文件夹下的mysql安装包来安装。

    第一步:将以下文件上传到linux系统

     第二步:使用rpm命令进行安装

    [root@bogon mysql-rpm]# rpm -ivh mysql-community-*

    安装后,启动服务、设置密码、远程授权后既可以使用

    启动mysql

    service mysqld start

    设置root用户密码

    mysql数据库安装完以后只会有一个root管理员账号,但是此时的root账号还并没有为其设置密码,在第一次启动mysql服务时,会进行数据库的一些初始化工作,在输出的一大串信息中,我们看到有这样一行信息 :

    /usr/bin/mysqladmin -u root password 'new-password'  // root账号设置密码

    mysql远程连接授权

     

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

     

    注意:'myuser''mypassword' 需要替换成实际的用户名和密码。

    关闭linux的防火墙

    [root@bogon linux]# service iptables stop

    iptables:清除防火墙规则:               [确定]

    iptables:将链设置为政策 ACCEPTfilter                      [确定]

    iptables:正在卸载模块:                [确定]

    SQL语句使用

    1.数据库操作:database

    创建数据库

    语法:

      * create database 数据库名;

      * create database 数据库名 character set 字符集;  

    查看数据库

    查看数据库服务器中所有的数据库:show database;

    查看某个数据库定义的信息:show create database 数据库名;

    删除数据库

    drop database 数据库名称;

    其他的数据库操作命令

     

    切换数据库: use 数据库名;

    查看正在使用的数据库:select database();

    表操作: table

    字段类型

    常用的类型有:

    数字型int

    浮点型double

    字符型varchar(可变长字符串)

    日期类型date(只有年月日,没有时分秒)

           datetime(年月日,时分秒)

    boolean类型不支持

    分类

    类型名称

    说明

    整数类型

    tinyInt

    很小的整数

    smallint

    小的整数

    mediumint

    中等大小的整数

    int(integer)

    普通大小的整数

    小数类型

    float

    单精度浮点数

    double

    双精度浮点数

    decimal(m,d)

    压缩严格的定点数------开发时用

    日期类型

    year

    YYYY  1901~2155

    time

    HH:MM:SS  -838:59:59~838:59:59

    date

    YYYY-MM-DD 1000-01-01~9999-12-3

    datetime-开发用

    YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59

    timestamp

    YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC

    文本、二进制类型

    CHAR(M)

    M为0~255之间的整数

    VARCHAR(M)

    M为0~65535之间的整数

    TINYBLOB

    允许长度0~255字节

    BLOB

    允许长度0~65535字节

    MEDIUMBLOB

    允许长度0~167772150字节

    LONGBLOB

    允许长度0~4294967295字节

    TINYTEXT

    允许长度0~255字节

    TEXT

    允许长度0~65535字节

    MEDIUMTEXT

    允许长度0~167772150字节

    LONGTEXT

    允许长度0~4294967295字节

    VARBINARY(M)

    允许长度0~M个字节的变长字节字符串

    BINARY(M)

    允许长度0~M个字节的定长字节字符串

    创建表

    create table 表名(

      字段名 类型(长度) 约束,

      字段名 类型(长度) 约束

    );

    查看表

    查看数据库中的所有表: show tables;

    查看表结构: desc 表名;

    删除表

    drop table 表名;

    修改表

    alter table 表名 add 列名 类型(长度) 约束;    --修改表添加列.

    alter table 表名 modify 列名 类型(长度) 约束;       --修改表修改列的类型长度及约束.

    alter table 表名 change 旧列名 新列名 类型(长度) 约束;     --修改表修改列名.

    alter table 表名 drop 列名;      --修改表删除列

    rename table 表名 to 新表名;   --修改表名

    alter table 表名 character set 字符集;  --修改表的字符集

    插入记录

    语法:

    insert into 表(列名1,列名2,列名3..)values (值1,值2,值3..);  --向表中插入某些列

    insert into 表 values(值1,值2,值3..);   --向表中插入所有列

    insert into 表(列名1,列名2,列名3..) values select (列名1,列名2,列名3)from 表

    insert into 表 values select *from 表

    注意:

    1. 列名数与values后面的值的个数相等

    2. 列的顺序与插入的值得顺序一致

    3. 列名的类型与插入的值要一致.

    4. 插入值得时候不能超过最大长度.

    5. 值如果是字符串或者日期需要加引号’’ (一般是单引号)

    更新记录

    语法:

    update 表名 set 字段名=值,字段名=值;

    update 表名 set 字段名=值,字段名=值 where 条件;

    注意:

    1. 列名的类型与修改的值要一致.

    2. 修改值得时候不能超过最大长度.

      3.值如果是字符串或者日期需要加’’.

    删除记录

    delete from 表名 [where 条件];

    sql查询

    1.查询商品名称为十三香的商品所有信息:

        * select * from product where pname = '十三香';

    2.查询商品价格>60元的所有的商品信息:

        * select * from product where price > 60;

    where后的条件写法:

        * > ,<,=,>=,<=,<>

        * like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符.

            * select * from product where pname like '%新%';

        * in在某个范围中获得值(exists.

            * select * from product where pid in (2,5,8);

    比较运算符

    >  <  <=   >=   =  <>

    大于、小于、大于(小于)等于、不等于

    BETWEEN  ...AND...

    显示在某一区间的值(含头含尾)

    IN(set)

    显示在in列表中的值,例:in(100,200)

    LIKE ‘张_

    模糊查询,Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;

    IS NULL

    判断是否为空

    逻辑运算符

    and

    多个条件同时成立

    or

    多个条件任一成立

    not

    不成立,例:where not(salary>100);

    排序

    SQL语法关键字

    ORDER BY

      ASC(升序) DESC(降序)

    聚合函数(组函数)

    特点:只对单列进行操作

    常用的聚合函数: 

    sum():求某一列的和

    avg()求某一列的平均值

    max()求某一列的最大值

    min()求某一列的最小值

    count()求某一列的元素个数

    分组

    SQL语法关键字

    GROUP BY

    HAVING

    注意事项:

    1. select语句中的列(非聚合函数列),必须出现在group by子句中

    2. group by子句中的列,不一定要出现在select语句中

    3.聚合函数只能出现select语句中或者having语句中一定不能出现在where语句中。

    语法顺序和执行顺序(重要) ***

    MySQL查询语法顺序

    1. SELECT

    2. FROM

    3. LEFT JOIN

    4. ON

    5. WHERE

    6. GROUP BY

    7. HAVING

    8. ORDER BY

    9. LIMIT

    执行顺序

      1. FROM(将最近的两张表,进行笛卡尔积)---VT1

    2. ON(将VT1按照它的条件进行过滤---VT2

    3. LEFT JOIN(保留左表的记录)---VT3

    4. WHERE(过滤VT3中的记录--VT4…VTn

    5. GROUP BY(对VT4的记录进行分组---VT5

    6. HAVING(对VT5中的记录进行过滤---VT6

    7. SELECT(对VT6中的记录选取指定的列--VT7

    8. ORDER BY(对VT7的记录进行排序--游标

    9.LIMIT(对排序之后的值进行分页)

    WHERE条件执行顺序(影响性能)

    1. MYSQL:从左往右去执行WHERE条件的。

    2. Oracle从右往左去执行WHERE条件的

    结论WHERE条件的时候优先级高的部分要去编写过滤力度最大的条件语句

    表与表之间的关系

    一对一关系

    常见实例:一夫一妻

    一对多关系

    常见实例:会员和订单

    多对多关系(需要中间表实现)

      常见实例:商品和订单

    外键

    如何操作外键

    主表添加外键的格式:

    alter table 表名 add [constraint][约束名称] foreign key (主表外键字段) references 从表(从表主键) 

    主表删除外键的格式:

    alter table 表名 drop foreign key 外键约束名称

    使用外键目的:

    保证数据完整性(数据保存在多张表中的时候)

    在互联网项目中一般情况下不建议建立外键关系

    一对多关系

    一个分类对应多个商品

     总结:有外键的就是多的一方

     

    注意事项:

    一对多关系和一对一关系的创建很类似,唯一区别就是外键不唯一。

    一对多关系创建:

    添加外键列

    添加外键约束

    多对多关系

    同一个商品对应多个订单,一个订单对应多个商品

     注意事项:

    需要中间表去完成多对多关系的创建

    多对多关系其实就是两个一对多关系的组合

    多对多关系创建:

    创建中间表,并在其中创建多对多关系中两张表的外键列

    在中间表中添加外键约束

    在中间表中添加联合主键约束

     

     

  • 相关阅读:
    自然语言处理(三)——PTB数据的batching方法
    自然语言处理(二)——PTB数据集的预处理
    自然语言处理(一)——语言模型评价方法
    TensorFlow数据集(二)——数据集的高层操作
    TensorFlow数据集(一)——数据集的基本使用方法
    TensorFlow多线程输入数据处理框架(四)——输入数据处理框架
    Node的简介
    seajs的原理以及基本使用
    git常用指令
    一个小白的四次前端面试经历
  • 原文地址:https://www.cnblogs.com/Myoyc/p/12097900.html
Copyright © 2020-2023  润新知