sql语法

发布 2021-05-11 04:59:28 阅读 4560

知识要点

1. transact-sql运算符

1) 算术运算符。

注:null与任何值运算结果为null。

+、-运算可用于datetime型数据。

2) 字符串运算符。

3) 比较运算符。

逻辑常量:ture、false。

4) 逻辑运算符。

not(非)、and(与)、or(或)、between(指定范围)、like(模糊匹配)

5) 赋值运算符。

6) 集合运算符。

all(所有)、in(包含于)、any(任意一个)、some(部分)、exists(存在)

2. transact-sql函数

1) 数学函数。

sin(n)(正弦)、asin(n)(反正弦)、pi()(圆周率)、abs(n)(绝对值)、exp(n)(指数)、log(n)(自然对数)、power(n,m)(nm)、round(n,m)(四舍五入)、sign(n)(符号)、sqrt(n)(平方根)、rand([n])(随机数)等。

2) 字符串函数。

str(n,n1,n2)(数值转换为字符串)、len(s)(求串长)、left(s,n)(左取子串)、right(s,n)(右取子串)、substring(s,n1,n2)(取子串)、lower(s)**小写)、upper(s)**大写)、ltrim(s)(删除左空格)、rtrim(s)(删除右空格)、space(n)(产生空格)、reverse(s)(反转字符串)、charindex(s1,s2)(字符串s1在字符串s2中的起始位置)等。

3) 日期时间函数。

getdate()、year(d)、month(d)、day(d)、datepart(datepart,d)(日期的datepart部分,datepart为日期类型,参见表2)、dateadd(datepart,n,d) (日期加,即日期d的datepart部分加数值n后的新日期)、datediff (datepart,d1,d2) (日期减,即日期d1与d2的datepart部分相差的值)等。

表2 datepart取值表

例4-1 计算香港回归已经有多少年、多少天,自今天起15个月后是哪一天。

select getdate(),datediff(year, '1997-7-1',getdate())datediff(day, '1997-7-1',getdate())dateadd(month,15, getdate())

4) 类型转换函数。

convert(data_type,expression[,style])、cast(expression as data_type)。style取值见表3。

表3 style(日期样式)取值表

例4-2 将当前时间的日期转换为美国格式(mm/dd/yyyy及mm-dd-yyyy)、ansi(格式的字符串,并将当前时间的时间部分转换为字符串。

select getdate(),convert(char(20),getdate(),101), convert(char(20),getdate(),102),

convert(char(20),getdate(),110), convert(char(20),getdate(),114)

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

sql2000 查看表结构。

数据库修改表结构sql

修改表结构包括:

增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。

所有这些动作都是用 alter table 命令执行的。

5.5.1. 增加字段。

alter table products add column description text;

你也可以同时在该字段上定义约束,使用通常的语法:

alter table products add column description text check (description <>实际上,所有在 create table 里描述的可以应用于字段之选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则 add 将会失败。另外,你可以在你正确填充了新字段的数值之后再增加约束(见下文)。

5.5.2. 删除字段。

要删除一个字段,使用下面这样的命令:

alter table products drop column description;不管字段里有啥数据,都会消失。和这个字段相关的约束也会被删除。不过,如果这个字段被另外一个表的外键所引用,postgresql 则不会隐含地删除该约束。

你可以通过使用 cascade 来授权删除任何依赖该字段的东西:

alter table products drop column description cascade;参阅 section 5.11 获取有关这些操作背后的机制的信息。

5.5.3. 增加约束。

要增加一个约束,使用表约束语法。比如:

alter table products add check (name <>

alter table products add constraint some_name unique (product_no);

alter table products add foreign key (product_group_id) references product_groups;要增加一个不能写成表约束的非空约束,使用下面语法:

alter table products alter column product_no set not null;

这个约束将立即进行检查,所以表在添加约束之前必须符合约束条件。

5.5.4. 删除约束。

要删除一个约束,你需要知道它的名字。如果你给了它一个名字, 那么事情就好办了。否则系统会分配一个生成的名字,这样你就需要把它找出来了。

psql 的命令 \d tablename 在这儿可以帮忙; 其它接口可能也提供了检查表的细节的方法。然后就是这条命令:

alter table products drop constraint some_name;(如果你在处理一个生成的约束名,比如 $2,别忘了你需要给它添加双引号,让它成为一个有效的标识符。)

和删除字段一样,如果你想删除有着被依赖关系地约束,你需要用 cascade。 一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。

除了非空约束外,所有约束类型都这么用。要删除非空类型,用。

alter table products alter column product_no drop not null;(要记得非空约束没有名字。)

5.5.5. 改变一个字段的缺省值。

要给一个字段设置缺省值,使用一个象下面这样的命令:

alter table products alter column price set default 7.77;请注意这么做不会影响任何表中现有的数据行, 它只是为将来 insert 命令改变缺省值。

要删除缺省值,用。

alter table products alter column price drop default;这样实际上相当于把缺省设置为空。 结果是,如果我们删除一个还没有定义的缺省值不算错误,因为缺省隐含就是空值。

5.5.6. 修改一个字段的数据类型。

alter table products alter column price type numeric(10,2);只有在字段里现有的每个项都可以用一个隐含的类型转换转换城新的类型时才可能成功。如果需要更复杂的转换,你可以增加一个 using 子句,它声明如何从旧值里计算新值。

postgresql 将试图把字段的缺省值(如果存在)转换成新的类型, 还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。 在修改某字段类型之前,你最好删除那些约束,然后再把自己手工修改过的添加上去。

5.5.7. 给字段改名字。

alter table products rename column product_no to product_number;

5.5.8. 给表改名字。

alter table products rename to items;

SQL语法

distinct 输出唯一值。select distinct from where between and 介于某一范围的数据。where 某行 between and in 属于某一子集合的数据。where 某行 in substring expression 开始位 长度 选取字符串。selec...

SQL语法

一 create table 数据表是数据库中储存数据的基本架构。举例来说,如果我们有一个记载顾客数据的数据表,那字段包括姓名 地址 城市 国家 生日 等等。当我们对数据表下定义时,我们需要注明字段名称,以及那个字段的类型。字段类型可能是一个整数 例如 1 一个实数 例如 0.55 一个字符串 例如...

SQL语法

数据库表。一个数据库通常包含一个或多个表。每个表由一个名字标识 例如 客户 或者 订单 表包含带有数据的记录 行 下面的例子是一个名为 persons 的表 上面的表包含三条记录 每一条对应一个人 和五个列 id 姓 名 地址和城市 sql 语句。您需要在数据库上执行的大部分工作都由 sql 语句完...