zoukankan      html  css  js  c++  java
  • MySQL快速入门(一)

    1.什么是数据库

              数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。
             数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
             数据库分关系型数据库和非关系型数据库。

        1.1.关系型数据库

            关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库
            
             下面是示例MySQL数据库结构的大致图解
                                                                                            
        1.2.非关系型数据库
            NoSQL,泛指非关系型的数据库。NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

    2.目前流行的有哪些关系型数据库

        2.1:MySQL

             MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),它是一个小型的数据库,因为其速度、可靠性和适应性而备受关注。MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。由于MySQL是开放源代码免费的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL一开始被sun公司十亿美金收购,后来又被oracle以74亿美金收购,可谓是一波三折,MySQL生命力还是挺顽强的,所以MySQL5.5以上的版本都是由Oracle推出的,我们现在使用的都是5.X版本。

        2.2:oracle

            oracle是由甲骨文公司的一款大型关系型数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。但是由于是收费的,大部分中小企业普遍不使用它。

        2.3:DB2

             IBM公司的数据库产品,收费的。常应用在银行系统中. 在中国的互联网公司,要求去IOE(阿里提出的IBM小型机、Oracle数据库、EMC存储设备)

        2.4:SQLServer

             MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

        2.5:SyBase

             已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner

        2.6:SQLite

             嵌入式的小型数据库,应用在手机端。

    3.MySQL的安装图解

    3.1:在Windows上安装

    配置MysQL服务

                                                                                                   

    启动和关闭(必须以管理运行cmd命令窗口)

                                                                                                                                    

    l 登录

    格式1:cmd>  mysql –u用户名 –p密码

    例如:mysql -uroot –proot

                                                                                                       

    格式2:cmd>  mysql --user=用户名 --host=ip地址 --password=密码

    3.1.1: SQLyog 安装与使用

    l 安装:

    提供的SQLyog软件为免安装版,可直接使用

    l 使用:

                                                                                                       

    输入用户名、密码,点击连接按钮,进行访问MySQL数据库进行操作

                                                                                                           

    Query窗口中,输入SQL代码,选中要执行的SQL代码,按F8键运行,或按执行按钮运行。

     

    3.2 Linux上安装MySQL

    3.2.1 第一种本地安装,查看Linux上是否 存在MySQL

             rpm -qa|grep mysql

         如果有,卸载方法:

              因为Linux自带MySQL,但是版本较低对现在的需求可能会很吃力

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

              rm -rf /var/lib/mysql

              rm /etc/my.cnf

              查看是否还有mysql软件,有的话继续删除。软件卸载完毕后如果需要可以删除mysql的数据库:/var/lib/mysql

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

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

                                                                                                 

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

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

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

                                    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' 需要替换成实际的用户名和密码。

    3.2.2 第二种在线安装方式

           3.2.2.1 下载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.2.2.2  安装仓库列表

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

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

     4.   SQL语句

            4.1  什么是SQL语句

                            全称Structured Query Language,简称SQL,中文叫结构化查询语言。

                          关系数据库语言的国际标准。SQL92SQL99

                          不只是mysql还有其他数据库SQL92或者SQL99这些国际SQL标准基础之上它们还扩展了自己的一些SQL语句比如MySQL中的limit关键字

            4.2  SQL分类

                               数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等

                               数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等

                               数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户;关键字:grant等

                               数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

            4.3   SQL语句的使用

                   创建数据库:

                                  语法:

                                    * create database 数据库名;

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

                                                                                                         

                     查看数据库:

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

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

                      删除数据库:

                                  drop database 数据库名称;

     

             4.4  操作表

                      4.4.1   字段类型

                               常用的类型有

                                              数字型: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 表名(

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

                                                        字段名 类型(长度) 约束

                                                               );

                                         单表约束:

                                                   * 主键约束:primary key

                                                   * 唯一约束:unique

                                                   * 非空约束:not null

                                                   * 注意:主键约束 = 唯一约束 + 非空约束

                                           查看表:

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

                                                 查看表结构:desc 表名;

                                            删除表:

                                                     drop table 表名;

                                            修改表:

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

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

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

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

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

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

     

                     4.4.2    向表中插入数据:insert

                                                      语法:

                                                                        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.  值如果是字符串或者日期需要加引号’’ (一般是单引号)

     

     

                       4.4.3    更新记录:update

                                                          语法:

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

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

                                                       注意:

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

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

     

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

     

                         4.4.4   删除: delete

                                                           语法:

                                                               delete from 表名 [where 条件];

     

     

              4.5   查询表

                           4.5.1 查询语句

                                                       SELECT [DISTINCT]*[列名,列名] FROM   [WHERE 条件].

     

              4.6  条件查询   

    比较运算符

    >  <  <=   >=   =  <>

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

    BETWEEN  ...AND...

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

    IN(set)

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

    LIKE ‘张_

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

    IS NULL

    判断是否为空

    逻辑运算符

    and

    多个条件同时成立

    or

    多个条件任一成立

    not

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

     
     

               4.7   聚合函数   

                                           特点:只对单列进行操作

                                            常用的聚合函数:
                                                   sum():求某一列的和
                                                   avg()求某一列的平均值

                                            max()求某一列的最大值 

                                            min()求某一列的最小值

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

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

                             MySQL查询语法顺序

                                                    1. SELECT

                                                    2. FROM

                                                    3. LEFT JOIN

                                                    4. ON

                                                    5. WHERE

                                                    6. GROUP BY

                                                    7. HAVING

                                                    8. ORDER BY

                                                    9. LIMIT

                                          执行顺序

                                             示例SQL

                                          SELECT * FROM user LEFT JOIN order ON user.id = order.uid WHERE order.price > 1000 GROUP BY user.name HAVING count(1) > 5 ORDER BY user.name LIMIT 0,10

                              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条件的时候优先级高的部分要去编写过滤力度最大的条件语句

     

     
     
     
  • 相关阅读:
    opencv-识别手写数字
    opencv-图像遍历
    533. Lonely Pixel II
    531. Lonely Pixel I
    495. Teemo Attacking
    370. Range Addition
    487. Max Consecutive Ones II
    485. Max Consecutive Ones
    414. Third Maximum Number
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/luoyong4516/p/12099025.html
Copyright © 2011-2022 走看看