数据的基本的查询语句
select * from table where clue_id=90 and contract_number='127283' order by id desc;
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
数据的插入与删除
6. 插入列,还有一种是在指定列插入数据
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
7. 删除语句
DELETE FROM 表名称 WHERE 列名称 = 值
8. update语句,更新某一行中的若干列
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
高级查询
9. 选取查询出来的结果的前5或者前5%,这样的查询语句在不同类型的数据库中是不一样的
Mysql中:
SELECT column_name(s)
FROM table_name
LIMIT number
Oracle中:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
SQLServer中:
SELECT TOP number|percent column_name(s)
FROM table_name
10. like 查询,like 'n%','%qqq%','%p',查询以n开头,包含qqq,以p结尾
还有一个是“_”通配符:_表示一个字符
SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'
LIKE 'C_r_er'
not like 'n%'表示查询不包含以n开头的
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
11. In操作符
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
12. BETWEEN 操作符:操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。 还有not between操作符
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
13. 联合查询(join,union)
如果需要查看两个表中的一些信息可以这样做:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
还可以用join来做
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
分组查询
14. 使用group by进行分组查询
select studentID as 学员编号,AVG(score) as 平均成绩 (注释:这里的score是列名)
from score (注释:这里的score是表名)
group by studentID
说明:在表score中查询,按strdentID字段分组,显示strdentID字段和score字段的平均值;select语句中只允许被分组的列和为每个分组返回的一个值的表达式,例如用一个列名作为参数的聚合函数
使用having子句进行分组筛选
select studentID as 学员编号,AVG(score) as 平均成绩 (注释:这里的score是列名)
from score (注释:这里的score是表名)
group by studentID
having count(score)>1
说明:接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件。