Microsoft SQL server 2000基本操作

来源:互联网 发布:3306端口被占用 编辑:程序博客网 时间:2024/06/07 07:08
 

use 数据库名             --进入到数据库
drop database 数据库名   --删除数据库
drop table 表名         --删除当前数据库的表

文件组可以有机组织数据文件,便于逻辑操作

create database 库名 --新建数据库

create database mical
on primary
(name=miacal_data1, filename='E:\mical_data1.mdf', size=2MB, maxsize=10, filegrowth=1),
(name=miacal_data2, filename='E:\mical_data2.mdf', size=2MB, maxsize=10, filegrowth=1)
log on
(name=mical_log1, filename='E:\mical_log1.ldf' , size=2MB, maxsize=8, filegrowth=1),
(name=mical_log2, filename='E:\mical_log2.ldf' , size=2MB, maxsize=8, filegrowth=1)
go

实例:
create database baoping
on primary
(name=baoping_data, filename='D:\baoping.mdf',size=5MB,maxsize=100MB,filegrowth=1)
log on
(name=baoping_log, filename='D:\baoping.ldf')


sp_addlogin   test,111,baoping --新建登录名test 密码111 默认数据库baoping
sp_addsrvrolemember   'test',   'sysadmin' --添加登录test 到 sysadmin组

Exec   sp_addlogin   'test','888','baoping'   --新建登录
USE   baoping   --进入数据库baoping
EXEC   sp_adduser   'test',NULL,db_owner   --在当前数据库添加用户test
Exec   sp_addrolemember   db_owner,'test' --指定test为当前数据库db_owner

sp_droplogin test   --去掉登录test
sp_dropuser test    --当前数据库去掉用户test

create table 表名 列名 数据类型   --新建表

SQL 标识必须是decimal、int、numeric、smallint、bigint 、tinyint

create table 表名 (name char(8) not null, sex char(2), age int) --添加表

create table 表名 (id int not null identity(1,2),name char(10)) --添加标识列

create table mimi (id int not null primary key (id) ) --添加主键


UNIQUE 唯一的

ALTER TABLE <表名> --修改表
ALTER TABLE <表名> [ADD<新列名><数据类型>[完整性约束]]
      [DROP<完整性约束名>]
      [MODIFY<列名><数据类型>];

alter table 表名 ADD 列名 VARCHAR(20) NULL           --增加一列
alter table 表名 drop COLUMN 列名          --删除一列
alter table 表名 ALTER COLUMN 列名 VARCHAR(40) NULL        --修改一列
alter table 表名 ALTER COLUMN 列名 VARCHAR(40)       --修改一列的类型
alter table 表名 add constraint 约束名 primary key (列名)     --添加主键
alter table 表名 add constraint 约束名 unique (列名)     --添加唯一
alter table 表名 add constraint 约束名 default(内容) for 列名 --添加默认
alter table 表名 add constraint 约束名 check (内容)      --添加check约束
alter table 表名 add constraint 约束名 foreign key(列名) references 另一表名(列名) --添加外键约束
alter table 表名 drop constraint 约束名     --删除约束
select * from stuInfo union select *from stuMarks --纵向连接两个表

alter table 表名 add 列名 int not null identity(1,1) --增加标识

exec sp_rename '原表名','改后表名'       --重命名,表名
exec sp_rename '表名.原列名','改后列名','column' --重命名,列名

索引
CREATE [UNIQUE] [CLUSTERED] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]……)

DROP INDEX 表名.索引名 --删除索引

UNIQUE    索引的每一个索引值只对应唯一的数据记录<不能出现相同值>
CLUSTERED 索引是聚簇索引<值按顺序排列>

create unique INDEX 列名 on 表名 (name) --在叫表名的表是建立名为zhuzhu的索引,按name列的值顺序存放
create UNIQUE INDEX 列名 on 表名 (name ASC,age DESC) --按name升序和age降序排列的唯一索引

SELECT
% 表示任意长度字符串
_ 表示任意的单个字符
ASC 升序
DESC 降序
COUNT [DISTINCT|ALL]       统计个数
COUNT [DISTINCT|ALL]<列名> 值的个数(空值不计)
SUM   [DISTINCT|ALL]<列名> 总和    (此列必须是数值型)
AVG   [DISTINCT|ALL]<列名> 平均值 (此列必须是数值型)
MAX   [DISTINCT|ALL]<列名> 最大值
MIN   [DISTINCT|ALL]<列名> 最小值
UNION 并 <自动去掉重复项>
INTERSECT 交
MINUS 减

select name, age from 表名 --查询表名表中name和age两列
select * from 表名 --查询表名表中所有内容
SELECT name,100-age FROM 表名 --查询表名表所有name并显示100-age
SELECT DISTINCT name,age FROM 表名 --查询mimi表不显示重复的name
SELECT name,age FROM 表名 WHERE age<>20     --查询age不等于20的
SELECT name,age FROM 表名 WHERE not age<>20 --查询age等于20的
SELECT name,age FROM 表名 WHERE age NOT BETWEEN 20 AND 23 --查询age不在20至23之间的
SELECT name,sex,age FROM 表名 WHERE age IN(10,20) --查询age等于10或者20的
SELECT * FROM 表名 WHERE name LIKE'嘻嘻' --查询name等于嘻嘻的
SELECT * FROM 表名 WHERE name ='嘻嘻'    --同上
SELECT name,sex FROM 表名 WHERE name LIKE'_三%' --查询名字第二个字为三的name及sex
SELECT * FROM 表名 WHERE name LIKE '\DB_%r'ESCAPE'\' --转义字符escape用法
SELECT name,sex FROM 表名 WHERE age IS NOT NULL --显示所有age非空
SELECT name FROM 表名 WHERE sex='男'AND age<20 --age小于20的男性
SELECT name FROM 表名 WHERE sex='女'or age<20 --age小于20的女性
SELECT name,age FROM 表名 WHERE age=20 ORDER BY name DESC --按name降序
SELECT COUNT(*) FROM 表名
select count (name) from 表名 where age=20 --统计表名表中age等于20的数量
select top 1 name,age from 表名 order by age desc --按age降序显示第一条
SELECT age,count(name) FROM 表名 GROUP BY age having count(age)>0 --年龄相同为一组,组人数>0 显示age和name总数
select mimi.*,zhu.* from mimi,zhu where mimi.name=zhu.name --查询mimi表和zhu表的name相同的字段
SELECT 表名.age,zhu.sex FROM 表名,zhu WHERE 表名.name=zhu.name AND zhu.age>15
SELECT name,sex FROM 表名 WHERE sex IN (SELECT sex FROM 表名 WHERE name='猪猪') --子查询查出猪猪性别
SELECT name,sex FROM 表名 WHERE sex=(SELECT sex FROM 表名 WHERE name='猪猪')   --name=猪猪得到sex 查询所有同sex的name和sex
SELECT name,age FROM 表名 WHERE age<ANY(SELECT age FROM 表名 WHERE name='咪咪') --age小于咪咪的
SELECT name FROM 表名 WHERE EXISTS(SELECT *FROM zhu WHERE name=表名.name AND name='嘻嘻') --如果存在子查询 就显示name
SELECT * FROM 表名 WHERE name='猪猪' UNION SELECT * FROM 表名 WHERE age<=19 --查询name等于猪猪 并 age小于等于19


INSERT语句
INSERT INTO 表名(name,age,sex) VALUES('帅哥','21','男') --注意一一对应
INSERT INTO 表名(name) SELECT AVG(age) FROM 表名 GROUP BY sex --按性别分组查平均年龄 放到name表中
insert into 表名(name,sex,age,size) select name,sex,age,size from 另一表名 --复制另一表名数据至

UPDATE
UPDATE 表名 SET age=22 WHERE id='1' --修改id为1的age字段为22
UPDATE 表名 SET age=age+1   --将所有age加1

DELETE FROM 表名 WHERE age='21' --删除age=21的行
DELETE FROM 表名 --清空表

CREATE VIEW IS_mimi AS SELECT id,name,age FROM 表名 WHERE sex='男' --性别男的id,name,age建立视图
SELECT id,age FROM IS_mimi WHERE age<20 --建立的视图如同基本表一般
drop view 视图名 --删除视图

INSERT INTO IS_mimi VALUES('','赵新',20) --转换为对基本表的更新:

select APP_NAME ( ) as w --当前会话的应用程序
select @@ERROR --返回最后执行的 Transact-SQL 语句的错误代码(integer)
select @@IDENTITY --返回最后插入的标识值
select USER_NAME() --返回用户数据库用户名
select @@CONNECTIONS --返回自上次SQL启动以来连接或试图连接的次数。
select GETDATE() --当前时间
select @@CPU_BUSY/100 --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒
USE tempdb select @@DBTS as w --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDLE as w --返回SQL自上次启动后闲置的时间,单位为毫秒
select @@IO_BUSY AS w --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒
select @@LANGID AS w --返回当前所使用语言的本地语言标识符(ID)。
select @@LANGUAGE AS w --返回当前使用的语言名
select @@LOCK_TIMEOUT as w --当前会话的当前锁超时设置,单位为毫秒。
select @@MAX_CONNECTIONS as w --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值
EXEC sp_configure --显示当前服务器的全局配置设置
select @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS as w --返回当前 SET 选项的信息。
select @@PACK_RECEIVED as w --返回SQL自启动后从网络上读取的输入数据包数目。
select @@PACK_SENT as w --返回SQ自上次启动后写到网络上的输出数据包数目。
select @@PACKET_ERRORS as w --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。
select @@SERVERNAME as w --返回运行SQL服务器名称。
select @@SERVICENAME as w --返回SQL正在其下运行的注册表键名
select @@TIMETICKS as w --返回SQL服务器一刻度的微秒数
select @@TOTAL_ERRORS AS w --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。
select @@TOTAL_READ as w --返回 SQL服务器自启动后读取磁盘的次数。
select @@TOTAL_WRITE as w --返回SQL服务器自启动后写入磁盘的次数。
select @@TRANCOUNT as w --返回当前连接的活动事务数。
select @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。

更换字段内容 update Table set Column=Replace(Column,'oldkeyword','newkeyword')

update Table set Column=Replace(Cast(Column as varchar(8000)),'oldkeyword','newkeyword')

select * from xixi right join test on xixi.id=test.userid   xixi表全部列出来加匹配部分

select * from xixi right join test on xixi.id=test.userid   test表全部列出来加匹配部分

select * from xixi,test where xixi.id=test.userid 只显示xixi与test匹配部分

select id,name,('haha') as bb for table 虚拟一个列出来