首页 > 代码库 > 初识-------------MySql-----------------------------

初识-------------MySql-----------------------------

mysql(Relational Database Management System)

mysql是一种处理文件操作的一款软件,是关系型的数据库,关系型可以理解为“表格的概念”,一个关系型数据库由一个或多个表格组成

    --表头(header) 每一列的名称;
    --列 (row) 具有相同数据类型的数据的集合;
    --行 (col) 每一行用来描述个人或物的信息;
    --值 (values) 行的具体信息,每个值必须与该列的数据类型相同;
    --键 (key) 表中用来识别某个特定的人或物的方法,键的值在当前列中具有唯一性


      服务端软件

      socket服务端
      本地文件操作
      解析sql语句


    客户端软件
      socket客户端
      发送指令
      解析sql语句

  PS:
      DBMS数据库管理系统
      SQL语句

    其他类似软件:
      --关系型数据库:sqllite,db2,oracle,access,sql server,mysql
      --非关系型数据库:MongoDB,redis

 

Windows下的mysql安装,配置


安装
    www.mysql.com 官网下载
    1,安装windowns服务: mysqld --install
    2,初始化data文件:mysqld -- initialize -insecure

    初始化完后,会有一个默认的root用户,密码是空

    连接mysql服务器: net start mysql
    关闭mysql服务器:net stop mysql
    卸载mysql服务器:sc delete mysql


  使用 mysqladmin 方式:

    修改密码: mysqladmin -u root -p password 新密码
    set password for ‘用户名‘@‘IP地址‘ = Password(‘新密码‘)

 

使用mysql

  mysql数据类型:
    数字:unsigned加上是表示"无符号"
     
      整形
        int
          有符号:
            -2147483648 ~ 2147483647
          无符号:
            0 ~ 4294967295
        tinyint

          有符号:
            -128 ~127
          无符号:
            0 ~ 255


      bigint
          有符号:
            -9223372036854775808 ~ 9223372036854775807
          无符号:
            0 ~ 18446744073709551615

    浮点型
        float 精度丢失,到了一定长度精度丢失
        double 精度丢失,比float大一倍左右才会丢失精度
        decimal 精度最高(可指定长度跟小数点位数)
          decimal(65,30) 最大值
          对于精确数值计算时需要用此类型
          decaimal能够存储精确值的原因在于其内部按照字符串存储。

    字符串:
        char 查找速度快
            用于表示固定长度的字符串,最多255字符
        varchr 节省空间
            不固定长度的字符串,最多255字符


        文本:text ,tinytext,mediumtext,longtext
            上传大文件:文件存硬盘
            路径存数据库
        enum 枚举类型
            五个列中,只能选择一个
        set 集合类型
            create table myset(col("a","b","c","d"))
            inert into myset (col) values("a",("c")),("d","a");
            可以多个组合

        二进制(存图片,音乐,视频等):tinyblob, blob,mediumblob

    时间类型:
        DATE
          年月日
        TIME
          时分秒
        DATETIME
          年月日时分秒
        TIMESTAMP
          从1970-01-01 00:00:00开始

创建用户:
    --登录:mysql -u 用户名 -p; (-p是密码)
    mysql -D 所选的数据库名 -u 用户名 -p


    --选择数据库连接:use 数据库名;
    --必须是登录的root用户
    --连接mysql数据库
    create user "用户名"@"IP地址" identifed by "密码";

    root1只能在192.168.0.1这个IP上登录
    create user "root1"@"192.168.0.1" identifed by "123";

    %是代表所有的ip都能登录
    create user "root1"@"%" identifed by "123";


  删除用户:
    drop user "用户名"@"IP地址";

  修改用户:
    rename user "用户名"@"IP地址" to "新用户"@"IP地址";


  授权:
    给root1用户在所有的IP都能登录给root1用户 查看,插入, 更新的权限
    grant select,insert,update on 数据库名 to "root1"@"%";

    给root1用户在所有的IP都能登录,在db这个数据库的所有操作权限
    grant all privileges on db to "root1"@"%";



数据库操作


  查看:
    show databases;
   创建:
    create database 数据库名 default charset utf8;

    default charset utf8指定字符编码

  删除:
    drop database 数据库名;

表操作

    查看:
    show tables;
  创建:
    create table 表名(列 类型 auto_increment primary key,
             列 类型 )engine=innodb default charset utf8;


    create table 表名(id int auto_increment primary key,
            name char(10) not null,
            age tinyint unsigned not null)engine=innodb default charset utf8;
      解释:
        auto_increment 自增,
        primary key 约束(不能重复也不能为空)加速查找速度,
        两者是在一起用的,给一列数据用,
        engine=innodb 指定引擎 支持事物,原子性操作,不指定默认myisam
        not null 指定该列的值不能为空,必须要填
        null 可为空
        unsigned 修饰int类型,表示int是无符号


  清空表:
    delete from 表名; 删除表里的内容,表还存在,
    truncate table 表名; 删除表里的内容,表还存在

  删除表:
    drop table 表名; 删除整张表

创建后表的操作:

    --添加列:
     alter table 表名 add 新列名 新列数据类型;

     alter table 表名 add 新列名 新列数据类型 alter 插入位置;

   --修改列:

      修改列名
        alter table 表名 change 列名 新列名 新数据类型;

      修改列的数据类型
        alter table 表名 change 列名 列名 新数据类型;

    --删除列:
      alter table 表名 drop 列名;

    --重命名表:
      alter table 表名 rename 新表名;

表内文件操作

  增:
    插入部分数据
      insert into 表名(列名1,列名2....) values (值1,值2....)

    插入所有列的数据,表中有几列,就需要添加几个值
      insert into 表名 values (值1,值2,值3....);

  删:
    delete from 表名 where 删除条件;

  改:
    update 表名 set 列名=新值;
    update 表名 set 列名=新值 where 更新条件;


  查:
    select * from 表名; 查询表内所有信息;

    select 列名1,列名2 from 表名; 两列的信息;

    select * from 表名 where age>20; 从表中找出age>20的所有信息
     > = < >= <= != or and》等等

初识-------------MySql-----------------------------