--切换到指定数据库
use master
--创建数据库
create database stuDB
on primary -- 默认就属于primary文件组,可省略primary关键字
(
/*--数据文件的具体描述--*/
name='stuDB_data',
-- 主数据文件的逻辑名称
filename='D:\stuDB_data.mdf', -- 主数据文件的物理名称
size=5mb,
--主数据文件的初始大小
--maxsize=500mb,
-- 主数据文件增长的最大值,把mb改成unlimited或注释掉本行,都表示不限制
filegrowth=10%
--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
name='stuDB_log',
filename='D:\stuDB_log.ldf',
size=2mb,
--maxsize=unlimited, --不起作用,系统还是会限制
filegrowth=1mb
)
--备份数据库
backup database misdbcar to disk='d:/111.bak' with format
--附加数据库
use master
exec sp_attach_db @dbname=N'MISDBCAR', @filename1=N'D:\ICK\DBFile\misdbcar_data.mdf', @filename2=N'D:\ICK\DBFile\misdbcar_log.ldf'
--删除数据库
--SQL Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需要查看该表是否存在于该数据库中就可以了,语句如下:
use master -- 设置当前数据库为master,以便访问sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop
database stuDB
go
--创建表,假设数据库是stuDB
use stuDB
--判断,删除表
if exists(select * from sysobjects where name='myxf')
drop table myxf
go
create table myxf(
myid int identity(0,1) not null primary key, --主键,自增, identity(起始值,递增量)
colum1 varchar(100) null,
colum2 nvarchar(50) null
)
--增加字段
use stuDB
--alter table 表名add
字段名type
not null default 0
alter table myxf add ceshi nvarchar(20) not null default '0'
--修改字段名
--exec
sp_rename '表名.原列名','新列名','column';
EXEC sp_rename 'myxf.ceshi', 'test', 'column'
--删除字段,首先要删除相关的约束
use stuDB
--删除约束语句alter
table 表drop
constraint 约束名或键
alter table myxf drop constraint DF__myxf__ceshi__0519C6AF
--删除字段:ALTER
TABLE tableName DROP COLUMN columnName
ALTER TABLE myxf DROP COLUMN test
--修改字段类型
ALTER TABLE tableName ALTER COLUMN columnName VARCHAR(10) --修改一个字段的类型
--删除主键
Declare @Pk varChar(100);
Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('tableName') and xtype='PK';
if @Pk is not null
exec('Alter table tableName Drop '+ @Pk)
--创建数据库的登陆账户---------------------------------------------
use stuDB --切换到数据库
-- drop login
saxf
create login saxf with password='123', default_database=stuDB --登陆账户saxf,密码
--为账户saxf创建数据库用户myu
-- drop user
myu
create user myu for login saxf with default_schema=dbo
-- 赋予数据库用户dbo权限
exec sp_addrolemember 'db_owner', 'myu'
-------------------------------------------------------------------
--另一种创建账户方法存储过程-----------------------------------------------
use stuDB
exec sp_addlogin 'xie', '123456' --添加登陆账户账户名为xie,密码为123456
exec sp_droplogin 'xie' --删除xie账户
--使其成为当前数据库的合法用户
--exec
sp_dropuser '123456' --删除用户
exec sp_grantdbaccess 'xie'
--授予对该数据库的所有权限
EXEC sp_addrolemember N'db_owner', N'xie'
-- 具体的授权语法如下
-- grant 权限[on
表名]
to 数据库用户
use stuDB
go
grant select,update,insert to xie
--授权到具体的表grant
select,update,insert on stuMarks to xie
grant create table to xie
go
-- 提示:SQL
Server 中的dbo用户是具有在数据库中执行所有活动权限的用户,表示数据库的所有者(owner),一般来说,
-- 如果创建了某个数据库,就是该数据库的所有者,即dbo用户,dbo用户是一个比较特殊的数据库用户,无法删除,且此用
-- 户始终出现在每个数据库中
--更细粒度的授权,请参见数据库授权操作
-------------------------------------------------------------------
--简单的查询
select * from myxf where myid=0 and colum1='333' or colum2='111' order by myid desc,colum1 asc --desc降序asc升序,默认asc
--SELECT
DISTINCT 列名称FROM 表名称 --关键词DISTINCT 用于返回唯一不同的值,去重
--插入一条记录
insert into myxf(colum1,colum2) values('555','666')
--更新记录
update myxf set colum1='333' where myid=0
select A.colum1,A.colum2 from(
select colum1,colum2 from myxf
union all
select colum1,colum2 from myxf111
)A where A.colum1='555'
--UNION 操作符选取不同的值。如果允许重复的值,使用UNION ALL
--另外,UNION
结果集中的列名总是等于UNION
中第一个SELECT
语句中的列名。
select A.colum1 as
a,A.colum2 as b,B.colum1 as c,B.colum2 as d from
(select * from
myxf)A,
(select * from
myxf111)B
-- join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
--常见写法
--SELECT
Persons.LastName, Persons.FirstName, Orders.OrderNo
--FROM
Persons, Orders
--WHERE
Persons.Id_P = Orders.Id_P
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName
--JOIN: 如果表中有至少一个匹配,则返回行
--LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
--RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
--FULL JOIN: 只要其中一个表中存在匹配,就返回行
--重启sql
server 服务,在cmd命令下执行:
--net stop
mssqlserver
--net start
mssqlserver