SQL
SQL常见数据类型
char,varchar,int,datetime
SQL分为两部分:数据操作语言DML、数据定义语言DDL
查询
SELECT * FROM person WHERE city LIKE ‘N%’ //居住在N开头的城市的记录
SELECT * FROM person WHERE city NOT LIKE ‘%lon%’ //居住在不包括lon开头的城市的记录
SELECT * FROM person WHERE firstname LIKE ‘_ob’ //名字第一个字符后面是ob
SELECT * FROM person WHERE lastname IN(‘a’,‘b’)
SELECT * FROM person WHERE lastname BETWEEN ‘A’ AND ‘C’
连接
SELECT o.orderID,p.lastname FROM person AS p,Order AS o
WHERE p.lastname=‘a’ AND p.firstname=‘j’
列出不同的值
SELECT DISTINCT company FROM orders
过滤or and
SELECT * FROM persons WHERE lastname=‘a’ AND firstname=‘b’
排序
SELECT company FROM orders ORDER BY company
SELECT company,ordernumber FROM orders ORDER BY company DESC,ordernumber ASC
插入
INSERT INTO persons VALUES(‘gates’,‘bill’,‘bj’)
INSERT INTO persons(lastname,address) VALUES(‘gates’,‘bj’)
更新
UPDATE persons SET firstname=‘bob’ WHERE lastname=‘bill’
删除
DELETE FROM person WHERE lastname=‘willson’ AND firstname=‘fred’
表的连接!
inner join(内连接/等值连接) 只返回两个表中联结字段相等的行
left join(全左连接) 返回包括左表中的所有记录和右表中联结字段相等的记录(若右表中没有匹配,则结果为 NULL)
right join(全右连接) 返回包括右表中的所有记录和左表中联结字段相等的记录(若左表中没有匹配,则结果为 NULL)
全外连接
SELECT p.lastname,p.firstname,o.orderno
FROM person AS p INNER JOIN order AS o ON p.id=o.id ORDER BY p.lastname
分页
SELECT语句是默认返回所有匹配的行,为了实现分页查询可以实现LIMIT
LIMIT 5就是返回前五行,LIMIT 2,5就是从第2行开始返回前五行
聚合函数!
COUNT()、AVG()、SUM()、MAX()、MIN()
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
主键
一个表只能有一个主键。主键用于唯一标识某一条记录。主键的列不能有重复,不允许为空。
一个表可以有多个外键。外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。
WHERE和HAVING
WHERE是一个约束声明,使用WHERE约束来自数据库的数据,WHERE是在结果返回之前起作用的,WHERE中不能使用聚合函数。
HAVING是一个过滤声明,在结果返回之后起作用的,在HAVING中可以使用聚合函数。