首页 > 数据库 >sql server相关学习sql语句

sql server相关学习sql语句

时间:2023-03-28 13:47:16浏览次数:38  
标签:语句 PeopleSalary -- People server sql Department null where

  • sql脚本 ---表结构设置
点击查看代码
if exists(select * from sys.objects where name='Department' and type='U')
	drop table Department
create table Department
(
	--id identity(x,y) 初始x 自增y,primary key 主键
	DepartmentId int primary key identity(1,1),
	--名称
	DepartmentName nvarchar(50) not null,
	--描述
	DepartmentRemark text


)
--字符串
--char(x)  占用x个字节 ‘ab’=>x个字节
--varchar(x) 最多占用x个字节  ‘ab’=>2个(x>2)
--text 长文本
--char text varchar 前面加n;存储unicode 对中文友好
--例子
--varchar(100) 100个字母或者50个汉字
--nvarchar(100) 100个字母或者100个汉字

--Rank是关键字了,所以加上[]
create table [Rank]
(
	--id identity(x,y) 初始x 自增y,primary key 主键
	RankId int primary key identity(1,1),
	--名称
	RankName nvarchar(50) not null,
	--描述
	RankRemark text


)

if exists(select * from sys.objects where name='People' and type='U')
	drop table People

create table People(
	--id identity(x,y) 初始x 自增y,primary key 主键
	PeopleId int primary key identity(1,1),
	--部门 references 引用外键 引用在部门表的id范围之内
	DepartmentId int references Department(DepartmentId)not null ,
	--职员
	RankId int references [Rank](RankId)not null,
	--名称
	PeopleName nvarchar(50) not null,
	--性别 加上约束(check) 默认
	PeopleSex nvarchar(1)default('男') check(PeopleSex='男' or PeopleSex='女')not null,
	--老版本date 新版本有time 加上samll就是表示现在时间 不能表示未来
	PeopleBirth smalldatetime not null,
	--小数的使用 float 可能有误差 decimal(x,y) 长度x,小数y位
	PeopleSalary decimal(12,2) check(PeopleSalary>=1000 and PeopleSalary<=100000)not null,
	--电话 约束unique 唯一 电话是唯一的
	PeoplePhone varchar(20)unique not null,
	--地址
	PeopleAddress varchar(300),
	--添加时间,获取当前时间默认值,有一个函数 getdate()
	PeopleAddTime smalldatetime default(getdate()) not null
)

--修改表结构---

--(1)CRUD列
--alter table 表名 add 新列名 数据类型
--添加列 员工表添加邮箱列
alter table People add Mail varchar(200)
--alter table 表名 drop column 列名 
--删除列 员工表删除邮箱列
alter table People drop column Mail
--alter table 表名 alter column 列名 数据类型
--修改地址为 200
alter table People alter column PeopleAddress varchar(200)

--维护约束---(删除 添加)
--删除约束
--alter table 表名 drop constraint 约束名
--alter table People drop constraint xxx
--添加约束
--alter table 表名 add constraint 约束名 check(表达式)
--alter table People add constraint psadad check(PeopleSex='男' or PeopleSex='女')
--添加主键 唯一 默认 外键
--alter table 表名 add constraint 约束名 primary key (列名)


insert into Department(DepartmentName,DepartmentRemark)
values('市场部','..........')

insert into Department(DepartmentName,DepartmentRemark)
values('软件部','..........')

insert into Department(DepartmentName,DepartmentRemark)
values('企划部','..........')

insert into Department(DepartmentName,DepartmentRemark)
values('销售部','..........')
--最好一一对应 如果列顺序改变就回值出问题
--一次性插入多行数据

  • 表内容 crud
点击查看代码
use Mytest
select *from Department
select * from [Rank]
select * from People


--数据crud
--修改
--update 表名 set 列名='xxx' where 条件
--update 表名 set 列名='xxx', 列名='yyy' where 条件

update Department set DepartmentName='经理部' where DepartmentId=8
update People set PeopleSalary=PeopleSalary+1000 

update People set PeopleSalary=15000 where RankId=3 and PeopleSalary<=15000
update People set PeopleSalary=PeopleSalary*2,PeopleAddress='西京' where PeopleName='关羽7'

--delete drop truncate区别
--drop table xxx 删除表对象xxx
--delete from xxx 删除表xxx的数据, 即表对象和结构都存在
--truncate table xxx 删除数据(清空数据)即表对象和结构都存在

--truncate 清空所有数据,不能有数据。 delete 可以删除所有数据也可以带条件删除符合条件的数据
--自动编号 1,2,3,4,5
--truncate 编号为:1,2,3,4,5 (重头开始)
--delete   编号将为6,7,8,9,10(继续)
--查询 as可省略 ,distinct()去重,
select PeopleName 姓名 from People
select distinct(PeopleAddress) from People
select PeopleSalary*1.2 加薪后,PeopleSalary 加薪前 from People
--按照 名字长度的前5个查询
select top 5 PeopleName from People order by len(PeopleName)
--按照 名字长度的前25%查询
select top 25 percent PeopleName from People order by len(PeopleName)
--按照 名字长度的后25%查询
select top 25 percent PeopleName from People order by len(PeopleName) desc
--查询为null的值的单位
select *from People where PeopleAddress is null;
--查询非空的值 和‘ ’区别 null就是没填  ‘ ’insert 有字段但是空白
select *from People where PeopleAddress is not null;
--查询时间的 1988到2000的
select * from People where PeopleBirth>'1988-8-7' and PeopleBirth<'2000-3-1'

select * from People where PeopleBirth between '1988-8-8'and '2000-3-1'

select * from People where year(PeopleBirth) between 1988  and 2000
--查询年纪在多少岁的
select PeopleName,year(GETDATE())-YEAR(PeopleBirth) 年龄 from People
--查询年纪在35岁以下的
select PeopleName,year(GETDATE())-YEAR(PeopleBirth) 年龄 from People where year(GETDATE())-YEAR(PeopleBirth)<35 and PeopleSalary >5000
select* from People where (MONTH(PeopleBirth)=11 and DAY(PeopleBirth)<=22) or (MONTH(PeopleBirth)=12 and DAY(PeopleBirth)<=31)
--子查询
select *from People where PeopleAddress=
(select PeopleAddress from People where PeopleName='关羽')
--龙 8
--鼠 4
--

标签:语句,PeopleSalary,--,People,server,sql,Department,null,where
From: https://www.cnblogs.com/kk-ss/p/17264836.html

相关文章

  • Mysql基本语法学习
    数据库/模式创建createdatabase/schema<数据库/模式名>使用use<数据库/模式名>删除dropdatabase/schema<数据库/模式名>查询所有showdatabase查询当前数据库sel......
  • 基于mysqludf_sys.so漏洞的提权
    基于mysqludf_sys.so漏洞的提权 有时候目标机里会存在mysqludf_sys.so文件,那即表示数据库里可能存在用户自定义的功能函数。UDF(userdefinedfunction),即用户自定......
  • mysql修改表字符集
    briefmysql表字符集修正linkhttps://blog.csdn.net/qq_17555933/article/details/101445526altertablexxxconverttocharactersetutf8collateutf8_bin;alte......
  • 力扣579(MySQL)-查询员工的累积薪水(困难)
    题目:Employee表保存了一年内的薪水信息。请你编写SQL语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算)。结果请按......
  • 【解答】MySQL MTR的实现原理与优势
    MySQLMTR(MySQLTestRun)是MySQL数据库测试框架,用于自动化测试MySQL数据库系统的功能和性能。MTR由MySQL官方提供,包含了大量的测试用例,可以对MySQL数据库系统的各......
  • NoSQL世界还会有DBA存在吗
    NoSQL世界还会有DBA存在吗作者:chszs,转载需注明。咨询公司Gartner在本月初发布了一项调查结果,该调查是针对NoSQL在各种职位方面的采用情况。调查结果是令人吃惊的。如图所示:D......
  • 深入认识Tigase XMPP Server(上)
    深入认识TigaseXMPPServer(上)作者:chszs本文的目的是深入认识TigaseXMPPServer的特性。1、TigaseHTTPAPI实现XMPP和HTTP之间的桥梁,可通过REST调用实现对Tigase安装的管......
  • MySQL的EXPLAIN分析结果含义
    EXPLAIN字段idid相同执行顺序从上到下id不同id越大优先级越高越先被执行select_type查询的类型,主要用于区别普通查询,联合查询,子查询等的复杂查询。SIMPLE:简单的s......
  • mysql存储过程
    我们大家都知道MySQL 存储过程是从MySQL5.0开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL代码封装。特别是SQL代码......
  • sql 中 ${} 和 #{} 、$""
    C#中$的用法sql中${}和#{}......