• SQL基础


    数据库基础

    从据库对象的目录依次深入,是入门数据库的一个不错的方法。可以全面的,系统的了解数据库。
    想深入,就必须多逛逛官网啊SQL语言参考

    数据库备份设备
    exec sp_addumpdevice 'disk','device_name','d:device_name.bak'
    删除备份设备
    exec sp_dropdevice device_name
    数据库完全备份
    backup database DB_Names to device_name
    数据库差异备份
    backup database DB_Names to device_name with differential
    日志备份
    backup log DB_Names to device_name
    查看备份文件
    RESTORE LABELONLY FROM AdvWrks2008R2Backup
    数据库还原
    
    restore database DB_Names from device_name with file=1,norecovery
    新建数据库登录身份认证登录名
    create login [NT SERVICE
    ame] from windows with default_database=[DB_Club]
    新建密码登录名
    create login loginname with password=N'password', default_database=[master] 
    删除登录名
    drop user loginUser
    为登录名创建用户
    create user loginUser for login [NT SERVICE
    ame]
    
    Connect授权
    grant connect to username
    拒绝connect授权
    deny connect to username
    表操作权限授权
    grant select,update,delete on tablename to username
    拒绝表操作权限授权
    deny select,update,delete on tablename to username
    创建架构
    create schema schemaname authorization username
    撤销用户查询表授权
    revoke select on tablename from username
    撤销用户创建存储过程的权利
    revoke create procedure from username
    
    创建数据库角色
    exec sp_addrole rolename
    给予角色建表权限
    grant create table to rolename
    从角色中权限授予用户
    exec sp_addrolemember 'rolename','username'
    删除角色
    exec sp_droprole 'rolename'
    从角色中删除用户
    exec sp_droprolemember 'rolename','username'
    
    创建触发器
    create trigger triggername on database for drop_table as print'删除表触发trigger!'
    create trigger triggername on [dbo].[TB_Tablename] instead of delete as print'删除操作被trigger取代!'
    create trigger triggername on [dbo].[TB_Tablename] after delete as print'删除操作后数据回滚!' rollback
    修改触发器
    alter trigger triggername on tb_tbname for insert as print'修改触发器!'
    禁用触发器
    disable trigger triggername on database
    启用触发器
    enable trigger triggername on tablename
    删除触发器
    drop trigger triggername
    
    创建存储过程
    create procedure sp_pronamee @argument char(3) as print'执行存储过程!'
    修改存储过程
    alter procedure sp_proname as print'修改存储过程!'
    删除存储过程
    drop procedure procname
    
    创建函数
    create function function_name(@params nvarchar[,@params nvarchar])
    returns [nvarchar|@table_name table(id int,column_name nvarchar(20))]
    as
    begin
    insert into @table_name values(1,'')--如果返回表变量则需要修改表,并且只能空return
    reutrn @params
    end
    
    创建类型(表)
    crate type type_name as table(columnName nvarchar(20))
    
    发出警报
    if object_id('tr_triggername','tr') is not null raiserror 50005 N'发出警报'
    
    创建视图
    create view viewname as select * from Tb_Book
    删除视图
    drop view [viewname] as ....
    修改视图
    alter view as
    
    新建索引
    create [unique]|[clustered| noclustered ] index index_name on { table | view }(column [asc|desc])
    删除索引
    drop index index_name on tableName
    
    游标
    declare cursorName cursor [global|Local]{forward_only|scroll} for (select * form tableName)
    open cursorName
    fetch next cursorName into @ccc
    print @ccc---处理语句
    close cursorName
    deallocate cursorName
    
    --查询语法
    Select [字段名[,字段名1]|*]
    from [TableName]
    [inner|left|rigth|full|Crss] join [TableName]
    where 判断条件
    分组
    group by
    --统计
    with cube|rollup
    --分组条件
    having
    --联合|排除
    Union [All]|Except
    --排序
    order by
    
    --插入记录
    insert into values
    --新建表并录入查询数据
    select into from where
    --像结构一致的表里添加数据
    insert into select from where
    --更新数据
    update set where
    
    --新建表
    creae table [tableName](
    columnName [int|navarchar|类型] primary key not null//创建主键,且不为空
    columnName 数据类型 not null foreign key references TableName(ColumnName)--创建外键
    columnName [int|bigint] identity(1,1)--自增字段
    columnName 数据类型 check (columnName like '')--like约束,*%代表任意多的字符,[0-9]代表0-9的数字.代表一个字符
    constraint 约束名称 Foreign key(columnName) references TableName(ColumnName)--另一种添加约束的途径
    )
    新建字段
    alter tableName add columnName ......
    新建约束
    alter tableName add constraint constraintName 约束类型 ...............
    修改字段
    alter table alter column columnName .......
    修改表|字段|触发器|存储过程等数据库对象名称
    sp_rename 'oldName','newName'
    删除表
    drop table [tableName]
    清空表
    truncate table tableName
    删除字段
    alter table tableName drop column columnName
    删除约束
    alter table tableName drop constraint constraintName
    禁用约束
    alter table tableName uncheck constraint constraintName
    启用约束
    alter table tableName check constraint constraintName
    
    语句块
    begin [语句] end
    判断语句
    if [判断语句]
    循环语句
    while [判断条件]
    递归循环(1到20循环)
    with tt as (select 1 dg union all select dg+1 from tt where dg<20 )select * from tt
    分支语句
    case [字段,值,或者为空] when [值|判断条件] then [值|操纵语句] else [值|操纵语句] end
    异常抓取
    try [可能存在异常的语句] end try
    catch [异常处理语句] end catch
    
    字符串截取
    substring('要截断的字符',[开始位置],[结束位置])
    从左边开始截取
    left('要截取的字符',[长度])
    从右边开始截取
    right('要截取的字符',[长度])
    得到字符串长度
    len('字符串')
    charindex('匹配字符或正则','要搜索的字符串',[开始的位置(可以为空)])
    字符串替换
    replace('要搜索的字符串','匹配字符或正则','替换的字符')
    
    获取当前系统时间
    Date()
    获取时间年份
    yeaar(Date)
    获取月份
    month()
    时间比较
    datediff([year|month|day|Week|Hour],Date1,Date2)
    时间修改
    dateadd([year|month|day|Week|Hour],调整值,Date)
    
    类型转化
    cast('要转化的字符' as 要转化的类型) 
    convert(类型,'转化的字符'[,长度])
    
    数据提供服务,访问不经常访问的资源(Excel)
    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=C:DataFolderDocumentsTestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;
    数据提供服务,其他资源提供CRUD(Excel)
    OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:Trigger_v2.xlsx;','SELECT * FROM [sheetName$A1:E12]')
    打开XML文件(文件需要载入内存并分析见sp_xml_preparedocument 函数)
    OPENXML(@xml,'节点XQuery',[0,1,2,8]) with (XML[节点|属性名] 参数类型[,XML[节点|属性名] 参数类型])--第三个参数为读取方式,with可以用XQuery
    
    链接服务器,提供频繁的数据访问与修改(打开Excel)
    EXEC sp_addlinkedserver 'ExcelSource',
       'ACE 12.0',
       'Microsoft.ACE.OLEDB.12.0',
       'F:myTestOledbQueryExcel.xlsx',
       NULL,
       'Excel 12.0';
    SELECT * FROM ExcelSource...sheetName
    删除链接服务器
    EXEC sp_droplinkedsrvlogin @rmtsrvname='ExcelSource'[, @locallogin='Excel 12.0']
    查询服务器,提供像表一样的数据源(可以CRUD)
    select * from OPENQUERY ( linked_server ,'查询语句')
  • 相关阅读:
    Yii2 使用 Beanstalk 队列系统
    Yii2 注册表单验证规则 手机注册时候使用短信验证码
    Yii2 高级模板 多域名管理问题
    PHP生成缩略图,控制图片质量,支持.png .jpg .gif
    yii2-lock-form 也许这就是你想要的,阻止表单多次提交
    PHP日期与时间戳转换
    PHP/Yii2操作Cookie,常见问题以及注意事项
    对称加密,API加密
    yii2弹出层
    两种不同的Context
  • 原文地址:https://www.cnblogs.com/Thancoo/p/SQL_sqlfundation.html
Copyright © 2020-2023  润新知