SQL SERVER基础语句

--切换到指定数据库

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