数据库常见的:Oracle、MySQL、Acesss、VF、SQLite、SqlServer、安卓sqlite(存储联系人等)
每种厂商都有各自的特性,我就略过,因为SQL语言几乎通用。
我们学习下增删改查,参考:https://www.w3school.com.cn/sql/index.asp
大概总结下套路如下:
查找:select 列表(这里可以加入一些条件,如去重、求和等) from 表名 where 条件运算判断
插入/新增:INSERT INTO 表名(这里可以选择插入哪些列)VALUES (这里就是放内容了)
修改:UPDATE 表名称 SET 要改那个列内容 = 新值 WHERE 修改哪列条件 = 某值
删除:DELETE FROM 表名称 WHERE 根据条件要删除哪列名称 = 值
--逻辑都差不多
一、查找select:
1.select
基本得查找语句,必须记住:
语法:
SELECT 列名称 FROM 表名称
或
SELECT * FROM 表名称
例子:
假设有个数据表Persons内容:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
1.1在Persons查找LastName,FirstName这两列内容
SELECT LastName,FirstName FROM Persons
结果:
LastName | FirstName |
---|---|
Adams | John |
Bush | George |
Carter | Thomas |
1.2 在Persons表查找所有内容
SELECT * FROM Persons
结果:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
2. DISTINCT
用于返回唯一不同的值。用于select紧跟之后
语法:
SELECT DISTINCT 列名称 FROM 表名称
例子:
"Orders"表:
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
2.1 从 Company" 列中仅选取唯一不同的值(W3School有两个,我们要求只要一个,就是去重)
SELECT DISTINCT Company FROM Orders
结果:
Company |
---|
IBM |
W3School |
Apple |
注意:
除了DISTINCT 这个,在查找时有些还会让姐计算这两个之和,如cout(OrderNumber)。
例子:
SELECT count(OrderNumber) FROM Orders
3.where
这个用于条件判断。常用到运算符之类得
语法:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
例子:
"Persons" 表
LastName | FirstName | Address | City | Year |
---|---|---|---|---|
Adams | John | Oxford Street | London | 1970 |
Bush | George | Fifth Avenue | New York | 1975 |
Carter | Thomas | Changan Street | Beijing | 1980 |
Gates | Bill | Xuanwumen 10 | Beijing | 1985 |
3.1 选取居住在城市 "Beijing" 中的人,
SELECT * FROM Persons WHERE City='Beijing'
结果:
LastName | FirstName | Address | City | Year |
---|---|---|---|---|
Carter | Thomas | Changan Street | Beijing | 1980 |
Gates | Bill | Xuanwumen 10 | Beijing | 1985 |
注意:
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值(需要引号):
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush
数值(不能有引号):
这是正确的:
SELECT * FROM Persons WHERE Year>1965
这是错误的:
SELECT * FROM Persons WHERE Year>'1965'
4.AND 和 OR
一般用在where后,很好理解。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
例子:
原始的表Persons (用在例子中的):
LastName | FirstName | Address | City |
---|---|---|---|
Adams | John | Oxford Street | London |
Bush | George | Fifth Avenue | New York |
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
AND:
4.1 使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
OR:
4.2 使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
复杂点,AND和OR共用
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
注意:
用法都是为了where而生,与和或得用法,很好理解,不需要死记硬背。
5.Order By
1.升序
用于根据指定的列对结果集进行排序。默认按照升序对记录进行排序。
例子:
原始的表Orders (用在例子中的):
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
5.1 以字母顺序显示公司名称(按照字母升序):
SELECT Company, OrderNumber FROM Orders ORDER BY Company
结果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 6953 |
W3School | 2356 |
看看这个结果,W3School的数字是不是没有排序?
5.2 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
根据两列排序,有先后顺序之分
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 2356 |
W3School | 6953 |
2.逆序DESC
按照降序对记录进行排序,可以使用 DESC 关键字。
例子:
5.3 以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
Company | OrderNumber |
---|---|
W3School | 2356 |
W3School | 6953 |
IBM | 3532 |
Apple | 4698 |
二、新增/插入
1. INSERT INTO
用于向表格中插入新的行。这个可以理解新增新数据,也可以根据条件插入数据。
语法:
INSERT INTO 表名称 VALUES (值1, 值2,....)
或 我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例子:
插入新的行
"Persons" 表:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
1.1 新增一条新内容
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwumen 10 | Beijing |
1.2 指定插入数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Champs-Elysees |
三、修改
UPDATE
用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例子:
Person:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Champs-Elysees |
更新某一行中的一个列
1.1 我们为 lastname 是 "Wilson" 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Champs-Elysees |
更新某一行中的若干列
1.2 我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |
四、删除
DELETE
用于删除表中的行。
DELETE FROM 表名称 WHERE 列名称 = 值
例子:
Person:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |
删除某行
4.1"Fred Wilson" 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
删除所有行
4.2 可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者
DELETE * FROM table_name
基本命令:-https://download.csdn.net/download/bbs11007/19979347?spm=1001.2014.3001.5503