mysql

作者: czlyj | 来源:发表于2018-01-18 21:05 被阅读9次

    安装mysql教程,网上有很多,这里就过多的介绍了。

    • 连接数据库
      打开命令行,输入以下命令
      mysql -u root -p123456
      以上是mysql在本地的连接方式,如果mysql安装在服务器呢,我们需要怎么连接呢。其实只需要在以上命令上面加上-h 主机名和-P
      端口号即可。
      注:端口号的P是大写的。
      mysql -h 192.168.0.53 -P 3306 -u root -p123456

    数据库操作

    • 创建数据库
      create database develop default charset utf8;
      这里创建一个名为develop的数据库 ,并指定默认编码为utf8。
    • 查看数据库
      show databases;
    • 删除数据库
      drop database develop;
    • 进入数据库
      use develop;
      查看数据库详细信息 可以使用 status命令

    数据类型

    sql中的数据类型分为三大类,详细的分类请查看MySQL 中的数据类型介绍

    • 数值类型


    • 日期和时间类型


    • 字符串类型


    数据表操作

    • 查看所有数据表
      show tables;
    • 创建数据表
    create table t1(
       #id从1自动省长,并设置为主键
        id int auto_increment primary key,
        #设置name不可以为null,如果插入时没有name则会报错,默认是可以为null
        name varchar(50) not null,
        #设置username不可以为null,并且其值在数据表里是唯一的,不可重复
        username varchar(255) uniqu not null,
        #设置age是无符号的正整数,并且默认值为0
        age int unsigned default(0) 
    )
    
    • 显示表信息
      desc t1;
      查看表结构
      show create table t1;
      显示创建表的sql语句
    • 添加列
      alter table t1 add phone varchar(50);
    • 修改列
      alter table t1 change phone age int;
      把原先的phone列改名为age,并修改数据类型为int
    • 删除列
      alter table t1 drop phone;
    • 删除表
      drop table t1;

    数据行操作

    • 插入
      往数据表里插入数据
      insert into t1 (column1,column2...) values (value1,vaule2...);

    • 查询
      查询是数据库里使用的最频繁的操作,据统计数据库的读写比例为10:1,由此可见查询是有多么重要。
      为了满足各种复杂的需求,我们也需要写出各种复杂的sql,所以难度系数最高的也是查询。

      • 简单的查询
        select * from t1;
        从数据表里获取所有记录,这里的*是一个通配符,即返回结果集里所有列
      • 带条件查询where
        select id,name from t1 where id = 1;
        从t1表中查询符合id=1行的id,name
      • in操作符
        in查询某值是否在某条件里,相反的也有not in
        select * from t1 where id in (select cid from t2 where name = 'test')
        select 语句返回的结果集可以作为条件继续查询
      • 多条件查询 and,or
        and 逻辑与 即两边的条件都符合才成立
        or 逻辑或 即两边的条件只要满足一个就成立
        select * from meizi where name='lucy' or (height>160 and weight <= 120)
        这里使用了一个算术优先级,把括号内的内容做为一个整体条件
      • 范围匹配
        select * from meizi where age between 18 and 30 ;
        查找age在18~30之间的所有行,这里只能采用and操作符,不能使用or
      • null
        select * from meizi address is null;
        查找符合地址为null的数据
        select * from meizi address is not null;
        查找地址不为null的mz
      • 通配符
        • "%" 匹配任意数目字符(包括零个字符)
        • "_" 匹配任何单个字符
          在sql中匹配模式中不能使用!=或者=来进行匹配,而是使用like或not like比较操作符。
          使用示例:
          select * from t1 name like 'l%'
          匹配所有name以l开头的
          select * from t1 name like '_ucy'
          匹配所有name第一个字符为任意字符,并以ucy结尾
      • 排序
        排序使用order by对指定的列进行排序,使用 desc降序 asc升序 排序规则进行排序
        select * from meizi order by age desc;
        对age进行降序排序,最大的数值在最前面。如果不指定desc,则默认按asc升序进行排序
        对多个列排序
        select * from meizi order by age desc,name,height;
        如果第一个列值相同,才会对二个列按指定的规则进行排序,第三列同上
        order by 可以对任何数据类型进行排序,varchar,text等类型 则按ascii码表的值进行排序
      • 聚合函数
        mysql常用的聚合函数如下:
        • count(exrp) 返回指定列中非null值的个数
        • avg(exrp) 返回指定列的平均值
        • max(exrp) 返回指定列的最大值
        • min(exrp) 返回指定列的最小值
        • sum(exrp) 返回指定列的所有值的和
      • 分组查询
        使用group by对指定列不同的值进行分组,group by一般和聚合函数一起使用才有意义
        使用group by有两个要素
        • 出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的.
        • 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having
          having和where都是对条件进行筛选,SQL语言中设定集合函数的查询条件时使用having而不是where。通常情况下,having被放置在SQL命令的结尾处。

      使用示例:
      select age from t1 group by age;
      select age,height from meizi where age >18 group by height having height > 165;

      • 连接查询
        在sql中 分为三个连接
        • inner join 内连接(一般简写为join),获取两个表中字段匹配关系的记录
        • left join 左连接,获取左表所有记录,即使右表没有对应匹配的记录
        • right join 右连接,与left join相反

      这三种连接的使用方式都是相同的,只是连接后的取值方式略有差异
      使用示例:
      select * from t1 join t2 on t1.id = t2.pid
      使用连接操符后如果没有 on 的条件,会出现笛卡尔积

    • 删除
      delete from t1;
      这样是删除整个表里的数据,请谨慎使用。
      如果只是删除指定的的数据,使用where关键字后跟上根据查询条件删除。如:
      delete from t1 where name = 'test';
      删除name等于test的所有行

    • 更新
      更新数据表,使用update关键字,后面也需要跟上查询条件进行更新,否则是更新整个表
      update t1 set name='czlyj' where id = 1;
      更新所有符合id=1行

    注:执行更新和删除操作时,尤其要谨慎,一但操作失误,数据也无法恢复,所以尽量使用唯一的条件去匹配,避免照成不必要的损失。

    相关文章

      网友评论

          本文标题:mysql

          本文链接:https://www.haomeiwen.com/subject/clhgoxtx.html