• 数据库的操作


    唯一索引:         

    作用:num列的值不能重复          加速查找

    create table t5(
                        id int,
                        num int,
                        unique(num)
                    )engine=Innodb charset=utf8;

    联合唯一索引:

    作用:number 列 和 id列的值不能 重复            加create table t6(

                            id int,
                            num int,
                            unique(id, num)
                        )engine=Innodb charset=utf8;
    
    
    create table t6(
                            id int,
                            num int,
                            unique(id, num......)
                        )engine=Innodb charset=utf8;

     外键:      

      1.一对多:直接 加外键

      2.一对一:在外键的基础上加唯一约束

      3.多对多:多个外键 ,然后联合唯一索引

    数据库的操作:

                    增:
                        insert into 表名 (列名1, 列名2,) values(值1, 值2);
                        insert into 表名 (列名1, 列名2,) values(值1, 值2),(值1,值2),(值n,值n);
                        
                        insert into 表名 (列名1, 列名2,) select 列名1, 列名2 from 表名;
                        
                    删除:
                        delete from 表名; 
                        
                        delete from 表名 where id > 10
                        delete from 表名 where id < 10
                        delete from 表名 where id <= 10
                        delete from 表名 where id >= 10
                        delete from 表名 where id != 10 
                        delete from 表名 where id = 10 and name='xxx';  and : 并且 两个条件都必须要成立
                        delete from 表名 where id = 10 or name='xxx';   or :  或者 只要满足一个条件成立
                    修改:
                        update 表名  set name='zekai', age=23 where id > 10;
                        
                    查询:
                        
                        基本:
                            select * from 表名;
                            select name , age from 表名;
                        
                        高级:
                            
                            a. where 条件查询:
                                select * from 表名 where  id=10;
                                select * from 表名 where  id >10 and id<15;
                                select * from 表名 where  id > 10;
                                != : 不等与
                                >= <= 
                                
                                
                                between and: 闭区间 
                                    select * from t4 where id between 9 and 12;
                                
                                in: 在某一个集合中
                                    select * from t4 where id in (9,10,11....);
                                    
                                    
                                    select * from t4 where id in (select id from t3 where id between 2 and 4)
                                    
                                    是可以这样使用的, 但是不建议大家使用;
                            
                            b. 通配符:
                                alex
                                
                                select * fromwhere name like 'ale%'  - ale开头的所有(多个字符串)
                                select * fromwhere name like 'ale_'  - ale开头的所有(一个字符)
    
                            c.     限制取几条:
                                    
                                    select * from 表名 limit 索引偏移量, 取出多少条数据;
                                    
                                    
                                    select * from t3 limit 0, 10;  第一页
                                    select * from t3 limit 10, 10;  第二页
                                    
                                    page = input('page:')
                                    
                                        page    索引偏移量      数据量(offset)
                                          1         0              10
                                          2         10             10
                                          3         20             10
                                          4         30             10
                                          
                                          page   (page-1)*offset   offset
                                    
                                    分页核心SQL:
                                    
                                        select * from t3 limit (page-1)*offset, offset;
                            
                            d.  排序:
                                    
                                    order by
                                    
                                    降序:
                                        select * from t4 order by 列名 desc; descending
                                    
                                    升序:
                                        select * from t4 order by 列名 asc; ascending
                            
                                    
                                    多列:
                                        
                                        create table t7(
                                        
                                            id int auto_increment primary key,
                                            num int not null default 0,
                                            age int not null default 0
                                        )charset=utf8;
                                        
                                        insert into t7 (num, age) values (2, 12),(3,13),(4, 12);
                                    
                                        select * from t4 order by num desc, name asc;
                                        
                                        如果前一列的值相等的话, 会按照后一列的值进行进一步的排序.
                            
                            e.  分组
                                    
                                    select age, 聚合函数(count(num)/sum(num)/max(num)/min(num)/avg(num)) from 表名 group by 列名;
                                    
                                    
                                    select age, avg(num) from t7 group by age;
                                     
                                    select age, count(num) from t7 group by age;
                                    
                                    select age, count(num) as cnt from t7 group by age;  显示别名 as
                                
                                    having的二次删选:
                                        select age, count(num) as cnt from t7 group by age  having cnt>1;
                                        
                                    where 和 having的区别:
                                        1). having与where类似,可筛选数据
                                        2). where针对表中的列发挥作用,查询数据
                                        3). having针对查询结果中的列发挥作用,二次筛选数据, 和group by配合使用
                            
                            f.  连表操作
                                    select * from userinfo, department; (笛卡尔积)
                                    
                                    select * from userinfo, department where userinfo.depart_id=department.id;
                                
                                    左连接:
                                    
                                        select * from userinfo left join department on userinfo.depart_id=department.id;
                                        左边的表全部显示, 右边没有用到不显示
                                    
                                    右连接:
                                        
                                        select * from userinfo right join department on userinfo.depart_id=department.id;
                                        右边的表全部显示, 左边没关联的用null表示
                                    
                                    内连接:
                                        左右两边的数据都会显示
                                    
                                    ps: 
                                        a.只需要记住左连接 left join
                                        
                                        b.可以连接多张表 通过某一个特定的条件
                                        
                        注意查询的顺序:
                            select name,sum(score) fromwhere id > 10 group by score having age> 12  order by age desc limit 2, 10 

      

  • 相关阅读:
    java常用类
    java throw和catch同时使用
    HTML5 input 类型: email及url
    Android中集成支付宝
    HTML5 预加载
    SQLite数据库
    Android开发中如何加载API源码帮助开发
    Java中的static
    HTML5 Web Storage 特性
    gdal1.10编译经验
  • 原文地址:https://www.cnblogs.com/wyf20190411-/p/11019002.html
Copyright © 2020-2023  润新知