sql 基础

去除数据库登录界面的所有用户信息

C:\Users\asus\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

查询姓名中第二个字与第三个字相同:

select * from Student s2 where SUBSTRING(s2.sname,2,1)=SUBSTRING(s2.sname,3,1)

用户授权

1 创建用户

create login names with password='pwd' , default_database=test;create user names for login names with default_schema=dbo;

2 增删改查授权

grant select,insert,UPDATE,DELETE on 表 to names

3 创建表

grant create table to names GRANT ALTER ON SCHEMA::dbo TO names;

4 存储过程授权

GRANT EXECUTE ON 存储过程名 TO username

5 禁止对表授权

DENY UPDATE ON 表 TO username CASCADE;

6 回收权限

REVOKE DELETE ON 表 FROM username

7 删除表

truncate table adelete from dbo.adrop table a

8 修改列

alter table a add sa nvarchar(10) not nullAlter Table a Add Constraint PK_Course_Cno Primary Key(id)ALTER TABLE a ALTER COLUMN id intALTER TABLE a DROP CONSTRAINT PK_aalter table a drop column sa

9 创建一个简单的登录,登录名为:newlogin;登录密码:123456;默认数据库:master,默认数据库也可以不指定。

EXEC sp_addlogin 'newlogin','123456','master'

10 创建用户

  • 创建一个简单的用户,如果不指定用户名,则添加到当前数据库登录名中,如果不指定角色,则该用户默认属于public角色。下为添加newlogin登录名。
EXEC sp_adduser 'newlogin'
  • 创建一个带用户名的用户,用户可以与登录名相同(同上一种类似),也可以不同,但要设定当前登录名,用户角色可选,默认为public。下为将用户newuser添加到newlogin登录名中。
EXEC sp_adduser 'newlogin','newuser'
  • 创建角色
EXEC sp_addrole 'newrole'
  • 下为将用户下为将用户newuser添加到newlogin登录名中。并指定newrole角色。
EXEC sp_adduser 'newlogin','newuser','newrole'
  • 为角色newrole赋予jobs表的所有权限
GRANT ALL ON jobs TO newrole
  • 为角色newrole赋予sales表的查、改权限
GRANT SELECT,UPDATE ON sales TO newrole
  • 禁止角色newrole使用employees表的插入权限
DENY INSERT ON employees TO newrole
  • 另一种创建用户和赋予角色的方式
  • 为登录newlogin在数据库中添加安全账户newuser
EXEC sp_grantdbaccess 'newlogin','newuser'
  • 添加newuser为角色newrole的成员
EXEC sp_addrolemember 'newrole','newuser'
  • 数据库用户、角色、登录的删除操作
  • 删除当前数据库用户
EXEC sp_revokedbaccess 'newuser';
  • 删除数据库登录
EXEC sp_droplogin 'newlogin'
  • 删除数据库角色
EXEC sp_droprole 'newrole'
  • 从数据库角色(newrole)中删除用户(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
  • 用SQL代码新建登录、用户.创建带密码的mylogin登录名,MUST_CHANGE 选项需要用户首次连接服务器时更改此密码。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
  • 创建映射到凭据的登录名。以下示例将创建mylogin登录名。此登录名将映射到mycredential凭据。
CREATE LOGIN mylogin WITH PASSWORD = '123456',CREDENTIAL = mycredential;
  • 从Windows 域帐户创建登录名.如果从Windows 域帐户映射登录名,则登录名必须用方括号([ ]) 括起来。
CREATE LOGIN [jack\xiangzhao] FROM WINDOWS;
  • 如果指定用户名,则不使用默认登录名作为该数据库用户
CREATE USER myuser FOR LOGIN mylogin
  • 以下示例将创建用户myuser拥有的数据库角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
  • 以下示例将创建db_role固定数据库角色拥有的数据库角色myrole
CREATE ROLE myrole AUTHORIZATION db_role

规则

1 创建雇佣日期规则 hire_date_rule

CREATE RULE hire_date_ruleAS @hire_date>='1980-01-01' and @hire_date<=getdate()

2 创建性别规则sex_rule

CREATE RULE sex_ruleAS @sex in ('男','女')

3 -创建评分规则grade_rule

CREATE RULE grade_ruleAS @value between 1 and 100

4 创建字符规则my_character_rule

Create rule my_character_ruleAs @value like '[a-z]%[0-9]' 

5 sp_helptext 查看规则,查看规则hire_date_rule的文本信息

EXECUTE sp_helptext hire_date_rule

6 sp_bindrule绑定规则

  • 将规则hire_date_rule绑定到employee表的hire_date列上
EXEC sp_bindrule hire_date_rule, 'employee.hire_date'
  • 定义用户定义数据类型pat_char,将规则my_character_rule绑定到pat_var上
EXEC sp_addtype pat_char,'varchar(10)','NOT NULL'EXEC sp_bindrule my_character_rule, pat_char, 'futureonly';

7 sp_unbindrule 解除规则的绑定

  • 解除绑定在employee表的hire_date列和用户定义数据类型pat_char上的规则
EXEC sp_unbindrule 'employee.hire_date';* DROP RULE语句删除当前数据库中的一个或多个规则DROP RULE sex_rule,hire_date_rule 

分页

select * from (select * ,ROW_NUMBER() over(order by sid) as rowcindex --增加索引from Student) as twhere t.rowcindex between 1 and 3;

分裂与合并

select s.sid,s.sname,max(case c.cname when '语文' then sc.score end) as '语文',min(case c.cname when '数学' then sc.score end) as '数学',sum(case c.cname when '英语' then sc.score end) as '英语',max(case c.cname when '化学' then sc.score else 0 end) as '化学'from (Student as s inner join SC as sc on s.sid=sc.sidinner join Course as c on c.cid=sc.cid)group by s.sid,s.sname;

T-sql

1 全局变量

select @@VERSION --数据库版本insert into Course values('',''); select @@IDENTITY --获取最近insert语句的标识print @@servername --服务器名称print @@rowcount--返回受影响的行数

2 选择语句

declare @id intset @id =10if @id>5begin    print 'ok'endelsebegin    print 'no'end

3 循环语句

declare @id intset @id=1while @id<10begin print @idset @id=@id+1end

4 异常

begin trydelete from SC--不能成功end trybegin catchprint @@error --判断错误信息 0对end catch

5 事务:回滚函数

begin trybegin transaction --开启事务--错误SQLcommit tran --提交事务end trybegin catchrollback tran --回退事务end catch

6 锁:同步

begin tran --锁上 --修改操作rollback tran --开锁 commit tran
(0)

相关推荐

  • 禁用或启用数据库所有触发器

    禁用或启用数据库所有触发器. 禁用: use TestExec sp_msforeachtable "ALTER TABLE ? DISABLE TRIGGER all" GO S ...

  • 图解SQL基础知识,小白也能看懂的SQL文章!

    作者:不剪发的Tony老师 链接:https://blog.csdn.net/horses/article/details/104553075 本文介绍关系数据库的设计思想:在 SQL 中,一切皆关系 ...

  • 聊聊SQL优化的基础思路

    SQL优化是Oracle数据库中比较难的部分,需要对Oracle数据库具备非常扎实的理论基础.但是在刚开始接触时,往往不能很好地将理论知识应用到实践,或者有了一定的思路,又不自信或不敢确定是不是正确的 ...

  • 渗透测试之SQL注入基础

    渗透测试之SQL注入基础 SQL注入类型 按照数据类型类型来分类 按照执行效果来分类(页面回显效果) 按照数据提交的方式来分类 判断注入类型的方法 MySQL注入基础 联合查询注入 布尔注入 时间盲注 ...

  • SQL sever基础语法

    SQL sever基础语法 语法简介: l Create database 数据库名: l Use database 数据库名: l SQL对字母大小写不敏感: l 文本或字符串用单引号: 常用命令: ...

  • 数据分析必备——SQL入门基础知识(下)

    数据分析必备--SQL入门基础知识(下) 原创小飞象数据分析社群2021-02-13 16:57:23 今天继续分享SQL入门基础知识 09 WHERE语法 Where是条件语法,后跟具体的条件. 语 ...

  • 产品经理10大基础技能(1):读透SQL

    本文总结分享了什么是SQL.它的应用场景.如何学习掌握.如何具体操作? 本篇灵感源自援引<经济学人>最近发表的一篇文章,预计2020年将成为AI技术全面成为主流的一年而起,先撰写比较火热的 ...

  • MySQL基础SQL命令---增删改查

    MySQL基础SQL命令---增删改查

  • SQL数据库基础

    SQL:Structured Quety Language SQL SERVER是一个以客户/服务器(c/s)模式访问.使用Transact-SQL语言的关系型数据库管理子系统(RDBMS) DBMS ...

  • Excel 即使没有基础也可以轻松利用SQL查询了

    Excel SQL 查询引擎 在之前的文章之中,给大家介绍一个很强大的工具EFunction,里面有个很好用的函数叫做ETSQL,如果你懂得编写SQL脚本,利用ETSQL函数,就能够极大的丰富Exce ...