欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL命令学习之旅

程序员文章站 2024-03-08 23:14:34
...

建库建表语句

create database TS
use TS
create table student(
	Sno char(10),
	Sname char(10) not null,
	Ssex char(4) not null check(Ssex in('男','女')) default ('女'),
	Sage int not null,
	Sdept char(20),
	primary key(Sno)
)
	use TS
create table course(
	Cno char(10) primary key,
	Cpno char(10),
	Cname char(10) not null,
	Credit int ,
	foreign key(Cpno) references course(Cno)
)
	use TS
	create table sc(
	Sno char(10),
	Cno char(10),
	Grade smallint,
	primary key (Sno,Cno),
	foreign key(Sno) references student(Sno),
	)
	
	use TS
	insert into student values('01','zhao','男',18,'computer')
	insert into student values('02','qian','男',18,'computer')
	insert into student values('03','sun','男',18,'computer')
	insert into student values('04','li','男',18,'computer')
	insert into student values('05','zhou','男',18,'computer')
	insert into student values('06','wu','男',18,'computer')
	use TS
	insert into course values('01','01','C语言',2)
	insert into course values('02','02','高数',2)
	insert into course values('03','03','英语',3)
	use TS
	insert into sc values('01','01',99)
	insert into sc values('02','02',98)
	insert into sc values('03','03',60)
	use TS
	create clustered index stusname on student(sname)

主键 外键的设置


foreign key(Cpno) references course(Cno)--设置外键

primary key (Sno,Cno)--设置主键

插入insert命令

insert into student values('01','zhao','男',18,'computer')--插入
insert into student(Sno,Sname,Sage,Sdept)  values('088','zhao',18,'computer')--含有默认值时的插入,需要指定插入属性

check unique default约束命令,identity用法

indentity用法
SQL命令学习之旅
SQL命令学习之旅

Ssex char(4) not null check(Ssex in('男','女')) default ('女')--默认值和check约束

create table stu(
id int primary key identity,--identity(自增)
<a src=></a>
name nvarchar(10) unique not null,--不指定非空的情况unique约束可以取空但是主键不可以,区别之处
addre nvarchar(10),
)
insert into stu values('gcl',null);--插入时可以省略indentity约束的列

别名,通配符,聚集函数

select distinct Sno '选修课程的学号' --别名

where Sname like '张%'--%多个,_一个

order by Sno desc--降序排列

group by Sno having COUNT(Cno)>=2--按照学号分组,并把选修超过两门的课程统计

更新删除操作

update student set Sdept='电竞' where Sdept='computer'--更新

delete from  student where Sno='01'--删除

select SYSTEM_USER
use TS
create unique index stusname on student (Sname)--加一索引
sp_helpindex student
drop index stusname on student
use TS
update student set Sdept='电竞' where Sdept='computer'
delete from  course where Cname='C语言' 

新建视图

--新建视图
create view v_最高分 as
select MAX(sc.Grade) as 最高分 ,course.Cno,course.Cname
from course,sc 

where course.Cno=sc.Cno

group by course.Cno,course.Cname--先分组后查询

drop view v_最高分--删除视图

新建用户,权限配置

步骤
新建一个用户,然后给用户创建账户(只能创建一个),最后权限配置(使用role配置)
用户用于登录,账户用于绑定和操作数据库
Window用户是一个超级用户,拥有所有权限,但是用户自己建立的需要自己配置权限
回收权限功能
revoke insert on sc from jy或者teacher 取消jy对于sc表的插入权限

实践
当为超市的建立一个数据库时,可以使用插入,删除,查询role给对应的用户配置权限,于是对应的员工只能使用对应的权限对数据库进行操作
这也体现的role的可重用性

SQL Server有关用户、角色及操作权限的管理方法
use TS--注意新建的用户登录后只能操作TS数据库
create login test with password='123';
create user tester for login test;

create login teacher with password='123';
create user jy for login teacher

create role queryrole--可以给使用此数据库的其他用户配置权限,可以重用
grant select on course to queryrole
grant select on sc to queryrole
grant select on student to queryrole

create role tearole
grant select,insert on course to tearole
grant select,insert on sc to tearole
grant select,insert on student to tearole

exec sp_addrolemember 'queryrole',tester
exec sp_addrolemember 'tearole',jy

注意新建用户登录时需要更改服务器身份验证配置,并且重启SQL sever服务,或者直接电脑重启,因为数据库反应慢每次修改完还要刷新,导致配置完环境也要刷新(重启)一下
SQL命令学习之旅
一个用户只能开立一个账户
SQL命令学习之旅

相关标签: 数据库学习笔记