美文网首页
msyql 语法

msyql 语法

作者: 拾柒丶_8257 | 来源:发表于2019-11-25 01:09 被阅读0次
    创建数据库
    create database  数据库名  charset=utf8;
    
    查看创建数据库的语句
    show crate database ...
    
    使用数据库
    use 数据库的名
    
    删除数据库
    drop database 数据库名;
    
    约束
    主键 primary key:物理上存储的顺序
    非空 not null:此字段不允许填写空值
    唯一 unique:此字段的值不允许重复
    默认 default:当粗填写此值时会使用的默认值
    外键 foreign key:对关系字段进行约束,当为关系字段填写值时,会关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并跑出异常
    
    查看表结构
    desc tablename;
    
    修改表-添加字段
    alter table add 列名 类型;
    
    修改字段
    alter table modify 列名 类型及约束;
    
    重命名字段
    alter table change 原名 新名 类型及约束;
    
    删除字段
    alter table drop 列名;
    
    添加数据
     insert into tablename(...) values(...);
    更新数据
    update tablename set   字段名=vialue  where  条件;
    删除数据
    delete from 表名  where 条件;
    使用as给字段起别名
    select 字段 as  名字 from tablename;
    
    去重
    select distinct 字段  from tablename;
    
    

    条件查询

      比较运算符
      - >
      select * from students where age >18;
      - <
    select * from students where age <18;
      - >=
    select * from students where age >=18;
      - <=
    select * from students where age <=18;
      - =
    select * from students where age = 18;
      - != 或 <>
    select * from students where age !=18;
      逻辑运算符
      - and
    select * from students where age >18 and age<28;
      - or
    select * from students where age >18 or age<28;
      - not
    select * from students where not (age >18 or age<28);
    
    模糊查询
      like 
      %  替换1个或多个
      _  替换1个
      - 以小开头
      select name  from students where name like  "小%";
      - 包含小
      select name  from students where name like  "%小%";
      - rlike 正则
      - 以周开头
      select name from students where name rlike "^周.*";
      
    
      范围查询
      in  表示在一个非连续的范围内
      select name from students where age in (12,15);
      not in  不非连续的范围之内
      select name from students where age not in (12,15);
      
      between  ... and ...  表示在一个连续的范围内
      select * from students where age between 18 and 35;
      not between... and ... 表示不在一个连续的范围内
      select * from students where age  not between 18 and 35;
      
    
    空判断
      判空 is null
      select * from students where age is null;
      判非空 is not null
      select * from students where age is not null;
    
      排序
      order by  字段
      asc   升序
      desc  降序
      select * from students order by age asc/desc;
    
      聚合函数
      count  统计
      select count(*) from  students;
      最大值
      max
      最小值
      min
      求和
      sum
      平均值
      avg
      四舍五入
      round(12.23,1)  保留1位小数
      
    
      分组
      group by
      select gender from students group by gender;
      按照性别分组并统计人数
      select gender,count(*) from students group by             
      gender;
      按照性别分组并显示姓名
      select gender,group_concat(name) from students 
      group by gender;
    
      分页
      limit start,count
      select * from students limit 2;
      每页显示2个,第2个页面
      select * from students limit 2,2;
    
      连接查询
      内连接
      inner join ... on
      select ... from 表A inner join 表B;
      select * from students inner join classes on students.cls_id=classes.id;
      select students.name ,classes.id inner join classes on  students.cls_id=classes.id;
      select s.*,c.name  from students as s inner join classes as c on s.cls_id=c.id;
      左连接,以左表为准,左表显示所有数据,右表没有数据显示null
      left join
      以c.name排序然后再按s.id排序
      select s.*,c.name from students left join classes as c on s.cls_id=c.id order by c.name,s.id;
      右连接
      right join  ...
    
    子查询
      标量子查询
      select * from students where age>(select avg(age) from students);
       列级子查询
      select name from classes where id in (select cls_id from studets);
       行级子查询
      select * from students where (height,age) = (select max(height),max(age) from students);
    
    表关系  ER图
       1对1
        两张表任何一张表都可以建关联字段
       1对多
        在多的表中建关联字段
       多对多
        新建一张表建关联字段
    三范式
      第一范式
        原子性,表的字段不可再拆分成更小的字段
      第二范式
        在满足第一范式的基础上,非主键必须完全依赖主键,而不是依赖主键的一部分。
      第三范式
      满足第二范式并且每个字段都不间接依赖于主键列
      
    
      视图
      视图是什么
        视图就是一条select语句执行后返回的结果集
        视图是对若干张基本表的引用,一张虚表,查询语句    
      执行的结果,不存储具体的数据
      定义视图
          create view 视图名称 as select语句;
      查看视图
           查看表会将所有的视图也列出来
         show tables;
       视图的用途就是查询
          select * from  v_stu_score;
      删除视图
          drop view 视图名称
          drop view v_stu_score;
      视图的作用
          1.提高了重用性,就像一个函数
           2.对数据库重构,却不影响程序的运行
          3.提高了安全性能,可以对不同的用户
          4.让数据更加清晰
    
    事务
      1 为什么要有事务 
          所谓事务,它是一个操作序列,这些操作要么都执行要么都不执行,它是一个不可分割的工作单位
       事务的四大特性(简称 ACID)
           原子性 Atomicity
           一致性 Consistenvy
           隔离性 Lsolation
           持久性 Durablity
       
    
    索引
      索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分 ),它们包含着对数据表里所有记录的引用指针
      索引目的
          索引的目的在于提高查询效率,可以类比字典
      索引的抵用
          查看索引
              show index from 表名;
           创建索引
              如果指定的字段是字符串,需要指定长度,建议与定义字段时的长度一致
              字段类型如果不是字符串,可以不填写长度部分
              create index 索引名称 on 表名(字段名称(长度))
          删除索引
                drop index 索引名称 on  表名;
           
    

    相关文章

      网友评论

          本文标题:msyql 语法

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