T_SQL数据库命令
1.创建数据库:
CREATE
DATABASE new_db2(数据库名字)
ON
PRIMARY
(
NAME='new.mdf',(逻辑名称)
FILENAME='e:\new.mdf',(数据库存储路径)
SIZE=5mb
,(数据库容量)
MAXSIZE=50mb
,(最大存储容量)
FILEGROWTH=10
%(设置增长大小)
)
2.更改数据库的容量:
ALTER
DATABASE new_db
MODIFY
FILE
(
NAME='new_db',
SIZE=17mb
)
3.收缩数据库操作:
DBCC
SHRINKDATABASE('new_db',1)(数据库名称,数据库收缩比率)
4.更改数据库名字:
EXEC
SP_RENAMEDB 'new_db2' , 'testname'
数据库存储方式
原数据库名称
现在数据库名称
5.删除数据库:
DROP
DATABASE testname
6.创建表:
create
table test_name
(
学号
int primary key identity,
名称
char(6) not null,
专业方向
varchar(10) not null,
系部代码
char(2) not null,
备注
varchar(50)
)
Int
|
Primary key
|
Identity
|
整形
|
主键
|
激增数据库
|
7.查看表:
EXEC
sp_help test_name
8.修改表名:
exec
sp_rename 'test_name','test_table'
Exec sp_rename
|
Test_name
|
Test_table
|
系统存储
|
旧表名称
|
新表名称
|
9.从命名列:
exec
sp_rename 'test_table.备注','其他','column'
Exec sp_rename
|
Test_table.备注
|
其它
|
Column
|
系统存储
|
修改列
|
添加新列
|
|
10.添加新列:
- alter table [table_name] add [new_column] varchar(33)
§ alter
table test_table
§ add 新列
char(10)
Alter
|
Table test_table
|
|
表名
|
Add
新列
|
Char(10)
|
添加列名称
|
字符类型
|
11. 更改列的数据类型:
- alter table [table_name] (表名)
- alter column [column_name] [data_type]
[column_name]
|
[data_type]
|
写入列名称
|
新的类型
|
alter
table test_table
alter
column 新列
int
12. 删除列:
- alter table [table_name] (表名称)
- drop column [column_name] (列名称)
运行成功的T_SQL语句
§ alter
table test_table
§ drop
column 新列
13. 删除表:
drop table table_name (表名)
14. 删除表的所有数据:
- Truncate table [table_name]
15. 创建主键约束
- alter table [table_name](表名称)
add constraint pk
primary key clustered (列名)(要做主键的id)
16. 创建外建约束
- alter table [table_name](第二个别名表)
add constraint wz (外键名称)
foreign key (列名)
references 表名(列名)(列名表示做主键还是外键的名称)
成功的列子:
--创建主键约束
alter table t1
add constraint pk
primary key clustered (id)
--创建外建约束
alter table t2
add constraint wz
foreign key (id)
references t1(id)
2011-05-01学习T-sql语句
1. 建表代码:
create table 系部
(
系部代码 char(6) not null primary key,
系部名称 varchar(30) not null ,
系主任 char(8)
)
go
create table 专业
(
专业代码 char(4) not null primary key,
专业名称 varchar(20) not null,
系部代码 char(6) constraint wz11 references 系部(系部代码)
)
go
create table 班级
(
班级代码 char(9) not null primary key ,
班级名称 varchar(20) ,
专业代码 char(4) constraint wz1 references 专业(专业代码),
系部代码 char(6) constraint wz2 references 系部(系部代码),
备注
varchar(50)
)
go
create table 学生
(
学号 char(12) not null primary key ,
姓名 char(8),
性别 char(2),
出生日期 datetime,
入学时间 datetime,
班级代码 char(9) constraint wz3 references 班级(班级代码),
系部代码 char(6) constraint wz4 references 系部(系部代码),
专业代码 char(4) constraint wz5 references 专业(专业代码),
高考分数 int
)
2. 最简单的insert 语句
INSERT [into] table_name (column_list) VALUES(data_values)
[into]是一个可选的关键字,可以将它用在insert和目标表之间。
table_name 是将要添加数据的表的名称
(column_list) 是要添加数据的字段名称或字段列表,必须用括写将column_list 括起来,并用逗号进行分隔。若没有指字段列表,则指字全部字段。
下面是插入数据T-sql、成功运行代码:
INSERT
into test_table VALUES('xm','计算机','01','没有')
INSERT
into test_table VALUES('ql','计算机','03','没有')
选择插入的T-SQL语句:
INSERT
into test_table (名称,专业方向,系部代码)
VALUES('张三','数学','04')
省略values 的insert 语句
在T-SQL 语言中,有一种简单的插入多行的方法。这种方法使用select 语句查询出的结果代替values 子句.这种语法结构如下:
INSERT [into] table_name (column_name) SELECT [column_name] FROM table_name where [search_conditions]
[shere search] 查询条件。
INSERT表和SELECT表的结果集的列数,数据类型必须一致。
[search_conditions]查询条件
INSERT [into] table_name (column_name)
SELECT [column_name] FROM table_name where [search_conditions
列子:
SELECT名称,专业方向,系部代码
FROM test_table(这句T—sql语句是查询出表test_table表中的对应字段的数据)
INSERT
test_table(名称,专业方向,系部代码)这句代码的意思是把上面T-sql语句查询出的结果插入到test_table表中。
SELECT名称,专业方向,系部代码
FROM test_table
INSERT
test_table(名称,专业方向,系部代码)
SELECT名称,专业方向,系部代码
FROM test_table
上面两句合起来的意思就是第二条语句查询出的结果插入到第一条语句中去。
更新数据:
UPDATE
test_table SET 系部代码='01'
所有的西部代码都会成为01
UPDATE
test_table SET 专业方向='化学'
WHERE 专业方向='数学'
上面T-sql语句主要是把表test_table表中的专业方向=‘数学’更新成专业方向=‘化学’
3.删除数据库中的数据:
数据的删除
随着系统的运行,表中可能产生一些无用的数据,这些数据不仅占用空间,而且还影响查询的速度。删除数据可以使用detelt语句
DELETE table_name WHERE [search_conditions]
table_name 是要从其中删除数据的表中名称。
WHERE 指定用于限制册除行数据的条件。如果没有提供
where子
句,则delete 删除表中的所有行。
[search_conditions]指定删除行的限定条件。
下面是例子:
4.查询语句:
输出表中的所有列
将表中的所有字段都在”结果”窗口列出来,可以有两种方法:一种是将所有字段名在SELECT关键字后列出来;另一种是在SELECT语句后使用一个*
SELECT*FROM table_name
2、输出表中部分列
列出表中的部分字段,可以在SELECT 关键字后依次把字段名写出来,之间用逗号隔开,字段的顺序可根据需要来指定,
SELECT A,B,C FROM table_name
3、选择表中的若干记录
两个不相同的记录,但在某字段上是相同的如果
要去掉结果集中重复的行,可以在字段列表前面加
个DISTINCT关键字。
SELECT DISTINCT 列名
FROM table_name
4、限制返回行数
如果一个表中有上亿条记录,而用户只想看前n条,
这就没有必要显视全部的记录。如果要限定返回的行数,可
以在字段列表前使用TOP n关键字,可以返回结果的前n条记
录信息。
SELECT TOP n FROM table_name
下面是例子:
SELECT
* FROM test_table
查看一个整体表
SELECT学号,名称,专业方向,系部代码,其他
FROM test_table
查询表中的部分字段的信息
SELECT名称,学号,其他FROM test_table
只查询表中的名称、学号、其他信息
SELECT
DISTINCT 系部代码FROM test_table
查询系部代码
SELECT
TOP 102 * FROM test_table
查询test_table表中的多小行
SELECT
* FROM test_table WHERE 学号=1034
查询表test_table表中学号等于1034的员工号
SELECT
* FROM test_table WHERE 学号
BETWEEN 1034 AND 1036
查询学号1034到1036之间的信息
SELECT
* FROM test_table WHERE 学号
in(1034,1035,1036)
查询表中学号在(1034,1035,1036)
SELECT
* FROM test_table WHERE 学号
NOT in(1034,1035,1036)
查询出结构不包括学号(1034,1035,1036)之间
SELECT
* FROM test_table WHERE 名称
like 'q_'
查找表中字段’q_’所有字符
5.对查询结果排序:
SELECT系部代码
FROM st_table
group
by 系部代码
SELECT专业方向
FROM st_table
group
by 专业方向
having 专业方向<>'动漫'
可以看到查询结构没有动漫。
8、对查询的结果排序
可以使用ORDER BY 对查询结果按照一个或多个属性进行升序(ASC)
或降序(DESC)排序,默认为升序。
ORDER BY {列名[ASC|DESC] [,...n] }
SELECT
* FROM st_table ORDER BY 高考分数ASC(默认升序)
SELECT
* FROM st_table ORDER BY 高考分数DESC(分数是降序)