sql基本概念与语法(摘自w3school)

1、SQL DML 和 DDLmysql

能够把 SQL 分为两个部分:数据操做语言 (DML) 和 数据定义语言 (DDL)SQL (结构化查询语言)是用于执行查询的语法。可是 SQL 语言也包含用于更新、插入和删除记录的语法。sql

查询和更新指令构成了 SQL 的 DML 部分:数据库

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使咱们有能力建立或删除表格。咱们也能够定义索引(键),规定表之间的连接,以及施加表间的约束。函数

SQL 中最重要的 DDL 语句:spa

  • CREATE DATABASE - 建立新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 建立新表
  • ALTER TABLE - 变动(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 建立索引(搜索键)
  • DROP INDEX - 删除索引

 

2、select语句orm

SELECT 列名称 FROM 表名称                           --*表示全部排序

SELECT DISTINCT 列名称 FROM 表名称               --去掉重复索引

 

3、where子句ci

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值字符串

下面的运算符可在 WHERE 子句中使用:

操做符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

注释:在某些版本的 SQL 中,操做符 <> 能够写为 !=

 

4、oderby 子句

ORDER BY 语句用于对结果集进行排序。

DESC 降序  ASC 升序

 

5、insert语句

INSERT INTO 表名称 VALUES (1, 2,....)

 

6、update语句

UPDATE 表名称 SET 列名称 新值 WHERE 列名称 某值

 

7、delete语句

DELETE FROM 表名称 WHERE 列名称 

 

8、Top子句

SELECT TOP number|percent column_name(s)

FROM table_name

 

9、like操做符

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern

SQL 通配符必须与 LIKE 运算符一块儿使用。

在 SQL 中,可以使用如下通配符:

通配符

描述

%

替代一个或多个字符

_

仅替代一个字符

[charlist]

字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

 

10、in 操做符

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

 

11、between 操做符

SELECT column_name(s)

FROM table_name

WHERE column_name

BETWEEN value1 AND value2

如需使用上面的例子显示范围以外的人,请使用 NOT 操做符

 

12、Join

  • JOIN: 若是表中有至少一个匹配,则返回行
  • LEFT JOIN: 即便右表中没有匹配,也从左表返回全部的行
  • RIGHT JOIN: 即便左表中没有匹配,也从右表返回全部的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons, Orders

WHERE Persons.Id_P = Orders.Id_P

 

十3、inner join

SELECT column_name(s)

FROM table_name1

INNER JOIN table_name2 

ON table_name1.column_name=table_name2.column_name

注释:INNER JOIN 与 JOIN 是相同的。

 

十4、left join

SELECT column_name(s)

FROM table_name1

LEFT JOIN table_name2 

ON table_name1.column_name=table_name2.column_name

原始的表 (用在例子中的)

"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

左链接(LEFT JOIN)实例

如今,咱们但愿列出全部的人,以及他们的定购 若是有的话。

您可使用下面的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

LEFT JOIN Orders

ON Persons.Id_P=Orders.Id_O

ORDER BY Persons.LastName

结果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

Bush

George

 

LEFT JOIN 关键字会从左表 (Persons) 那里返回全部的行,即便在右表 (Orders) 中没有匹配的行。

 

十5、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

全链接(FULL JOIN)实例

如今,咱们但愿列出全部的人,以及他们的定单,以及全部的定单,以及定购它们的人。

您可使用下面的 SELECT 语句:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

FULL 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

Bush

George

 

 

 

34764

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回全部的行。若是 "Persons" 中的行在表 "Orders" 中没有匹配,或者若是 "Orders" 中的行在表 "Persons" 中没有匹配,这些行一样会列出。

十7、Union操做符

SQL UNION 语法

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2

注释:默认地,UNION 操做符选取不一样的值。若是容许重复的值,请使用 UNION ALL

SQL UNION ALL 语法

SELECT column_name(s) FROM table_name1

UNION ALL

SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名老是等于 UNION 中第一个 SELECT 语句中的列名。

下面的例子中使用的原始表:

Employees_China:

E_ID

E_Name

01

Zhang, Hua

02

Wang, Wei

03

Carter, Thomas

04

Yang, Ming

Employees_USA:

E_ID

E_Name

01

Adams, John

02

Bush, George

03

Carter, Thomas

04

Gates, Bill

使用 UNION 命令

实例

列出全部在中国和美国的不一样的雇员名:

SELECT E_Name FROM Employees_China

UNION

SELECT E_Name FROM Employees_USA

 

结果

E_Name

Zhang, Hua

Wang, Wei

Carter, Thomas

Yang, Ming

Adams, John

Bush, George

Gates, Bill

注释:这个命令没法列出在中国和美国的全部雇员。在上面的例子中,咱们有两个名字相同的雇员,他们当中只有一我的被列出来了。UNION 命令只会选取不一样的值。

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出全部的值。

实例:

列出在中国和美国的全部的雇员:

SELECT E_Name FROM Employees_China

UNION ALL

SELECT E_Name FROM Employees_USA

结果

E_Name

Zhang, Hua

Wang, Wei

Carter, Thomas

Yang, Ming

Adams, John

Bush, George

Carter, Thomas

Gates, Bill

 

十8、select into 语句

SELECT INTO 语句从一个表中选取数据,而后把数据插入另外一个表中。

SELECT INTO 语句经常使用于建立表的备份复件或者用于对记录进行存档。

您能够把全部的列插入新表:

SELECT *

INTO new_table_name [IN externaldatabase] 

FROM old_tablename

 

或者只把但愿的列插入新表:

SELECT column_name(s)

INTO new_table_name [IN externaldatabase] 

FROM old_tablename

 

十9、create table

数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最经常使用的数据类型:

数据类型

描述

 integer(size)

 int(size)

 smallint(size)

 tinyint(size)

 

仅容纳整数。在括号内规定数字的最大位数。

 decimal(size,d)

 numeric(size,d)

 

容纳带有小数的数字。

"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

char(size)

容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。

varchar(size)

容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。

date(yyyymmdd)

容纳日期。

 

二10、sql 约束

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

二11、foreign key

FOREIGN KEY 约束用于预防破坏表之间链接的动做。

FOREIGN KEY 约束也能防止非法数据插入外键列,由于它必须是它指向的那个表中的值之一

CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

Id_P int FOREIGN KEY REFERENCES Persons(Id_P)

)

二12、check 约束

若是对单个列定义 CHECK 约束,那么该列只容许特定的值。

若是对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

二十3、default 约束

CREATE TABLE Persons

(

Id_P int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255) DEFAULT 'Sandnes'

)

 

二十4、create index 索引

您能够在表中建立索引,以便更加快速高效地查询数据。

用户没法看到索引,它们只能被用来加速搜索/查询。

CREATE INDEX PersonIndex

ON Person (LastName DESC)

 

二十5、alter

ALTER TABLE table_name

ADD column_name datatype

ALTER TABLE table_name 

DROP COLUMN column_name

ALTER TABLE table_name

ALTER COLUMN column_name datatype

 

二十6、AUTO INCREMENT 字段

默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1

ALTER TABLE Persons AUTO_INCREMENT=100

 

二十7、create view

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

 

SQL 更新视图

您可使用下面的语法来更新视图:

SQL CREATE OR REPLACE VIEW Syntax

CREATE OR REPLACE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

SQL 撤销视图

您能够经过 DROP VIEW 命令来删除视图。

SQL DROP VIEW Syntax

DROP VIEW view_name

 

二十8、sql 日期

MySQL Date 函数

下面的表格列出了 MySQL 中最重要的内建日期函数:

函数

描述

NOW()

返回当前的日期和时间

CURDATE()

返回当前的日期

CURTIME()

返回当前的时间

DATE()

提取日期或日期/时间表达式的日期部分

EXTRACT()

返回日期/时间按的单独部分

DATE_ADD()

给日期添加指定的时间间隔

DATE_SUB()

从日期减去指定的时间间隔

DATEDIFF()

返回两个日期之间的天数

DATE_FORMAT()

用不一样的格式显示日期/时间

 

SQL Server Date 函数

下面的表格列出了 SQL Server 中最重要的内建日期函数:

函数

描述

GETDATE()

返回当前日期和时间

DATEPART()

返回日期/时间的单独部分

DATEADD()

在日期中添加或减去指定的时间间隔

DATEDIFF()

返回两个日期之间的时间

CONVERT()

用不一样的格式显示日期/时间

SQL Date 数据类型

MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
  • YEAR - 格式 YYYY 或 YY

SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式惟一的数字

二十9、数据类型

不一样数据的区别  (***********************

 

三10、函数

在 SQL Server 中的合计函数

函数

描述

AVG(column)

返回某列的平均值

BINARY_CHECKSUM

 

CHECKSUM

 

CHECKSUM_AGG

 

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数

COUNT(DISTINCT column)

返回相异结果的数目

FIRST(column)

返回在指定的域中第一个记录的值(SQLServer2000 不支持)

LAST(column)

返回在指定的域中最后一个记录的值(SQLServer2000 不支持)

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

相关文章
相关标签/搜索