• MySQL学习笔记(一)


    一、概述

    1、数据库、数据库系统、数据库管理系统之间的关系?

      数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

      数据库管理系统:用来管理数据及数据库的系统

      数据库系统:数据库、数据库管理系统、硬件、操作人员的合在一起的总称。

      数据库系统包含数据库管理系统、数据库及数据库开发工具所开发的软件(数据库应用系统)。

     

    二、mysql的下载安装

      MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

      与其他的大型数据库LAMP例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本

    下面就Mysql的linux与Windows版本的安装分别介绍:

    windows版本

    1、下载

    网址  http://dev.mysql.com/downloads/mysql/     下载完成后一路点点点就ok

    2、添加环境变量

    将刚刚安装的mysql的bin目录路径加入环境变量
    
    
    环境变量:计算机->右键(属性)->高级系统设置->环境变量->
    
    修改系统变量中的path,把mysql的bin目录路径加上即可(注意分号)

    3、将mysql制作成windows服务

    命令行输入
    mysqld  --install
    
    
    移除服务:
    mysqld   --remove
    
    注册成服务后,以后启动和关闭就可使用以下命令
    
    
    启动:    net  start  mysql
    
    关闭:    net stop mysql

    4、mysql初始化

    命令行输入如下命令
    
    mysqld --initialize-insecure  

    5、启动mysql服务

    命令行输入:
    mysqld

    6、连接mysql

    #命令行输入:
    
    mysql -u  root    -p
    
    #提示输入密码,由于刚初始化并未设置密码,直接敲回车

    linux版本

    这个就比较省事了,一条命令搞定

    下载安装:

    yum install mysql-server 

    启动服务

    mysql.server start

    连接mysql

    mysql -u root -p

    三、数据库操作

    1、显示数据库

    SHOW DATABASES;

    默认数据库

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

    2、创建数据库

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

    3、使用数据库

    USE 数据库名 #如use mytest

    4、查看表

    show tables

    由于未创建表,现在显示空表

    5、用户管理与授权

    创建用户

    命令:
    
    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    
    说明:
    username:你将创建的用户名
    host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
    password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
    
    ex:
        CREATE USER 'xiaohua'@'localhost' IDENTIFIED BY '123456';
    
        CREATE USER 'taiyang'@'192.168.1.110_' IDENDIFIED BY '123456';
    
        CREATE USER 'xiaozhu'@'%' IDENTIFIED BY '123456';
        

    授权

    命令:
    
    GRANT privileges ON databasename.tablename TO 'username'@'host'
    
    说明:
    
    privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
    databasename:数据库名
    tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
    
    
    ex:
    
    GRANT SELECT, INSERT ON mytest.user TO 'xiaohua'@'%';
    
    GRANT ALL ON *.* TO 'xiaohua'@'%';

    设置用户密码

    命令
    
    SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
    
    
    如果要修改当前用户
    
    SET PASSWORD = PASSWORD("newpassword");
    
    
    ex:
    
    SET PASSWORD FOR 'xiaohua'@'%' = PASSWORD("123456");

    撤销用户权限

    命令:
    
    REVOKE privilege ON databasename.tablename FROM 'username'@'host';
    
    说明:
    
    privilege, databasename, tablename:同授权部分
    
    ex:
        
    REVOKE SELECT ON *.* FROM 'xiaohua'@'%';

    删除用户

    命令:
    
    DROP USER 'username'@'host';

    数据表操作

    创建表

    命令:
    
    CREATE TABLE table_name (column_name column_type);
    
    
    如:
    
    create table student(
         id int not null auto_increment primary key,
         name varchar(20) not null,
         age int not null        
    )engine=innodb charset=utf8;
    
    
    说明:
    
    1、如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
    2、AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
    3、PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
    4、ENGINE 设置存储引擎,CHARSET 设置编码。

    删除表

    命令:
    
    drop table 表名

    清空表:

    delete from 表名
    truncate table 表名
    drop  table 表名
    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。   DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
    TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 
    TRUNCATE,DELETE,DROP放在一起比较:
    TRUNCATE TABLE:删除内容、释放空间但不删除定义。
    DELETE TABLE:删除内容不删除定义,不释放空间。
    DROP TABLE:删除内容和定义,释放空间。
    truncate、delete、drop区别

    修改表

    添加列: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;

    表内容操作

    1、增

    命令:
    
    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( value1, value2,...valueN );
    
    
    如:
    
    insert into student(name,age) values('豆豆',8);

    2、删

    命令:
    
    DELETE FROM table_name [WHERE Clause]
    
    
    说明:WHERE Clause后面跟的是条件
    
    
    如:
    
    delete from student  where age<18;
    
    #从student表中删除年龄小于18的数据

    3、改

    命令:
    
    UPDATE table_name SET field1=new-value1, field2=new-value2
    [WHERE Clause]
    
    
    说明:
    
    1、你可以同时更新一个或多个字段。
    2、你可以在 WHERE 子句中指定任何条件。
    3、你可以在一个单独表中同时更新数据。
    
    如:
    
    update student set name='xiaohua',age=18 where age<18;

    4、 查

    命令:
    
    SELECT column_name,column_name
    FROM table_name
    [WHERE Clause]
    [LIMIT N][ OFFSET M]
    
    说明:
    
    1、查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用2、WHERE语句来设定查询条件。
    3、SELECT 命令可以读取一条或者多条记录。
    4、你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
    5、你可以使用 WHERE 语句来包含任何条件。
    6、你可以使用 LIMIT 属性来设定返回的记录数。
    7、你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    
    
    如:
    查看student表中age等于18的学生的姓名
    select name from student where age=18;

    5、其他

    a、条件
        select * fromwhere id > 1 and name != 'xiaohua' and age = 18;
     
        select * fromwhere id between 5 and 16;
     
        select * fromwhere id in (11,22,33)
        select * fromwhere id not in (11,22,33)
        select * fromwhere id in (select nid from 表)
     
    b、通配符
        select * fromwhere name like 'xiao%'  - xiao开头的所有(多个字符串)
        select * fromwhere name like 'xiaohu_'  - xiaohu开头的所有(一个字符)
     
    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 fromwhere 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

    基本数据类型

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

    数值类型

    时间及日期类型

    字符串类型

  • 相关阅读:
    TCP定时器 之 重传/延迟ACK/保活 定时器初始化
    指针03-指针和字符串
    指针02
    指针01
    switch语句分析
    结构体分析
    参数、返回值、局部变量、数组分析
    多维数组分析
    循环语句分析
    if语句分析
  • 原文地址:https://www.cnblogs.com/qflyue/p/8385822.html
Copyright © 2020-2023  润新知