--================先通过设计器手动添加,然后通过代码来添加====
--============手动增加约束==========
--手动删除一列(删除EmpAddress列)
alter table Employees drop column EmpAddress
go--手动增加一列(增加一列EmpAddr varchar(1000))
alter table Employees add EmpAddr varchar(1000)--手动修改一下EmpEmail的数据类型(varchar(200))
alter table Employees alter column EmpAddr varchar(200)
go--为EmpId增加一个主键约束
alter table Employees
add constraint PK_Employees_EmpId primary key(EmpId)--非空约束,为EmpName增加一个非空约束,修改列为not null
--增加一个非空约束其实就是修改列
alter table Employees
alter column EmpName varchar(50) not null
go--为EmpName增加一个唯一约束
alter table Employees add constraint
UQ_Employees_EmpName unique(EmpName)
Go--为性别增加一个默认约束,默认为'男'
alter table Employees add constraint
DF_Employees_EmpGender default('男') for EmpGender go--为年龄增加一个检查约束:年龄必须在0-120岁之间,含0岁与120岁。
alter table Employees add constraint
CK_Emplpoyees_EmpAge check(empage>=0 and empage<=120)
go--增加外键约束,表Employee中有一列EmpDeptId引用TblDepartment表中的DeptIdalter table Employees add  DeptId int not null
alter table Department add constraint
PK_Department_DeptId primary key(DepId)alter table Employees add constraint
FK_Employees_Department foreign key(DeptId)
references Department(DepId) on delete cascade--先删除原来的外键
alter table Employees drop constraint FK_Employees_Department--删除某个名字的约束--一条语句删除多个约束,约束名用 逗号 隔开
alter table Employees drop constraintFK_Employees_Department,CK_Emplpoyees_EmpAge,
UQ_Employees_EmpName--用一条语句为表增加多个约束。
alter table Employees add
constraint UQ_Employees_EmpName unique(EmpName),
constraint CK_Emplpoyees_EmpAge check(EmpAge>=0 and EmpAge<=120)

--===============给列起名的三种方式
select
Fid as 学号,
fname as 姓名,
fage 年龄,
性别=fgender,
数学成绩=fmath,
英语成绩=fenglish
from MyStudent--获得系统时间
select getdate()--top 数字后加percent表示百分比,如果百分比最后计算出来的条数中有小数,则直接进位。
select top 30 percent * from MyStudent order by fage desc

--===================distinct去除重复数据=======
select distinct uname,uage from Test2
--==============数据库中的自带函数
--查询数学成绩中,最高分是多少分
select max(fMath) as 数学成绩最高分 from MyStudentselect min(fMath) as 数学成绩最低分 from MyStudent--求总分,求和
select sum(fmath) as 总分 from MyStudent--求班级中的总的记录条数(总人数)
select count(*) as 班级总人数 from MyStudent
--计算平均分的时候对空值不处理
select avg(uscore) from Test3
--count计算的时候也不考虑空值
select count(uscore) from Test3
--求平均分
select avg(fmath) as 平均分 from MyStudent
--====================sql 中的语法
--推荐使用between ... and ...
--between 18 and 24 and也相当于是>=18 and <=24--在1,2,3中选择任意一个班级都返回true
--可以用in()语法替换多个or
select * from TblStudent
where tsclassid in (1,2,3)

--------------------------模糊查询=================================
--通配符%表示:任意多个任意字符
select * from Mystudent
where fname like '赵%'--通配符 _ :表示任意的单个字符。
select * from Mystudent--表示x与y之间只要不是'磊'或'伟'的任意单个字符都可以。
--[]通配符,表示中括号中的任意个字符,只选一个匹配。
--[^]表示除了中括号中的任意单个字符。where fname like '赵__'select * from MyStudent
where fname like '%[磊伟]%'select * from MyStudent
where fname like 'x[^磊伟]y'--查询出姓名中包含百分号的
--用[]括起来,就表示转义了。
select * from MyStudent
where fname like '%[%]%'select * from MyStudent
where fname like '%[_]%'--查询出所有不姓赵的同学
select * from Mystudent
where fname not like '赵%' --1.请查询出学生表中所有数学成绩为null的人的信息
--null在数据库中表示unkonw(不知道),判断一个值是否为null,也就不能用=或者<>来判断--查询所有fmath为null的值。
select * from MyStudent where fmath is null--查询所有fmath为非null的值。
select * from MyStudent where fmath is not null--null值与任何数据运算后得到的还是null值。
--就像不知道与1相加结果还是不知道。--注意:同一列上的数据,数据类型必须一致,如果不一致就会报错。所以要求自己定义查询的时候,注意同一列数据类型一致。
--这里的'缺考',只存在与查询出的结果集中,表中的数据没有变化
数学成绩=isnull(cast(fmath as varchar(50)),'缺考')

--=================sql中的执行顺序===================
select
--distinct / top 之类的关键字(这些都是一些现实的选项)
fgender as 性别,  --5>选择列
count(*) as 人数
from MyStudent --1>先从MyStudent表中拿到数据(全部数据的一个结果集)
where fage>30  --2>从MyStudent的数据中筛选出所有年龄大于30岁的人的信息(新结果集,都是年龄大于30的)
group by fgender --3>按照性别分组,分完组以后又得到一个新结果集(分组后的结果)
having count(*)>355 --4>基于分组以后的结果集,然后在筛选,筛选出那些组中记录大于500的组。
order by  人数 desc--6>最后把显示出来的结果排序

--=================================================
select
--tsname as 姓名,
tsclassid as 班级Id,
count(*) as 班级人数
from TblStudent
where tsgender='男'
group by TSClassId
--一般分组语句group by 都要与聚合函数配合使用,如果没有聚合函数,分组的意义不大。--当在select查询语句中出现聚合函数时,这时不能在select查询中再出现其他列,除非:该列也在group子句中出现或者也在聚合函数中出现。

--========================类型转换============================、
--select 100+'hello'
--select 'hello'+100select 100+'100'select cast(100 as varchar(10))+'hello'
select convert(varchar(10),100)+'hello'select convert(varchar(50),getdate())select convert(varchar(50),getdate())
select convert(varchar(50),getdate(),101)
select convert(varchar(50),getdate(),100)

------------------------联合---------------------------------------
--union联合的作用就是将多个结果集并到了一起
select fname,fage from mystudent where fid>999
union all
select tsname,tsage from itcastcn..tblstudent where tsid>12

--===================================================
--当联合的时候注意:
--1.多个结果集中的列的数据类型必须一一对应
--2.列的个数必须一样
--联合的时候如果只写union,则会去除重复数据,如果写union all则不会去除重复数据。由于一般情况下我们都没有重复数据,所以也不需要去除,所以我们一般建议使用union all。

--================字符串函数=================
select len('哈哈hello') --返回字符的个数
select datalength('哈哈hello') --返回是字节个数select lower('AaBb')select UPPeR('AaBb')select '==========='+rtrim(ltrim('     aaa       '))+'==============='--从左边数,截取10个字符
select left('hello welcome to China.',10)--从右边数,截取10个字符
select right('hello welcome to China.',10)--从索引为2的开始,截取5个字符。
--注意:1.索引从1开始数。2.含当前索引。
select substring('abcdefghijklmn',2,5)select replace('fjdsalfafdjaslkfjdsakjflksafjdsfjdslkfjdsljf','f','★')
select replace(username,'赵','李')

=================日期函数===============
select get date()
print convert(varchar(50),)GETDATE() :取得当前日期时间
DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。DATEADD(DAY, 3,date)为计算日期date的3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date的8个月之前的日期 。(入职一年以上的员工发1000$)
DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 datepart 为计量单位,可取值参考DateAdd。
统计不同入学年数的学生个数:
select DateDiff(year,sInDate,getdate()),count(*) from student Group by DateDiff(year,sInDate,getdate())
DATEPART (datepart,date):返回一个日期的特定部分 year(date)   计算日期返回的年份
Datepart可选值
取值别名说明
yearyy,yyyy年份
quarterqq,q季度
monthmm,m月份
dayofyeardy,y当年度的第几天
daydd,d日
weekwk,ww当年度的第几周
weekdaydw,w星期几
hourhh小时
minutemi,n分
secondss,s秒
millisecondms毫秒

转载于:https://www.cnblogs.com/cheshui/archive/2012/07/26/2610055.html

6-14 数据库高级相关推荐

  1. Java从入门到实战总结-4.2、数据库高级

    Java从入门到实战总结-4.2.数据库高级 文章目录 Java从入门到实战总结-4.2.数据库高级 第一章 数据完整性 1.1 数据库的完整性 1.2 实体完整性 1.2.1 主键约束(primar ...

  2. 前沿分享|阿里云数据库高级技术专家 宋利兵:阿里云企业级自治数据库RDS详解

    简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库高级技术专家 宋利兵关于"阿里云企业级自治数据库RDS详解"的分享. 本文将从2方面为大家介绍企业级 ...

  3. 【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO

    [Redis]14.Redis高级数据类型Bitmaps.HyperLogLog.GEO Bitmaps:用比特位进行快速的状态统计 Bitmaps基本操作 Bitmaps不是一个新的数据类型,而是s ...

  4. Mysql数据库(三)——mysql数据库高级操作

    Mysql数据库(三)--mysql数据库高级操作 一.指定主键的另一种方式 二.克隆/复制一个表 1.方法一 2.方法二 三.清空表,删除表内数据 1.方法一 2.方法二 3.方法三 4.三个删除方 ...

  5. SQL数据库高级查询命令(2)

    接上篇博文<SQL数据库高级查询命令(1)> use market go select distinct goodsname from orders -----查看orders表中有订单的 ...

  6. mysql自定义函数多参数_MySQL数据库高级(二)——自定义函数

    MySQL数据库高级(二)--自定义函数 一.自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同. 自定义函数的两个必 ...

  7. 数据库高级应用学习报告【T-sql】

    数据库高级应用这门课已经结束了,好喜欢这门课,好喜欢这个萌萌哒数据库老师.老师说过,以后不管搞什么都要扯到数据库,所以谨防自己忘记(清理电脑内存),就把我的数据库学习报告也贴上来吧.. 一.本人电脑安 ...

  8. abaqus 6.14有限元分析高级培训视频教程-接触 热力 疲劳分析

    abaqus 6.14有限元分析高级培训视频教程-接触 弹塑 热力 疲劳分析 链接:https://pan.baidu.com/s/1LZZIug58wFJV29grGAGJ9Q 提取码:afx7

  9. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  10. mysql数据库查询游戏_MySQL数据库高级查询和多表查询

    MySQL多表查询 添加练习表 -- 用户表(user) CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id( ...

最新文章

  1. mysql alter engine_MySQL_mysql下修改engine引擎的方法,修改my.ini,在[mysqld]下加上 - phpStudy...
  2. STM32中GPIO的8种工作模式!
  3. 分享一个android debug模式,出现 waiting for debugger把界面卡住,取巧的解决办法
  4. java json转换
  5. 去哪面试都会问的HashMap
  6. vilatile 深入理解java虚拟机_《深入理解Java虚拟机》笔记 第十二章 volatile变量
  7. javascript 高级程序设计学习笔记(面向对象的程序设计) 1
  8. 在Spring MVC流中使用rx-java Observable
  9. 编译原理last集c语言,编译原理作业集-第七章.doc
  10. ClickHouse表引擎之Integration系列
  11. python迷宫算法及实现_Python迷宫递归算法
  12. BBAug: 一个用于PyTorch的物体检测包围框数据增强包
  13. php jquery mysql,使用PHP / MySQL搜索并使用jQuery动态更新
  14. python调整屏幕缩放比例_python实现按长宽比缩放图片 python的turtle怎样缩放界面吧...
  15. python入门指南txt-BeginnersGuide
  16. word插入目录右边对不齐
  17. 一个程序员的成长之路
  18. SQL基础语法_刘世民
  19. 服务器什么系统好用点,服务器用什么系统好
  20. 2015年我的国庆节

热门文章

  1. 利用posix_fadvise清理系统中的文件缓存
  2. 《基于Java实现的遗传算法》笔记(7 / 7):个人总结
  3. Tail Recursion尾递归
  4. cad怎么快速算面积_用cad算面积的快捷键方法步骤详细,大朗CAD培训班
  5. window电脑查看ssh公钥,以及将自己的公钥添加到Github等类似网站
  6. 在ffmpeg中加入x264模块
  7. Springboot 项目中过滤器的使用
  8. java.util.UnknownFormatConversionException: Conversion = ‘,‘ 解决
  9. Spring声明式事务管理、事务的传播行为xml配置
  10. 数据结构与算法-ADT-Array