zoukankan      html  css  js  c++  java
  • 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 外键约束名称

    使用外键目的:

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

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

    一对多关系

    一个分类对应多个商品

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

     

    注意事项:

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

    一对多关系创建:

    添加外键列

    添加外键约束

    多对多关系

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

     注意事项:

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

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

    多对多关系创建:

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

    在中间表中添加外键约束

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

     

     

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/Myoyc/p/12097900.html
Copyright © 2011-2022 走看看