---------------------------------------------------------------------SQL
structured query language. ANSI (American National Standards Institute) standard.
功能如下:
- 对一个数据库进行查询
- 从数据库中抓取数据
- 在数据库中插入record
- 在数据库更新record
- 从数据库中删除record
- 创建新的database
- 在数据库中创建新的table
- 在数据库中创建存储的过程(procedure)
- 在数据库中创造view
- 可以对tables, procedures和views设置权限。
以下是建立一个网站的必须:
- An RDBMS database program (i.e. MS Access, SQL Server, MySQL)-》Relational Database Management System. 其中存储的数据对象叫做tables,然table的话是相关的数据入口的集合,其中包括了行和列。
- A server-side scripting language, like PHP or ASP
- SQL
- HTML / CSS
2 SQL的语法
数据库的table
tables 包含了带着数据的records(rows)
SQL 声明
SELECT * FROM Persons 将会吧Persons table中所有的records都选中,声明大小写无所谓
SQL的 Data Manupulation language(DML)和Data Definition Language(DDL)
Query and updata part from DML
SELECT - 从数据库中取数据
UPDATA - 往数据库里更新数据
DELETE - 从数据库中删除数据
INSERT INTO - 往数据库中插入新的数据
DDL部分主要是允许数据库的tables被建立或删除,它也会定义索引(keys),指定tables之间的联系,以及在table之间增加限制
CREATE DATABASE - 建立新的数据库
ALTER DATABASE - 修改一个数据库
CREATE TABLE - 建立一个新的table
ALTER TABLE
CREATE INDEX - 建立一个index key(搜索用)
DROP INDEX - 删除一个index
DROP TABLE table_name 删除一个table
TRUNCATE TABLE table_name 删除table中的内容,但是保留table本身。
SQL SELECT 声明
SELECT column_name(s) FROM table_name
SELECT * FROM table_name 全选
内容存储到result_set中
在result_set中的导航
属于php的内容了
SQL SELECT DISTINCT 声明
在一个table里面,有时候可能不同的行有相同的列值,当只想返回不同的值的时候(同一列里面相同的值只返回一次)
SELECT DISTINCT column_name(s) FROM table_name
SQL WHERE 子句(clause)
用来提取那些只满足特定条件的records
SELECT column_name(s) FROM table_name WHERE column_name operator value
字符 value的周围要加上单引号来表示引用,数字value则不用加
以下符号被允许:= <> > < >= <= BETWEEN(在特定区域之间) LIKE(搜索一个模式) IN(对一个列指定多个可能的值) 是否在其中吧
SQL AND & OR 操作符
SQL ORDER BY 关键字
用来给result_set 也就是返回的结果排序
SELECT column_name(s) FROM table_name ORDERED BY column_name(s) ASC|DESC
默认排列是升序 DESC是降序
SQL INSERT INTO声明
用来往table里面加入record(也就是一行)
两种写法
INSERT INTO table_name VALUES(value1,value2,value3,...)
INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...)
SQL UPDATE 声明
用来更新table里的record
UPDATA table_name SET column1=value, column2=value2,.. WHERE some_column=some_value (后面的这个还是用作筛选条件,然后再用set进行相应的设置,一定要保证这个筛选条件可以精确的找到一条record)
SQL DELETE 声明
DELETE FROM table_name WHERE some_column = some_value
全部删除的时候 DELETE FROM table_name 或者 DELETE * FROM table_name
SQL TOP 子句
规定返回的records数量
SELECT TOP number|percent column_name(s) FROM table_name
SELECT TOP 50 PERCENT * FROM Persons
Could be a number or a percentage
SQL LIKE 操作符
主要是用在WHERE里寻找特定的模式
% 符号可被用来定义通配符(模式中缺少的字母),可在字母前,也可在字母后。
同时也存在 NOT LIKE操作符
SELECT * FROM Customers
WHERE Country LIKE '%land%';
SQL 通配符
在数据库中搜索数据的时候可以用来替代一个或多个字母
% 代替零个或多个字母
_ 代替一个字母
[charlist] charlist中的任何单个字符
[^charlist] 任何不在charlist中的字符 or [!charlist]
SELECT * FROM Persons WHERE LastName LIKE '[!bsp]%'
SQL IN 操作符 和 BETWEEN 操作符
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
SQL Alias 别名
别名可以被给到一个table或者一个列
SELECT column_name(s) FROM table_name AS alias_name
SELECT column_name AS alias_name FROM table_name
一般用于column_name太长的时候。
SQL Joins
从两个或多个table中查询数据。
JOIN;LEFT JOIN;RIGHT JOIN;FULL JOIN
找到两个TABLE中的交叉部分,加以展示。
SQL UNION
结合两个或多个SELECT命令返回的结果。
默认只结合唯一的值,如果有想要重复就UNION ALL
SQL SELECT INTO
通常用于建立Table的备份。
SELECT * INTO Persons_Backup FROM Persons
SQL Constraints
限制进入到TABLE内的数据类型,可以在CREATE的时候定义,也可以在Alter的时候定义
:NOT NULL
:UNIQUE
:PRIMARY KEY
: FOREIGN KEY
: CHECK 限制值的范围CHECK (P_Id>0)
: DEFAULT DEFAULT 'Sandnes'要是没值插入,就用这个默认值。
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL ALTER
可以add delete和modify
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
SELECT COUNTS(*) FROM Persons获得Table中的行数
structured query language. ANSI (American National Standards Institute) standard.
功能如下:
- 对一个数据库进行查询
- 从数据库中抓取数据
- 在数据库中插入record
- 在数据库更新record
- 从数据库中删除record
- 创建新的database
- 在数据库中创建新的table
- 在数据库中创建存储的过程(procedure)
- 在数据库中创造view
- 可以对tables, procedures和views设置权限。
以下是建立一个网站的必须:
- An RDBMS database program (i.e. MS Access, SQL Server, MySQL)-》Relational Database Management System. 其中存储的数据对象叫做tables,然table的话是相关的数据入口的集合,其中包括了行和列。
- A server-side scripting language, like PHP or ASP
- SQL
- HTML / CSS
2 SQL的语法
数据库的table
tables 包含了带着数据的records(rows)
SQL 声明
SELECT * FROM Persons 将会吧Persons table中所有的records都选中,声明大小写无所谓
SQL的 Data Manupulation language(DML)和Data Definition Language(DDL)
Query and updata part from DML
SELECT - 从数据库中取数据
UPDATA - 往数据库里更新数据
DELETE - 从数据库中删除数据
INSERT INTO - 往数据库中插入新的数据
DDL部分主要是允许数据库的tables被建立或删除,它也会定义索引(keys),指定tables之间的联系,以及在table之间增加限制
CREATE DATABASE - 建立新的数据库
ALTER DATABASE - 修改一个数据库
CREATE TABLE - 建立一个新的table
ALTER TABLE
CREATE INDEX - 建立一个index key(搜索用)
DROP INDEX - 删除一个index
DROP TABLE table_name 删除一个table
TRUNCATE TABLE table_name 删除table中的内容,但是保留table本身。
SQL SELECT 声明
SELECT column_name(s) FROM table_name
SELECT * FROM table_name 全选
内容存储到result_set中
在result_set中的导航
属于php的内容了
SQL SELECT DISTINCT 声明
在一个table里面,有时候可能不同的行有相同的列值,当只想返回不同的值的时候(同一列里面相同的值只返回一次)
SELECT DISTINCT column_name(s) FROM table_name
SQL WHERE 子句(clause)
用来提取那些只满足特定条件的records
SELECT column_name(s) FROM table_name WHERE column_name operator value
字符 value的周围要加上单引号来表示引用,数字value则不用加
以下符号被允许:= <> > < >= <= BETWEEN(在特定区域之间) LIKE(搜索一个模式) IN(对一个列指定多个可能的值) 是否在其中吧
SQL AND & OR 操作符
SQL ORDER BY 关键字
用来给result_set 也就是返回的结果排序
SELECT column_name(s) FROM table_name ORDERED BY column_name(s) ASC|DESC
默认排列是升序 DESC是降序
SQL INSERT INTO声明
用来往table里面加入record(也就是一行)
两种写法
INSERT INTO table_name VALUES(value1,value2,value3,...)
INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...)
SQL UPDATE 声明
用来更新table里的record
UPDATA table_name SET column1=value, column2=value2,.. WHERE some_column=some_value (后面的这个还是用作筛选条件,然后再用set进行相应的设置,一定要保证这个筛选条件可以精确的找到一条record)
SQL DELETE 声明
DELETE FROM table_name WHERE some_column = some_value
全部删除的时候 DELETE FROM table_name 或者 DELETE * FROM table_name
SQL TOP 子句
规定返回的records数量
SELECT TOP number|percent column_name(s) FROM table_name
SELECT TOP 50 PERCENT * FROM Persons
Could be a number or a percentage
SQL LIKE 操作符
主要是用在WHERE里寻找特定的模式
% 符号可被用来定义通配符(模式中缺少的字母),可在字母前,也可在字母后。
同时也存在 NOT LIKE操作符
SELECT * FROM Customers
WHERE Country LIKE '%land%';
SQL 通配符
在数据库中搜索数据的时候可以用来替代一个或多个字母
% 代替零个或多个字母
_ 代替一个字母
[charlist] charlist中的任何单个字符
[^charlist] 任何不在charlist中的字符 or [!charlist]
SELECT * FROM Persons WHERE LastName LIKE '[!bsp]%'
SQL IN 操作符 和 BETWEEN 操作符
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
SQL Alias 别名
别名可以被给到一个table或者一个列
SELECT column_name(s) FROM table_name AS alias_name
SELECT column_name AS alias_name FROM table_name
一般用于column_name太长的时候。
SQL Joins
从两个或多个table中查询数据。
JOIN;LEFT JOIN;RIGHT JOIN;FULL JOIN
找到两个TABLE中的交叉部分,加以展示。
SQL UNION
结合两个或多个SELECT命令返回的结果。
默认只结合唯一的值,如果有想要重复就UNION ALL
SQL SELECT INTO
通常用于建立Table的备份。
SELECT * INTO Persons_Backup FROM Persons
SQL Constraints
限制进入到TABLE内的数据类型,可以在CREATE的时候定义,也可以在Alter的时候定义
:NOT NULL
:UNIQUE
:PRIMARY KEY
: FOREIGN KEY
: CHECK 限制值的范围CHECK (P_Id>0)
: DEFAULT DEFAULT 'Sandnes'要是没值插入,就用这个默认值。
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL ALTER
可以add delete和modify
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
SELECT COUNTS(*) FROM Persons获得Table中的行数