当前位置:网站首页>数据库超话(一)
数据库超话(一)
2022-07-27 15:28:00 【泡泡里的月亮】
1.如何修改数据表
使用alter table命令
(1)add
alter table <表名>
add <列定义>|<完整性约束定义>
例子:
(1)增加列:
alter table S
add sn int(6)
(2)增加默认值约束
alter table S
add constraint DF_S_T default(2) for time
(3)增加主键约束
alter table S
add constraint PK_S_Id primary key(id)
(4)增加唯一键约束
alter table S
add constraint UQ_S_Name unique(id)
(5)增加外键键约束
alter table SC
add constraint FK_SC_S foreign key(sno) references S(sno)
6)增加check约束
alter table SC
add constraint Score_Chk check(score between 0 and 100)
注意:
- 使用此方式增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束。
(2)alter
alter table <表名>
alter column<列名><数据类型>[null|not null]
例子:
(1)加宽列到12字符
alter table S
alter column sn nvarchar(12)
(2)修改数据类型
alter table TbStudent
alter column stuGender nchar(1)
(3)修改约束类型
alter table TbStudent alter column stuPhone char(11) not null
注意:
不能改变列名;
不能将含有空值的列的定义修改为NOT NULL约束;
若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型;
只能修改NULL/NOT NULL约束,其他类型的约束在修改之前必须先将约束删除,然后再重新添加修改过的约束定义。
(3)drop
alter table <表名>
dorp aonstraint <约束名>
alter table <表名>
drop column <列名>
例子:
(1)删除约束
alter table S
drop constraint UQ_S_Name
(2)删除列
alter table S
drop column dept
2.区分count、count(*)
count(*):统计表中元组的个数。不可以去重,计算NULL 值
count([distinct] <列名>):统计列值个数。可以去重,不计算NULL
注意:
- 在库函数中,除COUNT(*)外,其他函数在计算过程中均忽略NULL值。
(1)求学校中共有多少个系。
SELECT COUNT(DISTINCT Dept) AS DeptNum FROM S
(2)统计有成绩的列值个数。
SELECT COUNT (Score) FROM SC
上例中成绩为0的同学也计算在内,没有成绩(即为空值)的不计算。
(3)查询出计算机系选课小于3门的学生的姓名、选课门数,包括没有选课的学生。要求按照选课门数的降序排序,如果选课门数相同,按照姓名升序排序
select sn,count(cno) 选课门数
from S left outer join SC on S.sno = SC.sno
where dept="计算机系"
group by S.sno
having count(cno)<3
order by count(cno) desc sn asc
(4)S表中男同学是每一年龄组(超过50人)的有多少人数,按人数升序排序,人数相同的按年龄降序
select <font color='red'>age </font>,count(*) 人数 #注意这里的age不能忘
from S
where sex='男'
group by age
having count( * )> 50
order by count(*),age desc
第(3)题不能使用count( * ),在没有选课的学生中,使用count(*)依然会计算出选课门数,而使用count(cno),直接算每组的课程号的数目,可以正确计算出选课数目
另外注意,count和group by连用时,count统计的数量是被group by 分组以后每一组中数据的数量,而不是分组的数量。
3.SQL语句的执行顺序
在SQLServer中
图片为网上大佬绘制
4.区分where、having以及清楚group by是使用
- GROUP BY子句中的分组依据列必须是表中存在的列名,不能使用AS子句指派的列别名。
- 指定GROUP BY时,选择列表中任一非聚合表达式内的所有列都应包含在
- WHERE子句用来筛选FROM子句中指定的数据源所产生的行数据。
- GROUP BY子句用来对经WHERE子句筛选后的结果数据进行分组。
- HAVING子句用来对分组后的统计结果再进行筛选。
- HAVING子句中能够使用三种要素:常数,聚合函数,GROUP BY子句中指定的列名(聚合建)
1.查询计算机系和信息管理系每个系的学生人数。
第一种:#(正确)
SELECT Sdept, COUNT(*) FROM Student
GROUP BY Sdept
HAVING Sdept in ( '计算机系', '信息管理系')
第二种:#(正确)
SELECT sdept, COUNT (*) FROM Student
WHERE Sdept in ( '计算机系', '信息管理系')
GROUP BY Sdept
2.查询每个系年龄小于等于20的学生人数。#(正确)
SELECT sdept,COUNT (*) FROM Student
WHERE Sage <= 20
GROUP BY Sdept
SELECT Sdept, COUNT(*) FROM Student# (错误)
GROUP BY Sdept
HAVING Sage <= 20
第二种错误的原因是Sage没有在group by中出现
注意:
- 可以在分组操作之前应用的筛选条件,在WHERE子句中指定更有效。
- 在HAVING子句中指定的筛选条件应该是那些必须在执行分组操作之后应用的筛选条件。
- 将所有应该在分组之前进行的筛选条件放在WHERE子句中而不是HAVING子句中。
5.常用数据操纵语言和数据定义语言的语法
修改数据表
Alter table <表名>
Add <列定义> |<完整性约束>
Alter table <表名>
Alter colum <列名><数据类型> [null | not null]
Alter table <表名>
drop constraint <约束名>|colum<列名>
删除基本表
Drop table <表名>
添加数据
Insert into <表名> [(<列名1>[,<列名2>])]
Values (<值>) | 子查询
修改数据
Update <表名>
Set <列名>=<表达式>[,<列名>=<表达式>]
[where <条件>]
删除数据
Delete
From <表名>
[where <条件>]
创建视图
Create view <视图名>[(视图列名)[, (视图列名)]
As 查询语句
彩色记忆卡:
边栏推荐
- MySQL : 函数
- Kubernetes Chapter 8: deploy NFS system with kubernetes to complete database persistence (kubernetes work practice class)
- Uncle's nephew and his students
- 神经网络实现手写数字分类matlab
- An analysis of CPU explosion of a smart logistics WCS system in.Net
- Tencent cloud upload
- How to extract tables from PDF through C /vb.net
- 小于n的最大数
- 阿里巴巴鹰眼系统简介
- Introduction to Alibaba eagle eye system
猜你喜欢

Uncle's nephew and his students

Flex flex flex box layout
![[SAML SSO solution] Shanghai daoning brings you SAML for asp NET/SAML for ASP. Net core download, trial, tutorial](/img/7d/c372dba73531f4574ca3d379668b13.jpg)
[SAML SSO solution] Shanghai daoning brings you SAML for asp NET/SAML for ASP. Net core download, trial, tutorial

大排量硬核产品来袭,坦克品牌能否冲破自主品牌天花板?

交换机和路由器技术-02-以太网交换机工作原理

Reference of meta data placeholder

Flex flex flex box layout 2

苹果官网罕见打折,iPhone13全系优惠600元;国际象棋机器人弄伤对弈儿童手指;国内Go语言爱好者发起新编程语言|极客头条...

KMP template - string matching

Neural network implementation of handwritten numeral classification matlab
随机推荐
Motion capture system for end positioning control of flexible manipulator
An analysis of CPU explosion of a smart logistics WCS system in.Net
Flex flex flex box layout
AppStore 内购
SVM+Surf+K-means花朵分类(Matlab)
Tencent cloud upload
Windows and network foundation-15-local security policy
2021-06-18 automatic assembly error in SSM project
Redis: 配置AOF不起作用
SAP UI5 FileUploader 的隐藏 iframe 设计明细
阿里巴巴鹰眼系统简介
密集光流提取dense_flow理解
20 years ago, he was Ma Yun's biggest enemy
SAP UI5 FileUploader 的本地文件上传技术实现分享
7 岁男孩被 AI 机器人折断手指,仅因下棋太快?
Three table joint query 1
(2)融合cbam的two-stream项目搭建----数据准备
腾讯云上传使用
Gree "not cool": the giant lawsuit ended and was reduced by large dealers. Is it too late for the new battlefield of air conditioning?
如何通过C#/VB.NET从PDF中提取表格