zoukankan      html  css  js  c++  java
  • 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
                    结果集
    将不朽的青春献给伟大的编程事业,世界将因我们而改变!
  • 相关阅读:
    js 性能调试
    js 面向对象编程
    js 零碎
    如果遇到二维数组 想取某个字段的和
    昨天写支付接口时遇到支付接口返回数据接收地址,session数据丢失(或者说失效)的问题
    mysql报错: 1548-Cannot load from mysql.proc. The table is probably corrupted 解决办法
    php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
    linux 环境下安装mysql5.6
    关于数据库连接不上 出现错误的问题
    推荐一个不错的css3网站 可以直接调用的
  • 原文地址:https://www.cnblogs.com/luoyefeiwu/p/3565763.html
Copyright © 2011-2022 走看看