查询
单表查询
查询所有字段
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;
今天对于数据库表的更删改查的介绍就结束了,后续会介绍索引、视图、触发器、存储过程以及函数。
网友评论