25yicms利用ASP.NET(C#)+MSSQL技术全力打造功能最强大的营销型企业网站管理系统,企业做网站系统,做网站软件,提供div+css企业网站模板。
阅读内容

SQL入门必备知识大全


时间:2014/10/20   来源:企业网站管理系统
  下面所列皆为企业网站管理系统整理的sql的入门语法,掌握以下知识既可以快速掌握sql知识。SQL入门必备知识大全如下。
 
  【SQL是什么】
 
  SQL是用于访问和处理数据库的标准的计算机语言。SQL是一门 ANSI的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
 
  【SQL 能做什么?】
 
  SQL 面向数据库执行查询
  SQL 可从数据库取回数据
  SQL 可在数据库中插入新的记录
  SQL 可更新数据库中的数据
  SQL 可从数据库删除记录
  SQL 可创建新数据库
  SQL 可在数据库中创建新表
  SQL 可在数据库中创建存储过程
  SQL 可在数据库中创建视图
  SQL 可以设置表、存储过程和视图的权限
 
  【数据库表】
 
  一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
 
  【注意事项】
 
  一定要记住,SQL语言对大小写不敏感,但数据永远是区分大小写的!
  SQL语句后面的分号?某些数据库系统要求在每条SQL命令的末端使用分号,分号是在数据库系统中分隔每条SQ语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
  大多数情况下,UPDATE和DELETE都需要跟WHERE子句,否则将对整列数据进行处理!
 
  【SQL命令的类型】
 
  SQL命令主要分类包括:
  数据定义语言(DDL):基础DDL命令包括:CREATE(TABLE、INDEX、VIEW)、ALTER(TABLE、INDEX)、DROP(TABLE、INDEX、VIEW);
  数据操作语言(DML):基础DML命令包括:INSERT、UPDATE、DELETE;
  数据查询语言(DQL):最常用DML命令为SELECT;
  数据控制语言(DCL):数据控制语言用于控制对数据库里数据的访问,用于创建与用户访问相关的对象,以及控制用的权限,常用命令包括:ALTER PASSWORD、GRANT、REVOKE、CREATE SYNONYM;
  数据管理命令:数据管理命令用于对数据库里的操作进行审计和分析,有助于分析系统性能,常用命令包括:START AUDIT、STOP AUDIT;
  事务控制命令:常用事务命令包括:COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION;
 
  【SQL DML和DDL】
 
  可以把SQL分为两个部分:数据操作语言(DML)和数据定义语言(DDL),总的来说数据操作主要包括查找(SELECT)、更新(UPDATE)、添加(INSERT INTO)、删除(DELETE),而数据定义主要包括创建(CREATE)、修改(ALTER)、删除(DROP)。
  SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
 
  查询和更新指令构成了 SQL 的 DML 部分:
  SELECT - 从数据库表中获取数据
  UPDATE - 更新数据库表中的数据
  DELETE - 从数据库表中删除数据
  INSERT INTO - 向数据库表中插入数据
  SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
  SQL 中最重要的 DDL 语句:
  CREATE DATABASE - 创建新数据库
  ALTER DATABASE - 修改数据库
  CREATE TABLE - 创建新表
  ALTER TABLE - 变更(改变)数据库表
  DROP TABLE - 删除表
  CREATE INDEX - 创建索引(搜索键)
  DROP INDEX - 删除索引
 
  【SQL SELECT 语句】
 
  SELECT语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。SELECT可以匹配的子句较多,如WHERE(AND、OR、LIKE、IN、BETWEEN)、ORDER BY、TOP、JOIN、UNIO-N
  语法一:SELECT 列名称 FROM 表名称
  语法二:SELECT * FROM 表名称
  搜索多列则各列名称间用逗号隔开,搜索所有列则直接用*即可。
  唯一不重复DISTINCT
  SQLSELECT DISTINCT语法:
  SELECT DISTINCT 列名称 FROM 表名称
  若想仅仅列出不同(distinct)的值,则该关键词DISTINCT用于返回唯一不同的值。
 
  举例:
  SELECT LastName,FirstName FROM Persons
  【SELECT INTO】
  SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中,常用于创建表的备份复件或者用于对记录进行存档。同时SELECT INTO可以用于向另一个数据库中拷贝表,或使用WHERE子句筛选拷贝。
  语法:SELECT 列名 INTO 新表名 [IN 其他数据库] FROM 表名
  举例:
  SELECT * INTO Persons IN ‘Backup.mdb’ FROM Persons
 
  【WHERE】
  WHERE 子句用于过滤数据指定搜索条件,一般跟在SELECT语句后。
  语法:SELECT 列名称 FROM 表名称 WHERE 列运算符值
  常用操作符:=(等于)、<>(不等于,也可用!=)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、BETWEEN(在某个范围内)、LIKE(搜索某种模式)、IS NULL(空值)、
 
  举例:
  SELECT * FORM Persons WHERE City = ‘Beijing’
  在Persons表中搜索City列中为Beijing的记录,其中值为文本型则需要外加单引号,数值则不需要。
 
  【AND OR NOT】
  AND 和 OR 运算符用于多条件记录过滤,对于AND输出同时满足两个条件的记录,对于OR输出满足任意一个条件的记录。NOT操作符用于否定后面的条件,用在过滤的列前,一般位于WHERE之后。
  举例:
  SELECT * FROM Persons WHERE FirstName = ‘Lei’ AND LastName = ‘Li’
  在Persons表中查询姓为Li,名为Lei的记录。
  同时出现AND和OR可以使用括号,如下:
  SELECT * FROM Persons WHERE (FirstName = ‘Lei’ OR FirstName = ‘Dalei’) AND LastName = ‘Li’
  在Persons表中查询姓为Li,名为Lei或Dalei的记录。
 
  【ORDER BY】
 
  ORDER BY 语句用于根据指定的列对结果集进行排序,默认按升序对记录进行排序,如果需要按降序排序需要于最后使用DESC,指定按升序则用ASC。同时,ORDER BY可以针对多列进行排序,若排序第一列中有相同内容则该第二排序列进行排序。ORDER BY也可以不用列名,而用在SELECT中的相对列位置排序,如ORDER BY 2,3,然而,若有所更新很容易造成相对引用错误;
 
  举例:
  SELECT Company,OrderNumber FROM Orders ORDER BY Company
  SELECT Company,OrderNumber FROM Orders ORDER BY Company,OrderNumber
  SELECT Company,OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
 
  【INSERT INTO】
  Insert into语句用于向表格中插入新数据。
  语法一:INSERT INTO 表名 VALUES(值1,值2…)
  语法二:INSERT INTO 表名(列1,列2…) VALUES(值1,值2…)
 
  举例:
  INSERT INTO Persons VALUES(Lei,Li,Xinjiekou,Nanjing)
  INSERT INTO Persons(LastName,FirstName) VALUES(Lei,Li)
 
  【UPDATE】
  Update语句用于修改表中的数据,若同时修改多列以逗号隔开即可。
  语法:
  UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 检索列名
  举例:
  UPDATE Persons SET FirstName = ‘Lei’ WHERE LastName = ‘Li’
  UPDATE Persons SET Address = ‘Xinjiekou’, City = ‘Nanjing’ WHERE FirstName = ‘Lei’

 
  【DELETE FROM】
  Delete语句用于删除表中的行,若需要删除行则只需省略WHERE及之后的定位内容即可。
  语法:
  DELETE FROM 表名 WHERE 列名 = 值
  举例:
  DELETE FROM Persons WHERE LastName = ‘Lei’
  Persons表中,名为Lei的一行记录将被删除
  DELETE FROM 表名
  删除所有行但不删除表,这意味着表的结构、属性和索引是完整的。
 
  【TOP】
  TOP 子句用于规定要返回的记录的数目。
  SQL Server语法:SELECT TOP 数字/百分比列名 FROM 表名
  MySQL语法:SELECT 列名 FROM 表名 LIMIT 数字
  Oracle语法:SELECT 列名 FROM 表名 WHERE ROWNUM <= 数字
  举例:
  SELCET TOP 10 * FROM Persons
  SELECT TOP 50 PERCENT * FROM Persons
 
  【LIKE】
  LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,相当于字符串模糊匹配。也可用为否定匹配,只需在LIKE前加NOT即可。
  语法:SELECT 列名 FROM 表名 WHERE 列名 LIKE 匹配条件
  举例:
  SELECT * FROM Persons WHERE City LIKE ‘N%’选取城市列中以N开头的城市所在行
  SELECT * FROM Persons WHERE City LIKE ‘%g’选取城市列中以g为结尾的城市所在行
  SELECT * FROM Persons WHERE City NOT LIKE ‘%an%’选取城市中不包含an的城市所在行
 
  【通配符】
  % 表示一个或多个字符
  _ 表示一个字符
  [字符序列] 表示字符序列中的任意一个字符
  [^字符序列]或[!字符序列] 表示非字符序列中的任意一个字符
  举例:
  SELECT * FROM Persons WHERE LastName LIKE ‘H_a_g’
  选取姓氏列中以H开头然后任一字符再是a再任一字符最后以g结尾的姓氏所在行
  SELECT * FROM Persons WHERE LastName LIKE ‘[HL]’
  选取姓氏列中以H或L开头的姓氏所在行
 
  【IN】
  IN 操作符允许我们在 WHERE 子句中规定多个值,相当于=加OR。
  语法:SELECT 列名 FROM 表名 WHERE 列名 IN (值1,值2…)
  举例:SELECT * FROM Persons WHERE FirstName IN (‘Lei’,’Dalei’)
 
  【BETWEEN】
  操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期。需要注意的是,在不同数据库数据范围可能不同,有些不包含上下界,有些包含上下界,有些包含上界不包含下界。同样,也可以使用NOT操作符反向选择区域。
  语法:SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2
  举例:SELECT * FROM Persons WHERE LastName BETWEEN ‘Li’ AND ‘Zhang’
 
  【Aliases】
  Aliases可以为列名或表名指定别名(alias),别名有助于我们书写,列的别名在列后As跟别名,表的别名在表后跟AS别名。
  表别名语法:SELECT 列名 FROM 表名 AS 别名
  列别名语法:SELECT 列名 AS 别名 FROM 表名
  举例:
  SELECT p.FirstName,o.OrderID FROM Persons AS p, Order AS o WHERE p.FirstName = ‘Lei’
  SELECT FirstName AS Name,LastName AS Family FROM Persons
 
  【JOIN…ON】
  join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。数据库中的表可通过键将彼此联系起来,主键(Primary Key)是一个列,在某个表中这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
  举例:
  SELECT Persons.LastName, Persons.FirstName, Orders.OrderID FROM Persons, Orders WHERE Persons.ID_P=Orders.ID_p
  等价于:
  SELECT Persons.LastName, Persons.FirstName, Orders.OrderID FROM Persons INNER JOIN Orders ON Persons.ID_p=Orders.ID_p
  JOIN共有四种类型:
  JOIN: 只返回两表中均有匹配项的行,不返回左表或右表未匹配的行(INNER JOIN与JOIN是相同的);
  LEFT JOIN: 返回左表的所有行,即使在右表中没有匹配;
  RIGHT JOIN: 返回右表的所有行,即使在左表中没有匹配,某些数据库也称RIGHT OUTER JOIN;
  FULL JOIN:返回左表和右表的所有行,即使没有匹配,某些数据库也称FULL OUTER JOIN;
  INNER JOIN语法:SELECT 列名 FROM 左表名 INNER JOIN 右表名 ON 左列名=右列名
  LEFT JOIN语法:SELECT 列名 FROM 左表名 LEFT JOIN 右表名 ON 左列名=右列名
  RIGHT JOIN语法:SELECT 列名 FROM 左表名 RIGHT JOIN 右表名 ON 左列名=右列名
  FULL JOIN语法:SELECT 列名 FROM 左表名 FULL JOIN 右表名 ON 左列名=右列名
 
  【UNIO-N】
  UNIO-N 操作符用于合并两个或多个 SELECT 语句的结果集。UNIO-N 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。默认地,UNIO-N 操作符选取不同的值。如果允许重复的值,请使用 UNIO-N ALL。
  语法:SELECT 列名 FROM 表1 UNIO-N SELCET 列名 FROM表2
 
  【CREATE】
  CREATE DATABASE 用于创建数据库,CREATE TABLE 语句用于创建数据库中的表。
  语法:
  CREATE DATABASE 数据库名
  CREATE TABLE 表名
  (
  列名1 数据类型,
  列名2 数据类型,
  …
      )
 
  【数据类型】
   整数:integer(size)、int(size)、smallint(size)、tinyint(size),在括号内规定数字的最大位数。
  小数:decimal(size,d)、numeric(size,d),"size"规定数字的最大位数,"d" 规定小数点右侧的最大位数。
  字符:char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符),”size”规定字符串的长度。varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符),”size”规定字符串的最大长度。
  日期:date(yyyymmdd),容纳日期。
 
  【Constraints】
  约束用于限制加入表的数据的类型,可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后也可以(通过ALTER TABLE语句)。
  常见约束:
  NOT NULL:约束列不接受空值,字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
  UNIQUE:约 束唯一标识数据库表中的每条记录,UNIQUE和PRIMARY KEY约束均为列或列集合提供了唯一性的保证,PRIMARY KEY拥有自动定义的UNIQUE约束,每个表可以有多个 UNIQUE约束,但是每个表只能有一个PRIMARY KEY约束。在MySQL和SQL server、Oracle中位置不同,前者在最后定义,后者在所定义列定义。
  若需要命名约束及多列定义约束,可于最后使用语法:CONSTRAINT 约束名 UNIQUE (列名1,列名2…);
  若表已创建,需要添加约束条件,则可使用语法:ALTER TABLE 表名 ADD UNIQUE (列名);
  若表已创建,需要命名且给多列添加约束条件,则可使用语法:ALTER ATBLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名1,列名2…);
  若需撤销约束条件,对于MySQL可使用语法:ALTER TABLE 表名 DROP INDEX 约束名;对于Oracle等可使用语法:ALTER TABLE 表名 DROP CONSTRAINT 约束名;
  PRIMARY KEY:主 键必须包含唯一的值,主键列不能包含NULL值,每个表都应该有一个主键,并且每个表只能有一个主键。在创建表时,对于MySQL于列定义完的最后定义主 键,而其他可直接于定义列时定义。其命名及多列定义语法与UNIQUE一样,同样,添加主键ADD及撤销主键DROP规则与UNIQUE也一样。需要注意 的是在添加主键时,所添加列 在创建时需有NOT NULL定义。
  FOREIGN KEY:一 个表中的 FOREIGN KEY指向另一个表中的 PRIMARY KEY。创建表时,对于MySQL就于最后定义,而其他可直接于定义列时进行定义,语法:列名数据类型 FOREIGN KEY REFERENCES 表名(列名),见例三。同样,添加及撤销主键语法与UNIQUE一样。
 
  CHECK:用于限制列中的值的范围,限制条件可为数字范围或字符串等。如果对单个列定义 CHECK约束,那么该列只允许特定的值。如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。约束条件创建、添加、撤销与其他一样,多个约束条件可以用AND。
 
  DEFAULT:用于向列中插入默认值,如果没有规定其他的值,那么会将默认值添加到所有的新记录。Default默认值可以为数字或字符串,也可以是函数,如例五。添加和撤销default与其他约束条件不太一样。
 
  添加语法为:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 条件(另一个出现)SET的语法为UPDATE;
 
  撤销语法为:ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT;
 
  例一:
 
  CREATE TABLE Persons
 
  (
 
  Id_p int NOT NULL UNIQUE,
 
  LastName varchar(255),
 
  FirstName varchar(255)
 
  )
 
  例二:
 
  CREATE TABLE Persons
 
  (
 
  Id_p int NOT NULL PRIMARY KEY,
 
  LastName varchar(255),
 
  FirstName varchar(255)
 
  )
 
  例三:
 
  CREATE TABLE Orders
 
  (
 
  Id_o int NOT NULL PRIMARY KEY,
 
  Ordernum int NOT NULL,
 
  Id_p int FORIGN KEY REFERENCES Persons(Id_p)
 
  )
 
  例四:
 
  CREATE TABLE Persons
 
  (
 
  Id_P int NOT NULL,
 
  LastName varchar(255) NOT NULL,
 
  FirstName varchar(255),
 
  Address varchar(255),
 
  City varchar(255),
 
  CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Nanjing')
 
  )
 
  例五:
 
  CREATE TABLE Orders
 
  (
 
  Id_O int NOT NULL,
 
  OrderNo int NOT NULL,
 
  Id_P int,
 
  OrderDate date DEFAULT GETDATE()
 
  )
sql入门知识
 
  【CREATE INDEX】
 
  CREATE INDEX语句用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。用户无法看到索引,它们只能被用来加速搜索/查 询。更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创 建索引。
  若在INDEX前加UNIQUE则为创建一个唯一的索引,唯一的索引意味着两个行不能拥有相同的索引值;
  创建索引时也可以以降序或升序索引某个列的词,只需要在列名后加DESC或ASC即可;
  若需要索引不只一列,也可以在括号中添加多列,各列之间只需要以逗号隔开即可;
  语法:CREATE INDEX 索引名 ON 表名(列名)
  举例:
  CREATE INDEX PersonIndex
  ON Persons (LastName, FirstName)
 
  【DROP】
  DROP 语句可以用来删除数据库、数据表和索引,不同数据库中索引删除语法不同,数据库及数据表删除语法分别为:DROP DATABASE 数据库名、DROP TABLE 表名。若需要仅清除数据表内的数据,但不删除表本身可以使用TRUNCATE命令,语法为:TRUNCATE TABLE 表名。
 
  【ALTER】
  ALTER TABLE 语句用于在已有的表中添加、修改或删除列(DELETE用于处理行),在条件约束CONSTRAINS时也常用到。
  语法:
  ALTER TABLE 表名 ADD 列名数据类型
  ALTER TABLE 表名 DROP COLUMN 列名
  ALTER TABLE 表名 ALTER COLUMN 列名数据类型
 
  【AUTO_INCREMENT】
 
  Auto_increment 会在新记录插入表中时生成一个唯一的数字,在不同的数据库中语法不太相同。默认初始值为1,增幅为1,不同语法中通过不同代码可以进行设置。
 
  【函数】
 
  函 数的基本类型可分为两种,Aggregate Functions和Scalar Functions。Aggregate函数操作面向一系列值,返回一个单一值;Scalar函数面向单一的某个值,并返回一个单一值。函数使用的一般语 法为:SELECT 函数名(列) FROM 表名。同时函数还可以单纯被作为值引用在命令中,见例二。
 
  【AVG】
  AVG(average)函数返回数值列的平均值,NULL 值不包括在计算中。
  语法:SELECT AVG(列名) FROM 表名
  例一:SELECT AVG(Price) AS Averageprice FROM Orders ‘在这里AS引起别名
  例二:SELECT Customer FROM Orders
  WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
 
  【COUNT】
  COUNT()函数返回匹配指定条件的行数,NULL不计入。COUNT可以跟DISTINCT结合返回唯一不重复行数,可以跟WHERE定位返回行数。
  语法:SELECT COUNT(列名) FROM 表名
  例一:SELECT COUNT(Customer) AS times FROM Orders WHERE FirstName = ‘Lei’
  例二:SELECT COUNT(*) AS Total FROM Orders
  例三:SELECT COUNT(DISTINCT Customer) AS Uniquecustomer FROM Orders
 
  【FIRST/LAST】
  FIRST()函数返回指定的字段中第一个记录的值,可使用ORDER BY语句对记录进行排序,Last函数与FIRST基本一致。
  语法:SELECT FIRST(列名) FROM 表名
  举例:SELECT FIRST(Customer) AS FirstCustomer FROM Orders
 
  【MAX/MIN】
  MAX函数返回一列中的最大值,MIN函数返回一列中的最小值,NULL值不包括在计算中。
  语法:SELECT MAX(列名) FROM 表名
  举例:SELECT MAX(Price) AS maxprice FROM Orders
 
  【SUM】
  SUM函数返回数值列的和。
  语法:SELECT SUM(列名) FROM 表名
 
  【GROUP BY】
  分 组充许把数据分为多个逻辑组,以便能对每个组进行聚集计算,分组是在SELECT语句的GROUP BY子句中建立的。数据分组是按照逻辑次序把具有重复值的字段进行合并,主要与汇总函数配合使用,如SUM、AVG、MAX、MIN、和COUNT。 GROUP BY的本质与ORDER BY类似,也是对查询结果进行逻辑上的分组排序。GROUP BY子句在WHERE子句之后,ORDER BY之前。注,若分组中有NULL值,则NULL将作为一个分组返回,如果列中有多行NULL值,它们将分为一级。
  举例:SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer
  若无GROUP BY则会出现每个Customer行后都跟一个SUM结果,出现多个重复行。
 
  【HAVING】
  WHERE 子句无法与合计函数一起使用,而HAVING可在合计函数出现时起到定位作用。HAVING对于GROUP BY的作用就相当于WHERE对于SELECT的作用,WHERE子句设定被选择的字段的条件,而HAVING子句设置GROUP BY子句形成分组的条件。WHERE在分组前进行过滤,HAVING在分组后进行过滤。
  举例:SELECT Customer,SUM(OrderPrice) FROM Orders
  GROUP BY Customer
  HAVING SUM(OrderPrice)<2000
 
  【UCASE/LCASE】
  UCASE(uppercase)将列字段转换为大写,LCASE(lower case)将列字段转换为小写。
  语法:SELECT UCASE(列名) FROM 表名
 
  【MID】
  MID函数用于从文本段中提取字符。
  语法:SELECT MID(列名,起始字符,[截取长度]) FROM 表名
  起始字符为MID函数开始截取的位置,截取长度为所要返回的字符数,若省略,则MID函数返回剩余所有文本。
  举例:SELECT MID(LastName,1,1) AS Letter FROM Persons
 
  【LEN】
  LEN函数返回文本字段中值的长度。
  语法:SELECT LEN(列名) FROM 表名
  举例:SELECT LEN(City) AS lengthofcity FROM Persons
 
  【ROUND】 
  ROUND函数用于把数值字段舍入为指定的小数位数。 
  语法:SELECT ROUND(列名,小数位) FROM 表名
  举例:SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
 
  【NOW】
  NOW函数返回当前的日期和时间,Sql Server数据库,使用 getdate() 函数来获得当前的日期时间。
  语法:SELECT NOW() FROM 表名
  举例:SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
 
  【FORMAT】
  FORMAT 函数用于对字段的显示进行格式化。
  语法:SELECT FORMAT(column_name,format) FROM table_name
 
  【增加SQL可读性】
  虽然提高SQL的可读性并不会改善性能,但这有利于后期修改和调整。
  每个子句都以新行开始,如FROM、WHERE、ORDER BY等;
  语句中使用多个表时,使用表别名;
  用统一的方式使用制表符和空格;
  语句过长时换行;
  SELECT多字段时让每个字段都以新行形式出现;
  FROM中使用多个表时每个表以新行形式出现;
  WHERE条件多个时每个条件以新行形式出现;
 
  【提高SQL语句的性能】
  FROM子句中使用多个表时,把较小的表列放在前面,较大的表列放在后面会提升性能;
  WHERE条件中,较小的表放在左侧,而较大的表放在右侧,一般基表在右侧;
  WHERE子句中顺序影响性能,子句返回记录较少的就放在最后;
  索引的使用,在没有索引时SQL语句会发生全表扫描进而降低速度,大规模表应避免全表扫描,而小型表则可以删除索引以释放空间,一般被作为索引的数据有:主键字段、外键字段、结合表中常用字段、查询中常用条件字段、大部分值唯一字段;
  其他性能优化,使用LIKE操作符和通配符、避免使用OR操作符(可使用IN)、避免HAVING子句、避免大规模排序操作(排序操作会保存到内存或磁盘中从而影响效率)、使用存储过程;
点击次数:       打印此页  关闭