一、create table 数据表是数据库中储存数据的基本架构。
举例来说,如果我们有一个记载顾客数据的数据表,那字段包括姓名、地址、城市、国家、生日...等等。当我们对数据表下定义时,我们需要注明字段名称,以及那个字段的类型。
字段类型可能是一个整数 (例如 1),、一个实数(例如 0.55)、一个字符串 (例如 'sql')、一个日期/时间 (例如 '2000-jan-25 03:22:
22')、或甚至是以二进法 (binary) 的状态存在。当我们在对一个数据表下定义时,我们需要对每一个字段的类型下定义。(例如 '姓名' 这个字段的类型是 char(50)━━代表这是一个 50 个字符的字符串)。
create table 的语法是:
create table "数据表名"
"字段 1" "字段 1 类型",字段 2" "字段 2 类型",.
若我们要建立我们顾客表,我们就输入以下的 sql:
create table customer
name char(50),address char(50),city char(50),birthday date)
二、create index
索引 (index) 可以帮助我们从数据表中快速地找到需要的数据。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。
若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。
从数据库数据表中寻找数据也是同样的原理。如果一个数据表没有索引的话,数据库系统就需要将整个数据表的数据读出。若有适当的索引存在,数据库系统就可以先由这个索引去找出需要的数据是在数据表的什么地方,然后直接去那些地方抓数据。
这样子速度就快多了。
因此,在数据表上建立索引是一件有利于系统效率的事。一个索引可以涵盖一或多个字段。建立索引的语法如下:
create index "index_name" on "table_name" (column_name)
若我们要在 name 这个字段上建一个索引,我们就输入以下的指令,create index idx_customer_ name on customer (name)
若我们要在 city 和country两个字段上建一个索引,我们就输入以下的指令,create index idx_customer_location on customer (city, country)
三、alter table
在数据表被建立在数据库中后,我们常常会发现,这个数据表的结构需要有所改变。常见的改变如下:
加一个字段
删去一个字段
改变字段名称
改变字段的类型
以上列出的改变并不是所有可能的改变。alter table 也可以被用来作其它的改变,例如改变主键定义。
alter table 的语法如下:
alter table "table_name" [改变方式]
改变方式] 的详细写法会依我们想要达到的目标而有所不同。在以上列出的改变中,[改变方式] 如下:
加一个字段: add "字段 1" "字段 1 类型"
删去一个字段: drop "字段 1"
改变字段名称: change "原本字段名" "新字段名" "新字段名类型"
改变字段的类型: modify "字段 1" "新类型"
第一,我们要加入一个叫做 "gender" 的字段。这可以用以下的指令达成:
alter table customer add gender char(1)
这个指令执行后的数据表架构是:
接下来,我们要把 "address" 字段改名为 "addr"。这可以用以下的指令达成:
alter table customer change address addr char(50)
这个指令执行后的数据表架构是:
再来,我们要将 "addr" 字段的类型改为 char(30)。这可以用以下的指令达成:
alter table customer modify addr char(30)
这个指令执行后的数据表架构是:
最后,我们要删除 "gender" 字段。这可以用以下的指令达成:
alter table customer drop gender
这个指令执行后的数据表架构是:
四、insert into 数据是如何进入这些数据表的呢?
一次输入一个记录的语法如下:
insert into "数据表名" (字段1", 字段2",
values ("值1", 值2",
五、select
1、是用来做什么的呢?一个最常用的方式是将数据从数据库中的数据表内选出。从这一句回答中,我们马上可以看到两个关键字:
从 (from) 数据库中的数据表内选出 (select)。我们由这里可以看到最基本的 sql 架构:
select "字段名" from "数据表名"
select 指令让我们能够读取表中一个或数个字段的所有数据。 这将把所有的数据都抓出,无论数据值有无重复。
例:选中“birthday”字段。
2、在数据处理中,我们会经常碰到需要找出数据表内的不同数据值的情况。换句话说,我们需要知道这个数据表/字段内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?
在 sql 中,这是很容易做到的。我们只要在 select 后加上一个 distinct 就可以了。distinct 的语法如下:
select distinct "字段名" from "数据表名"
例:选出“birthday”字段中不同的值。
3、我们并不一定每一次都要将数据表内的数据都完全抓出。在许多时候,我们会需要选择性地抓数据。我们就需要用到 where 这个指令。
select "字段名" from "数据表名"
where "简单条件"
例:选出“name”字段值为“王茜”的记录。
4、我们看到 where 指令可以被用来由数据表中有条件地选取数据。 这个条件可能是简单的,也可能是复杂的。复杂条件是由二或多个简单条件透过 and 或是 or 的连接而成。
一个 sql 语句中可以有无限多个简单条件的存在。
复杂条件的语法如下:
select "字段名" from "数据表名"
where "简单条件" +
}+ 代表{}之内的情况会发生一或多次。在这里的意思就是 and 加简单条件及 or加简单条件的情况可以发生一或多次。另外,我们可以用 ()来代表条件运算的先后次序。
例:选出“成都”并且出生在“1999-5-6”的记录。
5、in指令可以让我们依照一个或数个不连续 (discrete) 的值的限制之内选出数据库中的值。
in 指令的语法为下:
select "字段名" from "数据表名"
where "字段名" in ('值一', 值二',
在括号内可以有一或多个值,而不同值之间由逗点分开。值可以是数目或是文字。 若在括号内只有一个值,那这个子句就等于
where "字段名" =值一'
例:选出是“成都”和“广西”的“name”字段值。
6、between 则是让我们可以运用一个范围 (range) 内选出数据库中的值。between这个子句的语法如下:
select "字段名" from " 数据表名"
where "字段名" between '值一' and '值二'
这将选出字段值包含在值一及值二之间的每一笔数据。
例:选出出生在“1985-10-5”“1990-9-8”之间的记录。
7、like 是另一个在 where 子句中会用到的指令。基本上,like 能让我们依据一个套式 (pattern) 来找出我们要的数据。相对来说,在运用 in 的时候,我们完全地知道我们需要的条件;在运用 between 的时候,我们则是列出一个范围。
like 的语法如下:
select "字段名" from "数据表名"
where "字段名" like
套式} 经常包括一些通配符。 以下是几个例子:
'a_z': 所有以 'a' 起头,另一个任何值的字原,且以 'z' 为结尾的字符串。 'abz' 和 'a2z' 都符合这一个模式,而 'akkz' 并不符合 (因为在 a 和 z 之间有两个字原,而不是一个字原)。
’只匹配单个字符而不是多个字符。
'abc%':所有以 'abc' 起头的字符串。举例来说,'abcd' 和 'abcabc' 都符合这个套式。 ‘表示任何字符出现任意次数。
'%xyz': 所有以 'xyz' 结尾的字符串。举例来说,'wxyz' 和 'zzxyz' 都符合这个套式。
'%an%':所有含有 'an' 这个套式的字符串。举例来说, 'los angeles' 和 'san francisco' 都符合这个套式。
8、到目前为止,我们已学到如何由 select 及 where这两个指令将数据由数据表中抓出。不过我们尚未提到这些数据要如何排列。这其实是一个很重要的问题。
事实上,我们经常需要能够将抓出的数据做一个有系统的显示。这可能是由小往大 (ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 order by这个指令来达到我们的目的。
sql语法
知识要点 1 transact sql运算符 1 算术运算符。注 null与任何值运算结果为null。运算可用于datetime型数据。2 字符串运算符。3 比较运算符。逻辑常量 ture false。4 逻辑运算符。not 非 and 与 or 或 between 指定范围 like 模糊匹配 5...
SQL语法
distinct 输出唯一值。select distinct from where between and 介于某一范围的数据。where 某行 between and in 属于某一子集合的数据。where 某行 in substring expression 开始位 长度 选取字符串。selec...
SQL语法
数据库表。一个数据库通常包含一个或多个表。每个表由一个名字标识 例如 客户 或者 订单 表包含带有数据的记录 行 下面的例子是一个名为 persons 的表 上面的表包含三条记录 每一条对应一个人 和五个列 id 姓 名 地址和城市 sql 语句。您需要在数据库上执行的大部分工作都由 sql 语句完...