SQL Server 数据类型 ()
String 类型:数据类型 描述 存储
char(n) 固定长度的字符串。最多 8,000 个字符。 Defined width varchar(n) 可变长度的字符串。最多 8,000 个字符。 2 bytes + number of chars varchar(max) 可变长度的字符串。最多 1,073,741,824 个字符。 2 bytes + number of chars text 可变长度的字符串。最多 2GB 文本数据。 4 bytes + number of chars nchar 固定长度的 Unicode 字符串。最多 4,000 个字符。 Defined width x 2 nvarchar 可变长度的 Unicode 字符串。最多 4,000 个字符。 nvarchar(max) 可变长度的 Unicode 字符串。最多 536,870,912 个字符。 ntext 可变长度的 Unicode 字符串。最多 2GB 文本数据。 bit 允许 0、1 或 NULL binary(n) 固定长度的二进制字符串。最多 8,000 字节。 varbinary 可变长度的二进制字符串。最多 8,000 字节。 varbinary(max) 可变长度的二进制字符串。最多 2GB。 image 可变长度的二进制字符串。最多 2GB。Number 类型:
数据类型 描述 存储 tinyint 允许从 0 到 255 的所有数字。 1 字节 smallint 允许介于 -32,768 与 32,767 的所有数字。 2 字节 int (integer)允许介于 -2,147,483,648 与 2,147,483,647 的所有数字。 4 字节 bigint 允许介于 -9,223,372,036,854,775,808 与 9,223,372,036,854,775,807 之间的所有数字。 8 字节 decimal(p,s) 固定精度和比例的数字。 允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节 numeric(p,s) 固定精度和比例的数字。 允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节 smallmoney 介于 -214,748.3648 与 214,748.3647 之间的货币数据。 4 字节 money 介于 -922,337,203,685,477.5808 与 922,337,203,685,477.5807 之间的货币数据。 8 字节 float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 n 参数指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 4 或 8 字节 real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节1.行注释 -- 2.块注释 /* */ 3.删除数据库 drop database school 4.创建数据库和日志并保存 CREATE DATABASE school ON ( NAME = school_dat, FILENAME = 'd:\school1.mdf', SIZE = 3, MAXSIZE = 4, FILEGROWTH = 1 ) LOG ON ( NAME =school_log, FILENAME = 'd:\school1.ldf', SIZE = 2MB, MAXSIZE = 3MB, FILEGROWTH = 1MB ) 5.go GO 表示一批 T-SQL 语句结束,GO 之后的 T-SQL 语句属于另一个批处理的范围
6.一些最重要的 SQL 命令
SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER TABLE - 变更(改变)数据库表 DROP TABLE - 删除表 CREATE INDEX - 创建索引(搜索键) DROP INDEX - 删除索引 7.--创建索引 create index ix_student_sname ON student(sname) 本例会创建一个简单的索引,名为 ix_student_sname 在 student表的 (sname)列: 降序:create index ix_student_sname ON student(sname DESC) 希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开: create index ix_student_sname ON student(sname,sage)8.--创建表
create table Student ( Sno ud_sno , Sname char(10) not null unique , Ssex char(2) check (ssex='男' or ssex='女') , Sage smallint check(sage>16) , Sdept char(10) not null default 'JSJ' , primary key (sno) //主键 ) 9.--设置键(在create table语句内) 主键: primary key (cno)在已经设置该主键的表里面设置与其他表相关联的外键
外键:primary key(Cno,Sno),
foreign key (Sno) references student(Sno) , //关联其他表中主键的外键 foreign key (Cno) references Course(Cno) , 10.--添加数据到表 insert into student (sno,sname,ssex,sage,sdept) values('003','tony','男',20,'sx')11.--设置默认值
Sdept char(10) not null default 'JSJ'设置该字段不为空且默认值为'JSJ'12.如何在sql server里面写语句(其实至今没有弄明白)
首先手动新建数据库,然后点击新建查询,就可以到一个可以写sql 语句的地方13.在数据表中增加删除某列
alter table table_name add reserve char(50) alter table table_name drop COLUMN reserve删除普通列时要在列名前面加 column
14.查询 select branch_name from table_name (默认不去重) select distinct branch_name from table_name (去重) select all branch_name from table_name
(1)将查询结果某一列计算后作为新的一列显示出来
select loan_number, branch_name, amount*10 as lal from table_name(2)查询条件限制
select loan_number from loan where branch_name ='Perryridge' and amount <1200 之间:where amount between 900 and 1300(3)没有插入数据查询(is null)
select Sno from Selected_Course where Cno='7' and Grade is null
(4)and && or
where Cno='7' and (Grade >90 or Grade <60)
(5)like
A:%包含零个或多个字符的任意字符串:
1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。 3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。B:_(下划线)任何单个字符:LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。C:[]指定范围([a-f])或集合([abcdef])中的任何单个字符: 1,LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。 2、LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。D:[^]不属于指定范围([a-f])或集合([abcdef])的任何单个字符:LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
约束
1,在alter table 时的约束设置
alter table Student
add check (Sname is not null and Sdept is not null and (Ssex='男' or Ssex='女')and Ssex is not null)
问题:group by
选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中无法理解