Sql分为两个部分:数据操作语言dml 数据定义语言 ddl
数据操作语言就是对数据库的增删改查
Insert into 增加
Insert into 表名 values(?,)
Insert into 表名 (列名1,列名2) values (值1,值2)
Select 查询
Select 列名 from 表名
Select distinct 列名 from 表明 删除查询出来的相同的值(相同值只查询一次)
Delect 删除
Delect from 表名 where 列名称 =某值
删除所有值 delect from 表名
Update 修改
Update 表名称 set 列名称=新值,列名称=新值 where 列名称=某值
一.Where 操作
下面的运算符可在 WHERE 子句中使用:
操作符 描述
= 等于
不等于
大于
< 小于
= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
比如Select * from user where uid = 1
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录
Select * from user where uid=1 and username=’ss’
也可以多次使用and和or
Select * from user where (uid=1or username=’ss’) and age=18
二
order by 用于对结果集进行排序
1 用于对指定列排序
默认排序是升序 如果想降序用desc
可以多次用
Select * from user order by username desc ,uid
按名字排序 如果名字相同 按id 排序
三
Top子句
相当于限定个数
比如mysql是select * from user where username=’wang’ limit 1
只能取出一个名字是王的人
四
Like 模糊查询
Select * from user where username=’王%’
删选名字叫王什么的人
通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]
或者
[!charlist] 不在字符列中的任何单一字符
SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'
"Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人
五in操作符
In 操作符可以在where中定义多个值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
六 between
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
七 别名
使用表名作为别名
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
别名使查询程序更易阅读和书写
使用一个列名别名
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
SELECT LastName AS Family, FirstName AS Name
FROM Persons
查询后
Family Name
Adams John
Bush George
Carter Thomas
连接查询
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
"Persons" 表:
Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
"Orders" 表:
Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
内连接
语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
运行内连接
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
左连接
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行
LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集: