SQLServer

1.SQLServer安装下载地址:

安装SQL Server: SQLServer下载| Microsoft
安装SSMS: 下载 SQL Server Management Studio (SSMS)

2.数据库

  1. 数据库:表,索引,视图,存储过程,触发器等

  2. 表:二维表格
    创建表
    主键:primary key(student_id)
    外键:foreign key(course_id) references Course 括号中为外键,references后为外键的表

    create table Products
    ( 
    	prod_id int primary key identity (1,1),
    	prod_name nvarchar(20)  not null,
    	prod_price decimal(8,2)  not null,
    	prod_desc nvarchar(1000) null
    )
    

    更新表

    //添加列
    alter table TabelName
    add vend_phone char(20)
    //删除列
    alter table TabelName
    drop column vend_phone
    

    删除表

    drop table TabelName
    
    关于删除(drop,truncate,delete)
    drop table People 删除表对象
    truncate table People  删除数据(清空数据),表对象即表结构依然存在
    delete from People  删除所有数据,表对象即表结构依然存在
    truncatedelete区别
    truncate清空所有数据,不能有条件,delete可以删除所有数据也可以带条件,删除符合条件的数据
    例如自动编号:
    假设表中自动编号为1,2,3,4,5
    使用truncate清空数据之后在添加数据,编号仍然是1,2,3,4,5
    使用delete删除数据,删除的自动编号将永远不存在了
    如果使用delete删除了所有数据之后,重新插入数据编号就变成了6,7,8,9,10
    
  3. 数据类型:数据表中可存储的数据形式

  4. 索引:为加快访问表中数据的速度,创建基于若干列的值的顺序

  5. SQL增删改查:

    常用关键字 含义
    select 表示要查找出的表所含有的属性
    from 表示要操作的表
    where 判断条件,根据该判断条件选择信息
    between 在where中使用between表示一个数在两个数值之间取值
    all 在select后加入关键字all表示不去重(默认)
    and 在where中使用and表示将判断条件连接起来
    or 在where中使用or表示判断条件多选一
    not 在where中使用not表示判断条件取反
    like 在where中使用like表示模糊匹配属性
    in 在where中使用in表示符合的条件在其中in(1,2),满足一个即可
    distinct 在select后加入关键字distinct表示将结果去重
    查询 
    select 列名 from 表名  order by 
    删除
    delete from 表名 where id=1
    增加
    insert into 表名(列名1,列名2values(‘张三’,‘1364564564’)
    修改
    update 表名 set 列名1=‘张三’,列名2=1364564564’,where id=1
    子查询
    select cust_id
    from Orders
    where order_num IN (select order_num
    from OrderItems
    where prod_id = 'RGAN01')
    
    if not exists(select * from 表名 where 列名=‘张三’
    begin
    insert into 表名(列名1,列名2values(‘张三’,‘644645)...
    end
    

    表连接

    名称 含义
    A,B 在from后面通过逗号连接多张表,表示将这些表进行笛卡儿积运算
    A inner join B on 内连接,只返回符合条件的行
    A left join B on 左连接,包含左边所有行,如果左边某行在右边无匹配,则结果为空(null)
    A right join B on 右连接,包含右边所有行,如果右边某行在左边无匹配,则结果为空(null)
    A full join B on 全外连接,包含full join左右两表中所有的行,如果左边某行在右边无匹配,则结果为空(null),如果右边某行在左边无匹配,则结果为空(null)
    A cross join B on 交叉连接,没有where子句的交叉连接将产生连接所涉及的表的笛卡尔积(笛卡尔积是第一个表行数乘以第二个表行数积的大小)
    函数 含义
    avg 平均值
    min 最小值
    max 最大值
    sum 总和
    count 计数
    group by 分组,以某个列名或条件分组
    having 对group by产生的分组进行筛选,可以使用聚集函数
  6. 视图:对某些表的查询,虚拟表(可从视图更新表数据)
    创建视图

    create view ProductCustomers as
    select cust_name, cust_contact, prod_id
    from Customers, Orders, OrderItems
    where Customers.cust_id = Orders.cust_id
    and OrderItems.order_num = Orders.order_num
    

    删除视图

    drop view viewName
    
  7. 存储过程:若干条查询指令加上条件语句,循环语句写了个程序完成一定的功能
    创建存储过程

    use StudentManager
    go
    if exists(select * from sysobjects where name='usp_ScoreQuery2')
    drop procedure usp_ScoreQuery2
    go
    --创建带参数的存储过程
    create procedure usp_ScoreQuery2 
    @CSharp int,
    @DB int
    as
        select Students.StudentId,StudentName,C#=CSharp,DB=SQLServerDB
        from Students
        inner join ScoreList on Students.StudentId=ScoreList.StudentId
        where CSharp<@CSharp or SQLServerDB<@DB
    go
    

    调用存储过程

    exec usp_ScoreQuery2 60,65 --按照参数顺序赋值
    exec usp_ScoreQuery2 @DB=65,@CSharp=60 --参数顺序可以调换
    

    参考链接: 存储过程的创建与使用

  8. 触发器:事件触发程序代码
    创建触发器

    create trigger insert_trigger ON 表名
    for insert,update
    as
    begin
    print('禁止插入记录!')
    rollback
    end
    go
    

你可能感兴趣的:(SqlServer数据库,sqlserver,数据库)