test代表数据库名
创建数据库(简单)
CREATE DATABASE test
创建数据库(指定参数)
exists 存在 的意思
use master
go
--判断master下面的sysdatabases表里面有没有这个数据库,如果没有就执行下面的语句
if not exists (select * from sysdatabases where name ='test')
create database test --数据库名称
on primary --主文件名
(
name='test_data', --逻辑文件名
filename='d:\sqldata\test_data.mdf', --mdf放的磁盘位置
size=5mb, --初始大小
--maxsize=100mb, --限制增长为100m
filegrowth=15% --数据库增长率 结尾不加逗号
)
log on
(
name='test_log', --日志的逻辑文件名
filename='d:\sqldata\test_log.ldf', --ldf放的磁盘位置
size=1mb, --初始大小
filegrowth=0 --不增长 结尾不加逗号
)
go
删除数据库,删除多个逗号隔开
DROP DATABASE test
备份语句
backup database test to disk ='d:\sqldata\test.bak'
查询有哪些数据库
use master
go
select * from sysdatabases
go
查询test数据库下有哪些表和存储过程
use test
go
select * from sysobjects
go
存储过程介绍
sp
开头的代表系统存储过程
exec sp_databases --列出当前系统的数据库
exec sp_renamedb 'oldtest','newtest' --修改数据名称
exec sp_helpdb test --查询数据库文件大小和路径
exec sys.sp_detach_db dbname --分离数据库
exec sp_attach_test, 'd:\sqldata\test.mdf','d:\sqldata\test.ldf' --附加数据库
use test --指向对应的数据库
exec sp_help test_table --列出test_table表的信息 需要指向对应的数据库
xp
开头为扩展存储过程
use master
go
exec sp_configure 'show advanced option',1 --启用xp_cmdshell高级配置权限
go
reconfigure --重新配置
go
exec sp_configure 'xp_cmdshell',1 --打开xp_cmdshell,可以调用sql系统外的功能
go
reconfigure
go
使用xp_cmdshell在d盘创建myfile文件夹,调用的cmd命令
exec xp_cmdshell 'mkdir d:\\myfile',no_output --[no_output]是否输出返回值
go
创建数据库表
USE tset
GO
CREATE table test表 --创建表
(lie int not null primary key, --创建列名+列名类型+可否为空+主键,后两项可以不填写,逗号结尾
ming varchar(300) null
)
数据库用脚本还原bak文件
RESTORE FILELISTONLY from disk='E:\test.bak'/*查询备份数据的逻辑名称*/
restore database testname/*还原后的数据库名称*/
from disk='E:\test.bak'/*备份文件路径*/
with move 'test_Data'/*备份文件的数据逻辑名称*/
to 'E:\sqldata\test.mdf',/*还原数据文件存放位置*/
move 'test_Log'/*备份文件的日志逻辑名称*/
to 'E:\sqldata\test.LDF'/*还原数据文件日志存放位置*/
go
判断数据库 test 存在 执行创建表 如果不存在创建数据库
use master
go
IF EXISTS(select 1 from sysdatabases where name = 'test')
begin
print('数据库存在,创建表test_table1')
use test --需要指向数据库名
CREATE TABLE test_table1(id int primary key,name varchar(10))
end
else
begin
print('数据库不存在,创建数据库test')
create database test
end
go
改自增长量语句
--Trace为数据库名称 db1为逻辑文件名称
USE [master]
GO
ALTER DATABASE [Trace] MODIFY FILE ( NAME = N'db1', FILEGROWTH = 30%)
GO
备份数据库里面是所有账套
--备份数据库里面是所有账套
DECLARE @name VARCHAR ( 50 ) -- database name
DECLARE @path VARCHAR ( 256 ) -- path for backup files
DECLARE @fileName VARCHAR ( 256 ) -- filename for backup
DECLARE @fileDate VARCHAR ( 20 ) -- used for file name
SET @path = 'D:\data\'
SELECT @fileDate = replace(replace(replace(replace(CONVERT(char(16), getdate(), 120 ),'-',''),'
',''),':',''),' ','')
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ( 'master' , 'model' , 'msdb' , 'tempdb' )
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '.bak'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
有ndf的数据还原脚本
RESTORE DATABASE abc123 FROM DISK = 'I:\123\DataBase\data.bak' WITH FILE = 1,
MOVE N'Data' TO 'I:\123\DataBase\abc123_1.mdf',
MOVE N'Log' TO 'I:\123\DataBase\abc123_2.ldf',
MOVE N'ndf' TO 'I:\123\DataBase\abc123_0001.ndf', NOUNLOAD , STATS = 1, RECOVERY ;
判断表下面有没有字段,然后执行脚本
use master
IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('table') AND name='ziduan') --判断是否有table表和字段ziduan,有就把字段默认值改为空
BEGIN
alter table master.[dbo].[table] alter column [ziduan] [varchar](20) NULL --ziduan默认值修改为空
END
go
方法二
IF NOT EXISTS(select * from syscolumns where id=object_id('table') and name='ziduan')
BEGIN
ALTER TABLE test..[table] --test为数据库名
ADD ziduan VARCHAR(10) NULL DEFAULT('0')
END
GO
插入语句
insert into 表名(字段1,字段2) values('值1','值2');
SQL修改字段长度
语法:
alter table <表名> alter column <字段名> 新类型名(长度)
例如:有名table1,字段名F1,原来F1为varchar(3),现在要改为varchar(10),则可以这么写:
alter table table1 alter column F1 varchar(10)