Mysql (高级查询)

@作者 Stone的博客 www.1314sl.com

    ----- 字段属性:
    主键:primary key 主键 唯一约束;不能重复
        
        在创建表的时候,在后面加 primary key 关键字
        
    -- 追加主键
        alter table 表名 modify 字段名 primary key
        alter table 表名 add primary key(字段名);

    --更新&删除主键
        
        alter table 表名 drop primary key;


    --主键分类
    id int primary key comment '逻辑主键'
    
    
------ 自动增长
    不给值或者给NULL的时候,会自动被系统+1操作
    
    --自增长通常跟主键搭配
    
    auto_increment
    1.任何一个字段要做自增长前提是本身是一个索引(Key 拦有值)
    2.必须是int型
    3.一张表只能有一个自增长
    
    default NUll 不给值 都会触动自增长
    
    
----列属性(修改自增长)
    向下修改不生效
    向上修改生效
    
    alter table 表名 auto_increment = 值;
    
    
    查看字增长变量
    show variables like 'auto_increment%';
    -- 修改自增长步长
    set auto_increment_increment=5;--一次自增5

-- 删除自增长
    字段的一个属性,可以通过 modify 进行修改(没有 auto_increment)
    Alter table 表名 modify 字段 类型;
    
    alter table 表 modify id int;
    
    --查看 desc 表名
    

-- 列属性(唯一键) 
    unique key  --唯一键 
    数据不能重复,可以有多个唯一,允许为空。
    
    本质与主键差不多。
    
    
-- 增加唯一键
    1.在创建表的时候,字段之后跟 unique / unique key;
    
    2.在所有的字段之后。unique key(字段,字段);
        not null unique key --PRI 表中又没有主键
        
    3.在创建表之后增加唯一
        
        alter table 表名 add unique key (字段);
        
    

--- 删除唯一键
    先删除后新增
    
    alter table 表名 drop unique key -- 错误的
    
    alter table 表名 dropindex 索引名字;
    
    

--------索引

    几乎所有的索引都是建立在字段之上
    
    根据某种算法,将已有得数据(未来可能新增的数据)
    
    
    --索引的意义
        1.提示查询数据的效率
        2.约束数据的有效性(唯一性等)
        

        Mysql中提供了多种索引
        
        主键:primary key
        唯一: unique key
        全文: fulltext index
        普通: index
        
        全文索引,最大的问题是如何确定关键字
            英文很容易:单词与单词之间有空格
            中文很难:没有空格,中文可以各种随意组合(分词:sphinx)
            
            
    
    
---------------- 关系
    一对一
    一对多(多对一)
    多对多
    
    sqlserver 主表 外表
    
    
    ---- 范式:减少数据冗余
    
    1NF - 6NF
    
    
------- 1NF
        第一范式:在设计表存储数据的时候,如果表中设计的字段存储的数据,在取出来使用之前
        还血药额外的处理,不满足第一范式。
        
        数据不需要再次拆封
    
    -- 2NF
        /*
        不允许出现部分依赖
        在输出舍得的过程中,如果有复合主键
        且表中又字段并不是由整个主键来确定,
        而是依赖主键中的某个字段,存在字段依赖的部分问题
        称之为:部分依赖
        */
    
    -- 3NF
    不能出现传递依赖
    
    --逆规范化
    磁盘利用率与效率的对抗
    就是增大空间,提高效率
    

    
    
-------------数据高级操作---------------------    
    
    数据操作:增删改查
    
    新增:
    insert into 表名【字段名】 values (值列表);
    
    在数据插入的时候,假设主键对应的值已经存在,插入一定会失败!
    
    -- 主键冲突
        更新操作
        insert into 表名【字段名】values(值列表) on dupllcate key update 字段=值;
        
      替换
        replace into 表名【字段名】values(值列表;
    
    
    
-------蠕虫复制
        
        复制创建表(表结构)
        
        create table 新表名 like 旧表名; 
        
        蠕虫复制:先查出数据,然后将查出的数据新增一遍
        
        insert into 表名【字段列表】 select 字段列表 * from 数据表名(旧表)
        
        -- 蠕虫复制 成倍增长
        insert into 自己 select * from 自己;
        
        
        意义:
            1.从已有表拷贝数据到新表中
            2.可以迅速的让表中的数据膨胀到一定的数量级。测试表的压力已经效率
        
---- 高级 更新数据

        基本语法
        update 表名 set 字段=值 |where 条件|
        
        高级更新
        update 表名 set 字段 =值 |where 条件| limit 更新数量|
        
            -- 把表中的 a 变成 c
            update 表 set 字段='c' where 字段='a' limit 3;
            
            !!!GBK 不区分大小写。
    
---- 高级 删除数据 可以 通过 limit 来限制数量

    delete from 表名【where 条件】【limit 数量】;
     
    删除数据以后,自增长
    
    思路:数据的删除是不会该表表结构,只能删除表后重建。
    
    TRUNCATE 表名  -删除后,重置自增长
    
    
------- 高级 数据查询(select 选项)

    基本语法:
    select 字段列表 * from 表名 where 条件|
    
    完整语法:
    select 字段列表 * from 数据源 where 条件 group by 
    having  order  by limit;
    
        All:默认的,保留所有的结果
        Distinct : 去重,将重复的去掉
    
    
    -- 字段别名
        
        字段名 [as] 别名;
        
        不写 as 也行
        
    --- 数据源
    /*  从一张表中取出一条记录,去另外一张表中匹配所有的记录
        而且保留  记录数和字段数
        这种结果为:笛卡尔积(交叉连接)
        没什么用,尽量不用

    */  
    
    子查询:
    
    select * from (select * from 表名);
    
    
    
    
-- 高级 where 子句

        where 子句的目标用来判断数据,筛选数据
        
        where 返回结果 0 或者 1   0 带表false 1带表true ;
        
    
    运算符:
            >   大于
            <   小于
            >=  大于等于
            <=  小于等于
            !=  <>  不等于
            =   等于
            模糊查询里用到的:
            like
            between  and
            in / not in
            
    逻辑运算符:
            &&(and)  并
            ||(or)  或者
            !(not)  非
    
    rand 取得一个0和1之间的随机数
    floor 向下取整!
    1.
        select * from 表 where id=1 || id=3 || id=5;
                        ||
                        ||
        select * from 表 where id in(1,3,5);
        
    2.
        select * from 表 where height>=170 and heihgt<=180;
                        ||
                        ||
        select * from 表 where height between 170 and 180;               
    

--------------- Group by  分组----------------
    聚合函数:
    COUNT() :统计分组后的记录数,每一组有多少条记录
    Max()   :统计每组中最大的值
    Min()   :统计最小值
    AVG()   :统计平均值
    SUM()   : 统计和
    
    
select  聚合函数,字段名 from 表名 group by 字段名

多字段排序:
    --order by  放在语句最后
select * from 表名 border by 字段名(desc/asc),

    group_concat(字段)
    
    回溯统计:with rollup
    
    
--  Having 子句
    
    Having 字句 进行条件判断
     
    having 能做 where 能做的几乎所有事情 但是where却不能
    
    select 字段名 from 表名 group by 字段  having 条件
    
--- order by    
    
    select * from 表名 order by 字段 desc/asc;
    
    
--  limit 子句
    limit 有两种使用方式。
        只用来限制长度
    
    
    ------
    length:每页显示的数量
    Offset:offset-(页码-1)*每页显示数量


@作者 Stone的博客 www.1314sl.com

oneNate笔记
oneNate笔记

@作者 Stone的博客 www.1314sl.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 前言 我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用...
    暖熊熊阅读 593评论 0 0
  • 我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查...
    PythonMaO阅读 2,351评论 0 10
  • 望里风高起阵云,登楼一为散幽襟。 背天鸥去浑浑旧,接地春来浩浩新。 歌哭千家听旷野,飞潜无数动天心。 奔来万事交生...
    李野航阅读 231评论 0 1
  • 不要拿他人的错误来惩罚自己!不值得!也没必要!
    叶子随笔阅读 189评论 0 0
  • 秋风又起 晓月残辉 蓦回首 已成空 心悲凉 愁断肠 半丝秋意 一世情长 沉默 寂然 箫凉 悲楚 凄凄惨惨戚戚
    再回首已成空阅读 200评论 0 0