数据库基本操作小结

来源:互联网 发布:淘宝全民抢拍在哪里 编辑:程序博客网 时间:2024/06/16 20:54
基本操作(增删改查):
    添加:
        全列插入:insert into 表名  values(全部字段值),
                                    (全部字段值),
                                    (全部字段值),
                                    ...
                                    ...后面可跟多条记录值,同时插入

        缺省插入:insert into 表名 (指定的任意个字段)
                        values(对应的值)
                        ...
                        ...后面可跟多条记录值,同时插入
    删除:
        delete from 表名 where 字段=字段值
    修改:
        update 表名 set 字段1=字段值1,字段2=字段值2... where 条件
    查询:
        select * from 表名 where 条件
        (若有多个条件,把筛选数据量最大的条件放在最左边执行,有助于提高查询效率)

复杂查询操作:
    1.去除重复结果:
        select distinct gender from students
    2.模糊查询like:
        select * from 表名 where name like '黄%'    查询所有姓黄的人的信息
        select * from 表名 where name like '黄_'    查询所有姓黄的并且姓名只有2个汉字的文的信息
        select * from 表名 where url like '%@qq.com' 查询所有的qq邮箱的用户
        (注:%表示任意多个字符的占位符,_表示一个字符的占位符)
    3.范围查询:
        in表示在一个非连续的范围内
        select * from students where id in(1,3,8)
            查询编号是1或3或8的学生
        between ... and ...表示在一个连续的范围内
        查询学生是3至8的男生
        select * from students where id between 3 and 8 and gender='男'
    4.聚合函数
        为了快速得到统计数据,提供了5个聚合函数
            count(*)表示计算总行数,括号中写星与列名,结果是相同的
                select count(*) from students 查询学生总数
            max(列)表示求此列的最大值
                select max(id) from students where gender='女' 查询女生的编号最大值
            min(列)表示求此列的最小值
                select min(id) from students where isdelete=0;查询未删除的学生最小编号
            sum(列)表示求此列的和
                select sum(id) from students where gender='男';查询男生的编号之和
            avg(列)表示求此列的平均值
                select avg(id) from students where isdelete=0 and gender='女' 查询未删除女生的编号平均值
    5.分组
        select gender as 性别,count(*) from students group by gender 查询男女生总数
        select hometown as 家乡,count(*) from students group by hometown 查询各城市人数
        分组后的数据筛选
            查询男生总人数
            select gender as 性别,count(*)
            from students group by gender having gender='男';

            having是对group by的结果进行筛选
            where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
    6.排序
        select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
        将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
        默认按照列值从小到大排列 asc从小到大排列,即升序 desc降序

        查询未删除男生学生信息,按学号降序
        select * from students where gender=1 and isdelete=0 order by id desc
    7.分页
        当数据量过大时,在一页中查看数据是一件非常麻烦的事情

        select * from 表名 limit start,count
        从start开始,获取count条数据 start索引从0开始

    8.完整的select语句
        select * from 表名
        where 条件...
        group by ...
        having ...
        order by ...
        limit start,count
    9.union关键字:将两个查询结果类似的数据拼接到一个表中展示
        select * from 表名 where 条件1
        union select * from 表名 where 条件2