MySQL数据库--基础篇

作者: 全满 | 来源:发表于2017-12-09 21:33 被阅读56次

    打开数据库

    sudo mysql -u root -proot

    查看

    show database

    新建

    show create database 数据库名 default character set utf8

    删除

    drop database 数据库名

    修改

    alter database 数据库名 default character set 编码方式
    表管理

    查看默认的字符集

    show create database 数据库名

    选择数据库

    use 数据名

    新建表

        create table student(
        -> sid int,
        -> sname varchar(20),
        -> sage int
        -> );
    

    查看所有表

    show tables;

    查看表结构

    desc student;

    删除表

    drop table student;

    修改表

    • 添加字段(column可以不写)
      alter table student add column sgender varchar(2);
    • 删除字段(column可以不写)
      alter table student drop column sgender;
    • 修改字段类型(column可以不写)
      alter table student modify column remark varchar(100);
    • 修改字段名称(column可以不写)
      alter table student change column sgender(旧字段名) gender(新字段名) varchar(2);
    • 修改表名称
      alter table student rename to teacher;

    数据库表中增加信息

    • 插入所有字段(与数据库表中的信息一一对应)
      insert into 数据表名 values(1,'张三','男',20);
    • 插入部分字段
      insert into 数据表名(id,name)values (2,李四);

    修改数据

    • 修改所有的数据(建议少用)
      update 表名 set 字段名='修改后的值';
    • 修改部分的数据(指定修改ID为1的指定字段)
      update 表名 set 字段名='修改后的值' where id = 1;
    • 修改多个字段(set只能用一次,字段名之间用‘,’隔开)
      update 表名 set 字段名='修改后的值',age=30 where id = 1

    删除数据

    • 删除所有数据表中的数据
      delete from 数据表名
    • 删除指定数据(指定删除ID为2的数据)
      delete from 表名 where ID = 2;
    • 其他删除
      truncate table 表名
    • 删除的区别

    delete from与truncate table的区别

    1. delete from可以带条件删除,truncate table不可以带条件删除
    2. delete from只能删除表的数据不能删除表的约束,truncate table既可以删除表的数据也可以删除表的约束
    3. 使用delete from删除的数据可以回滚(事物),既临时的删除而使用truncate table的删除就是永久的删除

    查询数据

    • 查询所有列
      select * from 数据表名 ;
    • 查询指定列
      select id, name from 数据表名;(以ID和name查询)
      • 查询时指定别名[as](显示别名)
        select id as '编号', name as '姓名' from 数据表名;
    • 查询时添加常量列
      • 需求 在查询student表时添加一个班级列,内容为‘Java就业班’
        select id, name,...,'java就业班' as '班级' from 数据表名;
    • 查询时合并列
      • 查询所有科目的总成绩(科目名+科目名+...)
        select id, name, (java+jsp+...) as '总成绩' from 数据表名;
        • 注意事项 合并列 只能合并数值类型字段
    • 查询时去除重复记录
      • 需求 查询学生性别(结果 男 女)
        select distinct gender from student;
      • 另一种语法
        select distinct (gender) from student;
    • 条件查询(where)
      • 第一类 逻辑条件 and(与) or(或)
        • 查询ID为2 姓名为李四的同学
          select * from student where id=2 and name = '李四';
        • 查询ID为2 或 姓名为张三的同学
          select * from student where id=2 or name = '张三';
      • 第二类 比较条件 > < >= <= = <>(不等于) between and
        • 需求 查询Java成绩大于70的所有人
          select * from student where java>70;
      • 第三类 判空条件(null 空字符串):is null / is no null / =='' / <>''
        • 需求 查询地址为空的学生

          null vs 空字符串
          null 没有值
          空字符串 有值

        • 判断null
          select * from student where address is null;

        • 判断空值
          select * from student where address = '';
          select * from student where address is null or address = '';

      • 第四类 模糊条件 like(通常使用以下替换标记 % 表示可以替换任意一个字符 _ 表示一个字符)
        • 需求 姓张的学生
          select * from student where name like '张%';
        • 需求 姓张的学生且姓名只有两个字的人
          select * from student where name like '张_';
    • 聚合查询
      • 常用的聚合函数
        sum(字段)总数 avg()平均数 max()最大值 min()最小值 count(*/id)统计记录的数量 例如学生总数
        count统计的数据不包含null的数据 故:使用count统计数据的时候,要使用不包含null的数据
    • 分页查询(limit 起始行(从0开始),查询多少行)
      select * from student limit 0,2;查询两行
      • 没有记录就不显示
      • 分页查询当前页的sql:
        select * from student limit (当前页-1)*每页显示多少,每页显示多少;
    • 查询排序(order by)默认正序
      • 语法:order by 字段 asc/desc
      • asc:顺序 / 正序。 数值:递增,字母:自然顺序(a-z)
      • desc:倒序 / 反序。 数值:递减,字母:自然反序(z-a)
    • 分组查询(group by 字段)

    例如:将学生性别分组,并统计每组的人数
    select gender,count(*) from student group by gender;

    • 分组查询后筛选(having)

    需求:查询性别人数大于2的值
    select gender,count(*) from student group by gender having count(*)>2

    相关文章

      网友评论

        本文标题:MySQL数据库--基础篇

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