sql 基础
程序员文章站
2022-05-29 09:41:14
去除数据库登录界面的所有用户信息 查询姓名中第二个字与第三个字相同: 用户授权 1 创建用户 2 增删改查授权 3 创建表 4 存储过程授权 5 禁止对表授权 6 回收权限 7 删除表 8 修改列 9 创建一个简单的登录,登录名为:newlogin;登录密码:123456;默认数据库:master, ......
去除数据库登录界面的所有用户信息
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 a delete from dbo.a drop table a
8 修改列
alter table a add sa nvarchar(10) not null alter table a add constraint pk_course_cno primary key(id) alter table a alter column id int alter table a drop constraint pk_a alter 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_rule as @hire_date>='1980-01-01' and @hire_date<=getdate()
2 创建性别规则sex_rule
create rule sex_rule as @sex in ('男','女')
3 -创建评分规则grade_rule
create rule grade_rule as @value between 1 and 100
4 创建字符规则my_character_rule
create rule my_character_rule as @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 t where 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.sid inner 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 int set @id =10 if @id>5 begin print 'ok' end else begin print 'no' end
3 循环语句
declare @id int set @id=1 while @id<10 begin print @id set @id=@id+1 end
4 异常
begin try delete from sc--不能成功 end try begin catch print @@error --判断错误信息 0对 end catch
5 事务:回滚函数
begin try begin transaction --开启事务 --错误sql commit tran --提交事务 end try begin catch rollback tran --回退事务 end catch
6 锁:同步
begin tran --锁上 --修改操作 rollback tran --开锁 commit tran