常用SQL语句

---1.创建名称为 studentoa 的数据库
create database studentoa

---2.删除名称为 studentoa 的数据库
drop database studentoa

---3.使用 studentoa 数据库
use studentoa

---4.在数据库 创建表 information  CREATE TABLE  表名 ( 列名 数据类型, 列名 数据类型, 列名 数据类型 ); 
use studentoa
create table information ( id int primary key, name nvarchar(10) not null, age int, sex nvarchar(6) )

---5. 删除数据表中的列  ALTER TABLE 表名 DROP COLUMN 列名;
alter table information drop column sex;


---6.增加数据表中的列  ALTER TABLE 表名 ADD 列名 数据类型,列名 数据类型
Alter table information add home varchar(20), bus varchar(20)

---7. 数据表中添加数据 INSERT INTO 表名[(列名,列名,列名)] VALUES (值,值,值);
   ---1.全字段,全数据格式
insert into information(id,name,age,home,bus) values (001,'张三',23,'黑龙江','6路')
   ---2.省略全字段,全数据格式
insert into information values(002,'李四',25,'沈阳','7路')
   ---3.部分字段,数据格式
insert into information(id,name,home) values(003,'赵六','吉林')
insert into information(id,name,home,bus) values(004,'田七','吉林','没车')

---8.修改数据表中列数据类型名或者长度 alter table 表名 alter column 列名 数据类型;
alter table information alter column home varchar(30)

---9. 删除数据表中的某一行数据; DELETE FROM 表名 WHERE 筛选条件;
delete from information where name='田七'

---10. 更改数据表中的某一项信息 UPDATE 表名 SET 更改项 = '修改内容' WHERE 筛选条件;
Update information set age=29 where name='赵六'

---11.筛选条件中的比较运算符 Or运算符的应用
   ---(筛选出年龄大于25的或者家乡是东北三省的人员信息) And运算符的应用
select * from information where age>25 or home='沈阳' or home='吉林' or home='黑龙江';
   ---(筛选出年龄大于25并且家乡是东北三省的人员信息)
select * from information where age>25 and home='沈阳' or home='吉林' or home='黑龙江';
   ---注意or和AND的优先级,若怕记混,请用()区分优先级。
   
---12.建表之后添加约束主键   ALTER TABLE表名 ADD CONSTRAINT 约束名 约束类型 约束描述; 
alter table information add constraint abd primary key(id)

---13.建表之后删除约束主键  ALTER TABLE表名DROP CONSTRAINT 约束名;
alter table information drop constraint abd

---14. 几个高级查询运算词

--A: UNION 运算符

--UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

--B: EXCEPT 运算符

--EXCEPT运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

--C: INTERSECT 运算符

--INTERSECT运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

--注:使用运算词的几个查询结果行必须是一致的。


---15、 使用连接

--A、left (outer) join:

--左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

--SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

--B:right (outer) join:

--右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

--C:full/cross (outer) join:

--全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

--D:inner join


---16. Group by:

--一张表,一旦分组 完成后,查询后只能得到组相关的信息。

--组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)

--在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据

--在selecte统计函数中的字段,不能和普通的字段放在一起;


---17.对数据库进行操作:分离数据库: 
use master
go
exec sp_attach_db 'studentoa'
--附加数据库:

--后接表明,附加需要完整的路径名
use master
go
exec sp_attach_db 'studentoa','F:\mysql\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\studentoa.mdf'


---18.如何修改数据库的名称:
use 数据库名称
go
sp_renamedb 'cs', 'cs_old'


----19. Order by 查询结果排序

----ASC从小到大、DESC从大到小

----默认按照升序

----可以按多个列进行排序,首先按前面的列排序,遇到相同记录再按照第二列排序。每个列可按ASC 和DESC 排列

---20. 聚合函数

--COUNT(*):统计表中元素的个数;

--COUNT(DISTINCT 列名):统计本列中非空列值的个数;(DISTINCT表示不包括列重复值)

--SUM:计算列值的和;

--AVG:平均值

--MAX:最大值

--MIN:最小值

--上述函数中除了COUNT(*)外,其他函数在计算过程中均忽略NULL值。


-----21. WHERE条件查询

--比较 =/>/=/

--确定范围 between … and …/not between … and …

--确定集合 IN/NOT IN

--字符匹配 LIKE/NOT LIKE

--空值 IS NULL/IS NOTNULL

--多重条件 AND/OR


---22.LIKE匹配

--_下划线:匹配任意一个字符

--%百分号:匹配0个或多个字符;

--[]:匹配[]中的任意一个字符。如[acgd]表示匹配a/c/g/d中的任何一个,对于连续的,可以写成[a-d];

--[^]:不匹配[]中的任何一个字符。写成[^abgd]。


---23.查询语句
select * from information


练习小题、
1.设有学生表S,课程表C及学生选课表SC:
S (Sno,Sname,Sdept,Sage,Ssex);
C (Cno,Cname,Credit,CPno);
SC(Sno, Cno,Grade)
其中,各属性列的含义如下:
Sno—学号,Sname—姓名,Sdept—系别,Sage—年龄,Ssex—性别
Cno—课程号,Cname-课程名,Credit—学分,CPno—先行课
Grade—成绩
试用SQL语句写出下列操作:

(1)选课表(学号,课程号,成绩),定义学号和课程号为主键,且学号为参照学生表的外键,课程号为参照课程表的外键。
Create table SC
(sno char(12),
 Cno char(12),
 Grade char(5),
Primary key(sno,cno)
Forign key(sno) refereces S(sno),
Forign key(cno) refereces C(cno),
);
(2)    把学生表中的姓名列的列加宽到30位字符宽度。
Alter table S
Alter colmun snane char(30);
(3)    查询选修C3或C4号课程且分数大于等于70分学生的的学号、课程号和成绩。
Select sno,cno,grade
From C,SC
     Where(C.cno=’C3’or C.cno=’C4’)and grade>=70 and SC.cno=C.cno;
(4)    查询有20人以上选修的课程号及选课人数。
Select cno,count(sno)
From SC,C
Where SC.cno=C.cno and count(sno)>=20;
(5)    查询与“信息系统”课程学分相同的所有课程的名称。
Select cname
From C
Where Credit=
(select Credit
From C
Where sname=’信息系统’)and sname<>’信息系统’;
(6)    将一个新选课记录
(学号:200215121;课程号:8;成绩:78)插入到SC表中。
Insert into SC
Values(200215121,8,78)
(7)    将数学系全体学生的成绩置零。
Update table SC
Set Grade=0
Where sno=(
Select S.sno
From S
Where Sdept=’数学系’);
(8)    删除数学系所有学生的选课记录。
Delete 
From SC
Where sno=(
Select S.sno
From S
Where Sdept=’数学系’);

(9)    授予用户王丹对SC有select和对成绩修改的操作权限。
Grant select,update
on SC
To wangdan;
(10)    回收用户王丹对SC的select操作权限。
Revoke select
On SC
From wangdan;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值