SQL:Structured Query Language 结构化查询语言
建立数据库:create datebase 数据库名
使用数据库:use 数据库名
删除数据库:drop database 数据库名
建立表:(举例)
create table student( 学号 char(3) not null, 姓名 nchar(3) not null, 性别 nchar(1) not null, 年龄 int not null, 系号 nchar(5) null );
删除表:drop table 表名
查看表属性:exec sp_help 表名
复制表:select * into 新表名 from 表名
插入数据:
insert into stu_info(学号,姓名,性别,年龄,系号) values(001,‘李林’,‘男’,18,‘D01’
查看表数据:select * from 表名 where 条件
修改表的数据:update 表名 set 列名=新数据 where 条件
删除表数据:delete from 表名 where 条件
增加列:alter table 表名 add column 列名 数据类型 NULL
删除列:alter table 表名 drop column 列名
修改列的数据类型:alter table 表名 alter column 列名 新数据类型
三个表连起来:
select a.列名,b.列名,c.列名 from 表名 a inner join 表名 b on a.列名=b.列名
inner join 表名 c on b.列名=c.列名
where 条件
between的用法:
select * from 表名 where 性别=‘女’ and 年龄 between 15 and 17
查询没有选修“办公软件”课程的学生的学号,姓名(三个表)
select a.学号,姓名 from stu_info a inner join grade b on a.学号=b.学号 inner join curriculum c on b.课程编号=c.课程编号 where 课程名称 not in(select 课程名称 from curriculum where 课程名称=‘办公软件’)
查看成绩前三:
select top 3 成绩 from 表名 where 条件 order by 成绩 desc
创建视图:
create view 视图名 as select * from 表名 where 条件
查看人数、平均分:
create view 视图名 as select 课程编号 ,count(学号) as 选修人数, avg(成绩) as 平均分 from 表名 group by 课程编号
查询存储过程:exec 存储过程名称 ‘条件’,‘条件’(数字不用’ ')
删除存储过程:drop proc 存储过程名
用户
- 创建用户:
create login 用户名 with password='密码’
- 更改登录用户:
alter login 用户名 with name=新用户名,password='新密码’
- 删除登录用户:
drop login 用户名
4. 用户授权:
- 问题:点开新用户的数据库,不能使用!没授权!
- 回到Windows管理员窗口,用命令打开数据库:
use 数据库名
- 用命令为登录用户TOM建立数据库banking的用户,也叫TOM(例子)
create user TOM for login TOM
–有了数据库用户后,对象资源管理器里Tom的banking能打开了,banking数据库里的安全性-用户-看见用户TOM,但是没有权限看表
- 把用户TOM加到系统管理角色sysadmin成员里(给权限):
exec sp_addsrvrolemember ‘用户名’,'sysadim’
— 用户有了系统管理权限后,刷新用户的数据库,发现有权限看表了!测试查询语句、插入语句、更新语句,能成功运行!
- 程查看系统管理角色sysadmin成员
exec sp_helpsrvrolemember 'sysadmin
– 用户被包含在sysadmin成员里
- 删除用户
exec sp_dropsrvrolemember ‘用户名’,'sysadmin’
- 把用户加到ddl管理角色ddladmin成员里
exec sp_addrolemember ‘db_ddladmin’, '用户名’
—可以操作ddl语句
- 查看DDL管理角色ddladmin成员
exec sp_helprolemember 'db_ddladmin
用户是的db_ddladmin 成员,仍然不具有增删查改功能,因为DDL语句只包含CREATE\ALTER\DROP等,不包括INSERT\UPDATE\DELETE等
- 把用户加到所有者管理角色db_owner成员里(给权限)
exec sp_addrolemember ‘db_owner’, '用户名’
—增删查改功能又恢复了
- 查询所有者角色db_owner成员
exec sp_helprolemember 'db_owner '
- 把用户从系统管理角色db_owner成员里删除
exec sp_droprolemember ‘db_owner’, ‘用户名’
— 删除了数据库主人这个角色
- 授建立表的权限给用户
grant create table to 用户名
- 在用户窗口建立测试表1,成功
create table 测试表1()
- 拒绝授建立表的权限给用户
deny create table to 用户名
- 在用户窗口建立测试表2,失败
create table 测试表2()