SQL笔记

来源:互联网 发布:编程 网页开发 编辑:程序博客网 时间:2024/06/08 17:38

REFERENCE:http://www.w3school.com.cn/sql/index.asp

SQL简介

SQL定义

1.结构化查询语言

2.使我们有能力访问数据库

3.是一种ANSI的标准计算机语言

SQL操作

1.查询  2.取数  3.插值  4.更新  5.删除  6.创建  7.设限

SQL基础

RDBMS(关系型数据管理S系统):MS SQL ServerIBM DB2OracleMy SQLMicrosoft Access

SQL语法

创建  CREATE

1.创建数据库

CREATE DATABASE databae_name

2.创建数据库中的表

CREATE TABLE table name

(column_name1 dtype,

 column_name2 dtype,

 column_name3 dtype,

 …

)

3.创建索引

允许重复:

CREATE INDEX index_name

ON table_name(column_name)

唯一索引(在INDEX前加UNIQUE):

CREATE UNIQUE INDEX index_name

ON table_name(column_name DESC)

4.创建视图

CREAT VIEW view_name AS

SELECT column_name(s) FROM table_name

WHERE condition

撤销  DROP

1.撤销数据库

DROP DATABASE database_name

2.撤销表:

DROP TABLE table_name

3.撤销索引:

—Microsoft SQLJet&Microsoft Access:

DROP INDEX index_name ON table_name

—MS SQL Server:

DROP INDEX table_name.index_name

—IBM DB2&Oracle:

DROP INDEX index_name

—MySQL:

ALTER TABLE table_name

DROP INDEX index_name

4.撤销视图

DROP VIEW view_name

约束  CONSTRAINTS

NOT NULL  强制字段始终包含值

UNIQUE  保证集合唯一性

PRIMARY KEY  主键

FOREIGN KEY  外键

CHECK  限制列中值范围

DEFAULT  向列中插入默认值

修改  ALTER

1.添列 

ALTER TABLE table_name

ADD column_name datatype 

2.删列  

ALTER TABLE table_name

DROP COLUMN column_name

(注释:某些数据库系统不允许这种在数据库表中删除列的方式(DROP COLUMN column_name。)

3.改变列中数据类型

ALTER TABLE table_name

ALTER COLUMN column_name datatype)

AUTO INCREMENT 字段

—MySQL

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

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

要让 AUTO_INCREMENT序列以其他的值起始,请使用下列 SQL语法:

ALTER TABLE Persons AUTO_INCREMENT=100

—SQL Server

CREATE TABLE Persons

(

P_Id int PRIMARY KEY IDENTITY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

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

要规定 "P_Id"列以 20起始且递增 10,请把 identity改为 IDENTITY(20,10))

Access

CREATE TABLE Persons

(

P_Id int PRIMARY KEY AUTOINCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

Oracle

CREATE SEQUENCE seq_person

MINVALUE 1

START WITH 1

INCREMENT BY 1

CACHE 10


INSERT INTO Persons (P_Id,FirstName,LastName)

VALUES (seq_person.nextval,'Lars','Monsen')

操作  OPERATION

表内操作

1.取数  SELECT WHERE

前句:

SELECT */column_name(s)/DISTINCT column_name(s) FROM TABLE  

SELECT TOP 2* FROM table_name    

SELECT TOP 50 PERCENT* FROM table_name    

SELECT column_names FROM table_name AS alias_name    表别名

SELECT column_names AS alias_name FROM table_name    列别名

后句:

WHERE column_name operation value 

WHERE column_name LIKE/NOT LIKE pattern

WHERE column_name IN (value1,value2,)

WHERE column_name BETWEEN value1 and value2

(重要事项:不同的数据库对 BETWEEN...AND操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" "Carter" 之间的人,但不包括 "Adams" "Carter";某些数据库会列出介于 "Adams" "Carter"之间并包括 "Adams" "Carter"的人;而另一些数据库会列出介于 "Adams" "Carter"之间的人,包括 "Adams",但不包括 "Carter"。)

ORDER BY column_name DESC/ASC(默认)   排序

2.插值  INSERT INTO

INSERT INTO table_name(column_name1,column_name2,) VALUES(value1,value2,)

3.更新  UPDATE

更新表内数据:

UPDATE tabel_name 

SET new_column_name=new_value 

WHERE column_name=value

4.删除  DELETE/TRUNCATE

DELETE FROM table_name WHERE column_name=value

删除表内所有数据:

DELETE FROM table_name 

DELETE * FROM table_name 

TRUNCATE TABLE table_name


表间操作

1.查询(键匹配) INNER JOIN=JOIN/LEFT JOIN/RIGHT JOIN/FULL JOIN

SELECT table_name1.column_name(s),table_name2.column_name(s)  

FROM table_name1 

INNER JOIN table_name2 

ON table1_name1.column_name=table_name2.column_name

(注释:在某些数据库中, RIGHT JOIN称为 LEFT/RIGHT/FRLL OUTER JOIN。)

2.合并(竖向)  UNION/UNION ALL

SELECT column_name(s) FROM table_name1 

UNION 

SELECT column_name(s) FROM table_name2

(注释:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。)

3.备份  SELECT INTO

SELECT */column_name(s)

INTO new_table_name [IN external database]

FROM old_table_name

SQL函数

SELECT FUNCTION(column_name) FROM table_name

Aggregate functions(parts)

1.AVG()
2.COUNT()
3.FIRST()
4.LAST()
5.MAX()
6.MIN()
7.SUM()

Scalar functions(parts)

1.UCASE()
2.LCASE()
3.LEN()
4.ROUND(column_name,decimals)
5.NOW()
6.MID(column_name,start,length)
7.FORMAT(column_name,format)

Others

1.GROUP BY

用于结合合计函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

2.HAVING

SQL中增加 HAVING子句原因是,WHERE关键字无法与合计函数一起使用。

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING aggregate_function(column_name) operator value

3.NULL

将NULL返零值:

—SQL Server,MS Access

ISNULL(column_name,0)

—Oracle

NVL(column_name,0)

—MySQL

IFNULL(column_name,0)/COALESCE(column_name,0)

4.各种DATE函数(略)


附:

1.SQL数据类型(略)

2.通配符(pattern):

%    替代一个或多个字符

-      仅替代一个字符

[charlist]    字符列中的任何单一字符

[^charlist] or [!charlist]    不在字符列中的任何单一字符



原创粉丝点击