SQLServer基本操作

--创建数据库

 1 use master;--使用数据库
 2 --创建数据库
 3 create database test1
 4 on
 5 (
 6     name='test1',--数据库名字
 7     filename='D:\DataBase\test1.mdf',--数据库存储路径
 8     size=10mb,--大小
 9     filegrowth=10mb--增量
10 )
11 log on
12 (
13     name='test1_log',--日志文件名字
14     filename='D:\DataBase\test1_log.ldf', --日志文件路径
15     size=5mb,--大小
16     filegrowth=2mb--增量
17 );

--删除数据库

drop database test1;

--创建表

use test1
create table tblPerson
(
    id int,
    stuName nvarchar(10),
    stuSex bit,
    stuAge int
)

 

--插入一条记录

inser into tblPerson(id,stuName,stuSex,stuAge) values(1,N'测试数据','true',30);

--简单查询

select id, stuName, stuSex, stuAge from tblPerson;
select id, stuName from tblPerson;
select * from tblPerson;

--删除记录

delete from tblPerson;
delete from tblPerson where stuName='测试数据'; 

--修改数据

update tblPerson set stuName = '牛牛';
update tblPerson set stuName = '洋洋' where id=1;

------添加约束

--添加主键

alter table tblPerson
add constraint PK_tblPerson_id primary key(id);--命名规范- 约束键_表名_约束的字段

--添加唯一键

alter table tblPerson
add constraint UQ_tblPerson_stuName unique(stuName);

 --检查约束

alter table tblPerson
add constraint CK_tblPerson_stuSex
check(stuSex='' or stuSex='');

--默认约束

alter table tblPerson
add constaint DF_tblPerson_inputtime
default(getdate()) for inputtime;

--添加约束的快捷方式

alter table 表名
add
    constraint 约束名1 约束表达式1,
    constraint 约束名2 约束表达式2,
    constraint 约束名3 约束表达式3,
    constraint 约束名4 约束表达式4,

create table tblPerson
(
  id int not null
    constraint PK_tblPerson_id primary key,
  stuName nvarchar(10)
    constraint UQ_tblPerson_stuName unique,
  stuSex nchar(1)
    constraint CK_tblPerson_stuSex check(stuSex='' or stuSex=''),
  inputtime datetime
    constraint DF_tblPerson_inputtime default(getdate())
);

 

--创建主外键

create table tblScore
(
        scoreId int identity(1,1) primary key,
        stuId  int not null,
        scoreNum int
)

--在外键表中进行修改

alter table tblScore
add constaint Fk_tblScore_stuId
foreign key(stuId) references tblStudent(stuId);

 --表连接

  交叉联接:将第一张表的每一条记录依次与第二张表的每一条记录进行组合,得到一张新表

tbl1
-------------
1 小牛 1
2 小虎 2
3 小波 NULL
-------------
tbl2
--------
1 老师
2 学生
--------

交叉联接后得到数据
------------------------
1 小牛 1 1 老师
1 小牛 1 2 学生
2 小虎 2 1 老师
2 小虎 2 2 学生
3 小波 NULL 1 老师
3 小波 NULL 2 学生
------------------------

1 select  t1.*,
2         t2.*
3 from    表1 as t1,
4         cross join
5         表2 as t2  
6         

 内连接:交叉连接后数据有大部分是无用的,需要对其进行一个筛选,可以将内连接理解为在交叉连接的基础之上进行一个筛选

-> 将上表结果显示为
------------------------
1 小牛 1 1 老师
2 小虎 2 2 学生
------------------------
-> 语法

1 select * 
2 from
3 表1 as t1
4 inner join
5 表2 as t2
6 on t1.字段 = t2.字段;

左外连接:

select * 
from
     左表 as t1
     left join
     右表 as t2
     on t1.字段 = t2.字段;

--分页:

使用top 分页

select top 10 * from student where id not in(select top(@pageIndex-1)*10 Id from student)

使用ROW_NUMBER(),between and分页.

select * form(select row_number() over(order by id) as num ,* from student )as t1 where t1.num between (pageIndex-1)*10 +1 and pageIndex*10

--公用表表达式:将复杂的派生表写在中间from子句中变得十分臃肿,给为维护等操作带来麻烦,将这个派生表要是能提前到前面,给一个别名,后面查询的时候直接使用别名即可

语法:

with 表的别名
        as
        (
            结果集
        )
        select * from 别名   -- 将结果集(派生表)用一个别名取代了,使用的时候可以模块化

--视图:一个存在数据库中的虚拟表,视图相当于一个存储在数据库中的一个查询步骤

语法:

定义语法:
            create view vw_视图名
            as
                结果集;

--内联表值函数:就可以看做是带有参数的试图

语法:

create function fn_函数名
(@参数名 as 类型名, @参数名 as 类型名, ...) returns table
 as
   return
                结果集

 

posted @ 2014-02-25 00:16  苏镡  阅读(172)  评论(0编辑  收藏  举报