• MYSQL新手入门篇


     

    一、数据库的简介

    什么是数据库?

    数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库

    什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?

    他们是数据库软件,主要功能为两部分:1、讲数据保存到内存或者文件。2、接受特定的命令对数据进行操作

    什么是SQL?

    上述问题说过,数据库要接受特定的命令,这个命令就是用SQL编写,他是结构化查询语言(Structured Query Language)的缩写,一种专门与数据库交互的语言。

    二、数据库的安装

    windows版本

    1、下载

    MySQL Community Server 5.7.16
     
    http://dev.mysql.com/downloads/mysql/

    2、解压

    如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64

    3、初始化

    MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:

    cd c:mysql-5.7.16-winx64in
     
    mysqld --initialize-insecure

    4、启动MySQL服务

    执行命令从而启动MySQL服务

    # 进入可执行文件目录
    cd c:mysql-5.7.16-winx64in
     
    # 启动MySQL服务
    mysqld

    5、启动MySQL客户端并连接MySQL服务

    由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码

    复制代码
    # 进入可执行文件目录
    cd c:mysql-5.7.16-winx64in
     
    # 连接MySQL服务器
    mysql -u root -p
     
    # 提示请输入密码,直接回车
    复制代码

    输入回车,见下图表示安装成功:

    到此为止,MySQL服务端已经安装成功并且客户端已经可以连接上,以后再操作MySQL时,只需要重复上述4、5步骤即可。但是,在4、5步骤中重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。

     添加环境变量

    将MySQL可执行文件添加到环境变量中,从而执行执行命令即可

    复制代码
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
     
    如:
    C:Program Files (x86)ParallelsParallels ToolsApplications;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:Python27;C:Python35;C:mysql-5.7.16-winx64in
    复制代码

    如此一来,以后再启动服务并连接时,仅需:

    # 启动MySQL服务,在终端输入
    mysqld
     
    # 连接MySQL服务,在终端输入:
    mysql -u root -p

    . 将MySQL服务制作成windows服务

    上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

    # 制作MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --install
     
    # 移除MySQL的Windows服务,在终端执行此命令:
    "c:mysql-5.7.16-winx64inmysqld" --remove

    注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:

    # 启动MySQL服务
    net start mysql
     
    # 关闭MySQL服务
    net stop mysql

    linux版本

    安装

    yum install mysql-server  

    启动

    mysql.server start

    链接

    复制代码
    连接:
        mysql -h host -u user -p
     
        常见错误:
            ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.
    退出:
        QUIT 或者 Control+D
    复制代码

    三、数据库的操作

    1、显示数据库

    SHOW DATABASES;

    默认数据库:
      mysql - 用户权限相关数据
      test - 用于用户测试数据
      information_schema - MySQL本身架构相关数据

    2、创建数据库

    # utf-8
    CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
     
    # gbk
    CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

    3、使用数据库

    USE db_name;

    4、用户管理

    复制代码
    创建用户
        create user '用户名'@'IP地址' identified by '密码';
    删除用户
        drop user '用户名'@'IP地址';
    修改用户
        rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
    修改密码
        set password for '用户名'@'IP地址' = Password('新密码')
      
    PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
    复制代码

    5、授权管理

    show grants for '用户'@'IP地址'                  -- 查看权限
    grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权
    revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限
    对于权限
    对于数据库
    对于ip
    实例

    注:flush privileges,将数据读取到内存中,从而实现不重启即可生效。

    四、数据表的处理

    1、创建表

    View Code
    创建表时的参数说明

    2、删除表

    drop table 表名

    3、清空表

    delete from 表名
    truncate table 表名

    4、修改表

    复制代码
    添加列:alter table 表名 add 列名 类型
    删除列:alter table 表名 drop column 列名
    修改列:
            alter table 表名 modify column 列名 类型;  -- 类型
            alter table 表名 change 原列名 新列名 类型; -- 列名,类型
      
    添加主键:
            alter table 表名 add primary key(列名);
    删除主键:
            alter table 表名 drop primary key;
            alter table 表名  modify  列名 int, drop primary key;
      
    添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    删除外键:alter table 表名 drop foreign key 外键名称
      
    修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
    复制代码

    5、基本数据类型

    MySQL的数据类型大致分为:数值、时间和字符串

    View Code

    更多参考:

    • http://www.runoob.com/mysql/mysql-data-types.html
    • http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html

    五、表内容操作

    1、增

    insert into 表 (列名,列名...) values (值,值,值...)
    insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
    insert into 表 (列名,列名...) select (列名,列名...) from 表

    2、删

    delete from 表
    delete from 表 where id=1 and name='alex'

    3、改

    update 表 set name = 'alex' where id>1

    4、查

    select * from 表
    select * from 表 where id > 1
    select nid,name,gender as gg from 表 where id > 1

    5、其他

    复制代码
    a、条件
        select * from 表 where id > 1 and name != 'alex' and num = 12;
     
        select * from 表 where id between 5 and 16;
     
        select * from 表 where id in (11,22,33)
        select * from 表 where id not in (11,22,33)
        select * from 表 where id in (select nid from 表)
     
    b、通配符
        select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
        select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
     
    c、限制
        select * from 表 limit 5;            - 前5行
        select * from 表 limit 4,5;          - 从第4行开始的5行
        select * from 表 limit 5 offset 4    - 从第4行开始的5行
     
    d、排序
        select * from 表 order by 列 asc              - 根据 “列” 从小到大排列
        select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
        select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
     
    e、分组
        select num from 表 group by num
        select num,nid from 表 group by num,nid
        select num,nid from 表  where nid > 10 group by num,nid order nid desc
        select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
     
        select num from 表 group by num having max(id) > 10
     
        特别的:group by 必须在where之后,order by之前
     
    f、连表
        无对应关系则不显示
        select A.num, A.name, B.name
        from A,B
        Where A.nid = B.nid
     
        无对应关系则不显示
        select A.num, A.name, B.name
        from A inner join B
        on A.nid = B.nid
     
        A表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A left join B
        on A.nid = B.nid
     
        B表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A right join B
        on A.nid = B.nid
     
    g、组合
        组合,自动处理重合
        select nickname
        from A
        union
        select name
        from B
     
        组合,不处理重合
        select nickname
        from A
        union all
        select name
        from B
    复制代码

     转载:http://www.cnblogs.com/kading/

     
  • 相关阅读:
    layui表格数据统计
    浅谈权限控制
    搜索栏实时更新查找内容
    虚拟域名
    关于阿里云服务器安装了Apache开放80端口访问不了网页
    验证码思路
    计算标准差 Exercise07_11
    倒置数组 Exercise07_12
    找出最小元素的下标 Exercise07_10
    找出最小元素 Exercise07_09
  • 原文地址:https://www.cnblogs.com/HUANGRONG888/p/6095700.html
Copyright © 2020-2023  润新知