美文网首页
SQL之更删改查

SQL之更删改查

作者: 安静的学点东西 | 来源:发表于2017-09-07 12:11 被阅读18次

    查询

    单表查询

    查询所有字段

    1、select 字段1, 字段2,字段3... from 表名;//将表所有的字段列出来
    2、select * from 表名;//*表示查询所有
    

    查询指定字段

    select 字段1, 字段2,字段3... from 表名;//将需要查出来的字段列出来
    

    WHERE条件查询

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
    

    下面的运算符可在 WHERE 子句中使用:

    操作符 描述 举个栗子
    = 等于 select * from t_book where id=1;
    <> 不等于 select * from t_book where id<>1;
    < 小于 select * from t_book where id<1;
    >= 大于等于 select * from t_book where id>=1;
    <= 小于等于 select * from t_book where id<=1;
    [not] between 在某个范围 select * from t_book where id between 1 and 5 ;
    [not] like 搜索某种模式(模糊查询) select * from t_book where bookName like '123%';
    > 大于 select * from t_book where id>1;
    and 显示多条件同时匹配的数据 select * from t_book where id=1 and bookName like '1%';
    or 显示只要有某个条件匹配的数据 select * from t_book where id=1 or id=2;
    [not] in 列在某个范围中的都可以值 select * from t_book where id in (1,2,3,4,5);
    [not] null 为空 select * from t_book where bookName is null;

    去重复查询数据(distinct)

    select distinct 字段名 from 表名 where 表达式;//SELECT DISTINCT bookName FROM t_book;
    

    排序

    select 字段名 from 表名 where 表达式 order by 属性名 [ASC|DESC];
    //asc表示升序;desc表示降序
    select * from t_book order by id asc;
    select * from t_book order by id desc;
    

    分组查询

    GROUP BY 属性名 [HAVING 条件表达式][with rollup]
    1、单独使用(毫无意义,因为只会显示每组的一条数据);
    2、与group_concat()函数一起使用;
    //select gradeName,Group_concat(stuName) from t_student group by gradeName;
    3、与聚合函数一起使用;
    //select gradeName, count(*) from t_student group by gradeName;
    4、与having一起使用(限制输出结果);
    //select gradeName, count(*) from t_student group by gradeName having count(stuName) >3;
    5、与with rollup一起使用(最后加入一个总和行,总计);
    //select gradeName, count(*) from t_student group by gradeName with rollup;
    

    分页查询

    select 属性名 from 表名 limit 初始位置,记录数;
    //select * from t_book limit 5;//去前五条数据;
    //select * from t_book limit 5,10;//取从第五个开始的后10条数据(不包括第五条)
    

    连接查询

    连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据。

    内联查询

    内联查询是一种最常用的连接查询,内联查询可以查询两个或者两个以上的表;

    SELECT * FROM t_book, t_bookType WHERE t_book.`bookTypeId` = t_bookType.`id`;
    

    外连接查询

    外连接查询可以查出某一张表的所有信息;

    select 属性名列表 from 表名1 left|right join 表名2 on 表名1.属性名1=表名2.属性名2; 
    

    左连接查询

    可以查询出表1的所有记录,而表2中,只能查询出匹配的记录;

    SELECT * LEFT JOIN t_bookType ON t_book.`bookTypeId`=t_bookType.`id`;
    

    右连接查询

    可以查询出表2的所有记录,而表名1中,只能查询出匹配的记录。

    SELECT * RIGHT JOIN t_bookType ON t_book.`bookTypeId`=t_bookType.`id`;
    

    子查询

    带IN关键字的子查询

    一个查询语句的条件可能落在另一个select语句的查询结果中;
    SELECT * FROM t_book WHERE bookTypeId IN (SELECT id FROM t_bookType);
    

    带比较运算符的子查询

    子查询可以使用比较运算符
    select * from t_book where bookTypeId >= (select min(id) from t_bookType);
    

    带exists关键字的子查询

    假如子查询查询到记录,则进行外层查询,否则,不执行外层查询;
    select * from t_book where exists (select * from t_bookType);
    

    带any关键字的子查询

    any关键字表示满足其中任一条件
    select * from t_book where bookTypeId > any (select id from t_bookTypeId);
    

    带all关键字的子查询

    any关键字表示满足其中任一条件
    select * from t_book where bookTypeId > all (select id from t_bookTypeId);
    

    合并查询

    使用union关键字,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录;nuion all不会去掉相同的记录,这里只会合并成为一列。
    SELECT bookName FROM t_book UNION ALL SELECT bookTypeId FROM t_book;
    

    为表和字段取别名

    • 为表取别名
    格式: 表名 表的别名
    select t.bookName, t.author from t_book t;
    select t.bookName, ty.typeName from t_book t, t_bookType ty where t.bookTypeId = ty.id;
    
    • 为字段取别名
    格式: 属性名 [as] 别名
    SELECT bookName AS BookName FROM t_book;
    

    插入数据

    • 给表的所有字段插入数据
    格式: insert into 表名 values (值1,值2,值3,...,值N);
    // insert into t_book values(null, "java学习指南","无崖子", 1);
    
    • 给表的指定字段插入数据
    格式:insert into 表名(属性1,属性2,属性3...,属性n) values(值1,值2,值3,...值n);
    // INSERT INTO t_book(bookName, author) VALUES("java and c++", "tang");
    
    • 同时插入多条记录
    insert into 表名 [(属性列表)]
    values (取值列表),(取值列表),(取值列表),...(取值列表);
    
    INSERT INTO t_book VALUES (NULL, "first", "first author", 1)
                ,(NULL, "first", "first author", 1)
                ,(NULL, "second", "second author", 1)
                ,(NULL, "third", "third author", 1);
    

    更新数据

    UPDATE 表名 SET 属性名1=取值1,属性名2=取值2,...属性名n=取值n where 条件表达式;
    //UPDATE t_book SET bookName="modify first data" WHERE  id=1;
    

    删除数据

    DELETE FROM 表名 [WHERE 条件表达式];
    //DELETE FROM t_book WHERE id=3;
    

    今天对于数据库表的更删改查的介绍就结束了,后续会介绍索引、视图、触发器、存储过程以及函数。

    相关文章

      网友评论

          本文标题:SQL之更删改查

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