SQL语法语句的使用。及其实例的操作具体步骤,SQL函数的中英文对照,以及数据库管理的基础用法和使用。
(重要)SQL语法
咳咳,大家好,我是王也。这个是我学SQL语句语法时的一个笔记,希望对大家有用。如有侵权请联系,随时删除。
语法
(使用频率较高的)create table、 select、 update、 delete
SQL SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法(注释:SQL 语句对大小写不敏感。SELECT 等效于 select。)
SELECT 列名称 FROM 表名称 and SELECT * FROM 表名称
例子:
如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),
请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
例子2
现在我们希望从 “Persons” 表中选取所有的列。
请使用符号 * 取代列的名称,就像这样:(星号(*)是选取所有列的快捷方式。)
SELECT * FROM Persons
Update 修改更新 语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例子:
我们为 lastname 是 “Wilson” 的人添加 firstname:
UPDATE Person SET FirstName = ‘Fred’ WHERE LastName = ‘Wilson’
例子2:
更新某一行中的若干列
我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = ‘Zhongshan 23’, City = ‘Nanjing’
WHERE LastName = ‘Wilson’
DELETE 删除语句
DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 = 值
例子:删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
例子:删除某行
“Fred Wilson” 会被删除:
DELETE FROM Person WHERE LastName = ‘Wilson’
SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。(简单来说:去重)
SELECT DISTINCT 列名称 FROM 表名称
AND 运算符实例
使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:
SELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName='Carter
OR 运算符实例
使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:
SELECT * FROM Persons WHERE firstname=‘Thomas’ OR lastname=‘Carter’
结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM Persons WHERE (FirstName=‘Thomas’ OR FirstName=‘William’)
AND LastName=‘Carter’
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
ORDER BY实例
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
以逆字母顺序显示公司名称:(DESC倒序排列,descend 的缩写)
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:(ASC顺序,ascend的缩写)
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行。
语法
INSERT INTO 表名称 VALUES (值1, 值2,…)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)
TOP 子句
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
注释:并非所有的数据库系统都支持 TOP 子句。
SQL Server 的语法:
SELECT TOP number|percent column_name(s)FROM table_name
SQL TOP 实例 1
现在,我们希望从上面的 “Persons” 表中选取头两条记录。
我们可以使用下面的 SELECT 语句:
SELECT TOP 2 * FROM Persons
SQL TOP PERCENT 实例 2
现在,我们希望从上面的 “Persons” 表中选取 50% 的记录。
我们可以使用下面的 SELECT 语句:
SELECT TOP 50 PERCENT * FROM Persons
取结果集10-20的条目。MySQL中 select * from table limit10,20;
取结果集前10 select * from table limit10;select top 10* from table
LIKE 操作符(模糊匹配)
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。、
例子 1
现在,我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE ‘N%’
(提示!:"%" 可用于定义通配符(模式中缺少的字母))
例子2
接下来,我们希望从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE ‘%g’
例子 3
接下来,我们希望从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE ‘%lon%’
例子 4
通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City NOT LIKE ‘%lon%’
IN 操作符
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
(列的值在一个俩表当中) SELECT * FROM Persons WHERE LastName IN (‘Adams’,‘Carter’) 注意效率
BETWEEN 操作符
SQL BETWEEN 语法
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
例子:
如需以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人,请使用下面的 SQL:
SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams’ AND ‘Carter’
SQL GROUP BY 语句
语法:
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
例子:
使用 GROUP BY 语句对客户进行组合。
我们使用下列 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
SQL Alias(别名)
SQL Alias
表的 SQL Alias 语法
SELECT column_name(s) FROM table_name AS alias_name
例子:
假设我们有两个表分别是:“Persons” 和 “Product_Orders”。我们分别为它们指定别名 “p” 和 “po”。
现在,我们希望列出 “John Adams” 的所有定单。
我们可以使用下面的 SELECT 语句:(关键字 AS )
SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po WHERE p.LastName=‘Adams’ AND p.FirstName=‘John’
不使用别名的 SELECT 语句:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName FROM Persons, Product_Orders WHERE Persons.LastName=‘Adams’ AND Persons.FirstName=‘John’
从上面两条 SELECT 语句您可以看到,别名使查询程序更易阅读和书写。
jion 表连接
需求:设计订单表。第一次设计的order表包含字段:id,order_no ,person_name,price,person_address,person_vip,product_info如果这样设计,发现问题:一字段越来越多、各种维度信息混合在一起不好维护,二是列表信息,不好表达。
所以我们按字段分类设计成两张表。表一:person(name,address,vip ,phone)表二:order(ID,order_no,price,person.id)
这里的person.id是外键(foreign key)。外键的好处:分类清晰,拨正数据一致性;缺点:影响效率
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
“”“INNER JOIN Orders”""
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
INTER省略的话默认jion就是inner jion内连接
left jion 左表中的列不管有没有匹配右边的表中数据,都会表现嘴边的数据航,right join 相反以右表为主。full join笛卡尔积消耗资源。一般情况下主要innerjoin其他的join几乎用不到用到在百度。
管理数据库
CREATE DATABASE 语句(新建数据库)
CREATE DATABASE database_name(数据库名字)
#CREATE TABLE 语句(新建表)
CREATE TABLE 语句用于创建数据库中的表。
例子1:
本例演示如何创建名为 “Person” 的表。
该表包含 5 个列,列名分别是:“Id_P”、“LastName”、“FirstName”、“Address” 以及 “City”:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
SQL 约束 (Constraints)
(请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。)
NOT NULL 非空
UNIQUE
PRIMARY KEY 主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键
FOREIGN KEY 外键
CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
针对insert语句:not null 不能为空 unique 唯一 PRIMARY KEY主键 外键
索引CREATE INDEX (新老程序员的区别在此)
在表上创建一个简单的索引。允许使用重复的值:(索引就好比书本的目录,空间换时间,增加建立索引那列的查询速度)
CREATE INDEX index_name ON table_name (column_name)
丢弃drop 语句
DROP TABLE 表名称
删除整张表姐后和数据以及索引,delete只删除数据。
SQL ALTER TABLE 修改表 语句
现在,我们希望在表 “Persons” 中添加一个名为 “Birthday” 的新列。
我们使用下列 SQL 语句:
ALTER TABLE Persons ADD Birthday date
SQL AUTO INCREMENT 插入
AUTO INCREMENT 字段
我们通常希望在每次插入新记录时,自动地创建主键字段的值。
我们可以在表中创建一个 auto-increment 字段。
MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT=100
要在 “Persons” 表中插入新记录,我们不必为 “P_Id” 列规定值(会自动添加一个唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES (‘Bill’,‘Gates’)
上面的 SQL 语句会在 “Persons” 表中插入一条新记录。“P_Id” 会被赋予一个唯一的值。“FirstName” 会被设置为 “Bill”,“LastName” 列会被设置为 “Gates”。
SQL函数
平均值avg(字段)
计数 count(字段)
时间 now()
如果分组统计后统计 select * from table group by vip HAVING 筛选条件;
最大 max
最小 min
格式化 format()
总结
PS:全部示例皆在www.w3shcool.com上学习时保存的。 我只是把我认为重要的,记录了下来写成了一个博客,这也算是我自己的一个笔记吧(越靠前越常用)希望对大家有用。
具体网址http://www.w3school.com.cn/sql/index.asp