mysql

安装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 中的数据类型介绍

  • 数值类型


    mysql_第1张图片
  • 日期和时间类型


    mysql_第2张图片
  • 字符串类型


    mysql_第3张图片

数据表操作

  • 查看所有数据表
    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)