zoukankan      html  css  js  c++  java
  • sql


    1、表记录的管理
     1、删除表记录
      1、delete from 表名 where 条件;
       ##不加where条件全部删除
     2、修改表记录
      1、update 表名 set 字段名=值,... where 条件;
       ##不加where条件全部修改
    2、运算符
     1、数值比较&字符比较
      1、数值比较运算符:> >= < <= != =
      2、字符比较:= !=
     2、逻辑比较
      and 、or
     3、范围内比较(between and、in、not in)
      字段名 between 值1 and 值2
      字段名 in(值1,值2,...)
      字段名 not in(值1,值2,...)
     4、空、非空(is null、is not null)
      1、注意
       1、null :空值,必须用is 或 is not去匹配
       2、""   :空字符串,用 = 或 != 去匹配
     5、模糊比较(like)
      1、字段名 like 表达式
      2、表达式
       _ : 匹配单个字符
       % : 匹配0到多个字符
    3、SQL查询
     1、order by(排序)
      1、order by 字段名 ASC/DESC;
     2、limit(永远放在SQL语句的最后)
      1、limit n -->显示n条记录
      2、limit m,n -->从 m+1 条记录开始,显示 n 条
     3、聚合函数
      avg(字段名)、sum(字段名)、max(字段名)、
      min(字段名)
      count(字段名) ## 空值NULL不会被统计
     4、group by(给查询结果分组)
      1、注意
       1、group by之后字段名 必须为select 后的字段名
       2、如果select后的字段名没有在group by之后,则必须要对该字段进行聚合处理
     5、having(对查询结果进行进一步筛选)
      1、注意
       1、having与group by联合使用,用来过滤由group by返回的结果集
       2、弥补了where关键字不能与聚合函数联合使用的不足
       3、where只能操作表中实际存在的字段,having可以操作聚合函数生成的显示列
     6、distinct(不显示字段的重复值)
      1、注意
       1、distinct和from之间所有的字段必须全部相同才可以去重
       2、distinct不能对任何字段做聚合处理
     7、查询表记录时做数学运算
      + - * / %
     8、总结
      3、 select ... 聚合函数 from ...
      1、 where ...
      2、 group by ...
      4、 having ...
      5、 order by ...
      6、 limit ...
     4、约束
      1、默认约束(default)
      2、非空约束(not null)
     5、索引
      1、BTree
      2、优点:加快数据的检索速度
      3、缺点
       1、索引需要动态维护,降低数据的维护速度
       2、索引占用物理空间
      4、索引类型
       1、普通索引(MUL)
        1、创建
         1、创建表时创建: index(字段名),...
         2、在已有表创建:
          create index 索引名 on 表名;
        2、查看
         1、desc 表名;
         2、show index from 表名G;
        3、删除(只能一个一个删除)
         drop index 索引名 on 表名;
       2、唯一所以(UNI,字段值不允许重复,但可为NULL)
        1、创建
         1、创建表
          unique(字段名),...
         2、在已有表中创建
          create unique index 索引名 on 表名;
        2、删除
         drop index 索引名 on 表名;
    MySQL-Day03笔记
    1、索引
     1、普通索引(MUL)
     2、唯一索引(UNI)
     3、主键索引(PRI)
      1、使用规则
       1、一个表中只能有一个主键(primary)字段
       2、对应字段的值不允许重复,且不能为空
       3、主键字段的key标志PRI
       4、把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
      2、创建主键(primary key)
       1、创建表时创建
        1、字段名 数据类型 primary key,
        2、primary key(字段名)
       2、在已有表中创建
        alter table 表名 add primary key(字段名);
      3、删除
       alter table 表名 drop primary key;
      4、自增长属性(auto_increment)
       1、作用:通常和主键字段一起配合使用
       2、创建
        1、创建表时创建
        字段名 数据类型 primary key auto_increment
        2、在已有表中添加自增长属性(modify)
         alter table 表名 modify 字段名 数据类型 primary key auto_increment
      5、删除主键及自增长属性
       1、alter table 表名 modify 字段名 数据类型;
       2、alter table 表名 drop primay key;
     4、外键索引(foreign key)
      1、定义
       让当前表的字段值在另一个表的范围内选择
      2、语法格式
       foreign key(参考字段名)
       references 被参考表名(被参考字段名)
       on delete 级联动作
       on update 级联动作
      3、案例
       表1:缴费信息表(财务)
        学号  姓名     班级     缴费金额
         1   唐伯虎  AID1712     28000
         2   点秋香  AID1712     20000
       表2:学生信息表(班主任)
        学号  姓名    缴费金额
         1   唐伯虎    28000
      4、删除外键
       1、语法格式
        alter table 表名 drop foreign key 外键名;
       2、注意
        1、外键名的查看方式
         show create table 表名;
      5、在已有表中添加外键
       1、语法格式
        alter table 表名 add
        foreign key(参考字段名) references
        被参考表名(被参考字段名)
        on delete 级联动作
        on update 级联动作
       2、注意
        在已有表中添加外键时,会受到表中原有数据的限制
      6、级联动作
       1、cascade :数据级联更新
        1、当主表删除记录时,如果从表有相关联记录则级联删除
        2、当主表更新被参考字段的值时,从表级联更新参考字段的值
       2、restrict(默认)
        1、当主表删除记录时,如果从表中有相关联记录则不允许主表删除
        2、update同 1
       3、set null
        1、当主表删除记录时,从表中相关联记录外键字段值变为null
        2、update 同 1
       4、no action
        同 restrict,都是立即检查外键限制
      7、使用规则
       1、两张表被参考字段和参考字段的数据类型要一致
       2、被参考字段必须是KEY的一种,通常是primary key
    2、数据导入
     1、作用:将文件系统的内容导入到数据库中
     2、语法格式
      load data infile "文件名"
      into table 表名
      fields terminated by "分隔符"
      lines terminated by "分隔符"

      tarena:x:1000:1000:tarena,,,:/home/tarena:/bin/bash
      用户名:密码:UID:GID:描述:家目录:登录权限
     3、把/etc/passwd 导入到mysql数据库中
     4、操作步骤
      1、在数据库中创建对应的表
      2、查看数据库的默认搜索路径
       show variables like "secure_file_priv";
      3、将系统文件拷贝到数据库的默认搜索路径中
       sudo cp /etc/passwd /var/lib/mysql-files
       sudo -i
       cd /var/lib/mysql-files
       ls
       exit
    3、数据导出
     1、作用
      将数据库中表的记录保存到系统文件里
     2、语法格式
      select ... from 表名
      into outfile "文件名"
      fields terminated by "分隔符"
      lines terminated by "分隔符"
     3、练习
      1、把userinfo表中的用户名、密码和uid号三个字段导出到userinfo.txt中
      2、将库名:mysql库中user表中的User、Host两个字段的值导出到 user2.txt
     4、注意
      1、导出的内容由SQL查询语句决定
      2、执行导出命令时路径必须指定在对应的数据库目录下
      3、show variables like "secure_file_priv";
        show variables like "%secure%";
    4、表的复制
     1、表的复制
      1、语法格式
       create table 表名 select 查询命令;
      2、练习
       1、复制userinfo表的前10行,userinfo3 c
       2、复制userinfo表的用户名、密码、uid三个字 段的2-10条记录,userinfo4
     2、只复制表结构
      1、语法格式
       create table 表名 select ... where false;
     3、注意
      1、复制表的时候不会把原有表的 键 属性复制过来
    5、嵌套查询
     1、定义
      把内层的查询结果作为外层查询的条件
     2、语法格式
      select查询语句 where 条件(select查询语句);
     3、练习
      1、把uid的值小于这个字段的平均值的用户名和uid显示出来
      2、查找userinfo表中用户名在 mysql库下的user表Host值为localhost并且User值是root 的用户名
    6、多表查询
     1、两种方式
      1、select 字段名列表 from 表名列表; #笛卡尔积
       select * from tt1,tt2;
      2、select 字段名列表 from 表名列表 where 条件;
     2、练习
      1、显示省和市的信息
      2、显示省、市、县的信息
    7、连接查询
     1、内连接
      1、定义
       从表中删除与其他被连接表中没有匹配到的行
      2、语法格式
       select 字段名列表 from 表1
       inner join 表2 on 条件;
      3、练习
       1、显示省市信息,没有匹配的不显示
       2、显示省市县的信息 
     2、外连接
      1、左连接
       1、定义
        以左表为主显示查询结果
       2、语法
        slect 字段名列表 from 表1 left join 表2 on 条件;
       3、练习
        1、显示省市的信息,以左表为准
        2、显示省市的信息,以右表为准
        3、显示省市区的信息,要求市全部显示
      2、右连接

       

       
          
      

  • 相关阅读:
    SpringBoot整合RabbitMQ
    NIO
    eclipse配置maven
    IDEA常用快捷键
    IDEA如何快速查看类中的属性和方法?
    Java之IO流
    JS判断对象是否包含某个属性
    Jquery获取链接请求的参数
    JS中indexOf的用法
    JS驼峰与下划线互转
  • 原文地址:https://www.cnblogs.com/Han-org/p/8871429.html
Copyright © 2011-2022 走看看