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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值