SQL基本语法(二)

2015-03-04 17:08:06 · 作者: · 浏览: 175
不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。
*/
-----SQL Concatenate
/*有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:

MySQL: CONCAT( )
Oracle: CONCAT( ), ||
SQL Server: +
CONCAT( ) 的语法如下:
CONCAT (字串1, 字串2, 字串3, ...)
将字串1、字串2、字串3,等字串连在一起。请注意,Oracle 的 CONCAT( ) 只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用 '||' 来一次串连多个字串。

*/
select Test2_outjoin.City_in_Where+''+Test2_outjoin.City as '测试Concatenate' from Test2_outjoin

\
----SubString
/*SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:

MySQL: SUBSTR( ), SUBSTRING( )
Oracle: SUBSTR( )
SQL Server: SUBSTRING( )
最常用到的方式如下 (在这里我们用 SUBSTR( ) 为例):
SUBSTR (str, pos)
中,选出所有从第 位置开始的字元。请注意,这个语法不适用于 SQL Server 上。
SUBSTR (str, pos, len)
中的第 位置开始,选出接下去的 个字元。

*/
--------------------Trim
/*
SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:

MySQL: TRIM( ), RTRIM( ), LTRIM( )
Oracle: RTRIM( ), LTRIM( )
SQL Server: RTRIM( ), LTRIM( )


各种 trim 函数的语法如下:
TRIM ( [ [位置] [要移除的字串] FROM ] 字串): [位置] 的可能值为 LEADING (起头), TRAILING (结尾), or BOTH (起头及结尾)。 这个函数将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。
LTRIM(字串): 将所有字串起头的空白移除。
RTRIM(字串): 将所有字串结尾的空白移除。

*/

---------------------视图 view
---以现有表(StudentInfo)创建视图
create view V_Student
as select name,Chinese,Math,English from StudentInfo
select * from V_Student
-----建立索引 在StudentInfo 表的name栏位建立索引
create index index_name_Studentinfo on Studentinfo(name)
------------------AlTER TABLER 改变表结构
/*
ALTER TABLE 的语法如下:
ALTER TABLE "table_name"
[改变方式];
?加一个栏位: ADD "栏位 1" "栏位 1 资料种类"
?删去一个栏位: DROP "栏位 1"
?改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类"
?改变栏位的资料种类: MODIFY "栏位 1" "新资料种类"

*/
---增加一列
Alter table StudentInfo add 备注 nvarchar(20)
-----改变列名(SQL server 请用 sp_rename存储过程详细使用请查资料
exec sp_rename 'StudentInfo.name','姓名','COLUMN'
------------------------建立表格主键
/*

主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键 (Composite Key)。

主键可以在建置新表格时设定 (运用 CREATE TABLE 语句),或是以改变现有的表格架构方式设定 (运用 ALTER TABLE)。

以下举几个在建置新表格时设定主键的方式:
?

[MySQL: ]
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));

[Oracle: ]
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

[SQL Server: ]
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

以下则是以改变现有表格架构来设定主键的方式:

[MySQL:]
ALTER TABLE Customer ADD PRIMARY KEY (SID);
[Oracle:]
ALTER TABLE Customer ADD PRIMARY KEY (SID);
[SQL Server:]
ALTER TABLE Customer ADD PRIMARY KEY (SID);


请注意,在用 ALTER TABLE 语句来添加主键之前,我们需要确认被用来当做主键的栏位是设定为 『NOT NULL』 ;也就是说,那个栏位一定不能没有资料。
?

*/
------------------------------------------删除表中的全部资料TRUNCATE TABLE 指令
truncate table PersonInfo
select * from PersonInfo
go
----------------------------------------数据的插入 insert into
----操作形式一:INSERT INTO "表格名" ("栏位1", "栏位2", ...)VALUES ("值1", "值2", ...);
----操作形式二:INSERT INTO "表格1" ("栏位1", "栏位2", ...)SELECT "栏位3", "栏位4", ...FROM "表格2";
-----------------------------------------修改表格中的值 UPDATE
-----语法为:UPDATE "表格名"SET "栏位1" = [新值]WHERE "条件"; 同时修改几个栏位:UPDATE "表格"SET "栏位1" = [值1], "栏位2" = [值2]WHERE "条件";
----------------------------------------直接数据库中的部分