Sql基础语句2

-- 创建一个员工表:
create table Employees
(
	EmpId int identity(1,1),
	EmpName varchar(50),
	EmpGender char(2),
	EmpAge int,
	EmpEmail varchar(100),
	EmpAddress varchar(500)
)

-- 创建一个部门表:
create table Department
(
	DepId int identity(1,1) primary key,
	DepName varchar(50) unique not null	
)


-- 查询数据库:
select * from Employees
select * from Department


-- alert: JavaScript;
-- alter: 更改数据库;


-- 删除一个指定的列(删除EmpAddress列):
alter table Employees drop column EmpAddress		-- 删除列需要关键字 column

-- 添加一列(EmpAddress):
alter table Employees add EmpAddress varchar(100)	-- 添加列不需要关键字 column

-- 修改 EmpEmail 的数据类型 为 varchar(200):
alter table Employees alter column EmpEmail varchar(200)

-- 给EmpId添加主键约束:
alter table Employees add constraint PK_Employees_EmpId primary key (EmpId)

-- 为 EmpName 添加一个非空约束:
alter table Employees alter column EmpName varchar(50) not null

-- 为 EmpName 添加一个唯一约束:
alter table Employees add constraint UQ_Employees_EmpName unique (EmpName)

-- 添加一条数据:
insert into Employees values('张三', '男', 22, 'zs@163.com', '上海')

-- 为 EmpGender 设置默认约束:
alter table Employees add constraint DF_Employees_EmpGender default('男') for EmpGender

-- 添加一条数据:EmpGender 会显示为默认值。
insert into Employees values('李四', default, 32, 'ls@163.com', '南京')

-- 为 EmpAge 添加检查约束:年龄必须在1-100之间;
alter table Employees add constraint CK_Employees_EmpAge check (EmpAge>0 and EmpAge<121)

-- 添加一条年龄大于 120 的数据,
insert into Employees values ('虎子', default, 130, 'hz@163.com', '徐州')
-- 出现错误:INSERT 语句与 CHECK 约束"CK_Employees_EmpAge"冲突。该冲突发生于数据库"TestDataDB",表"dbo.Employees", column 'EmpAge'。


-- 查询指定列的数据:
select EmpName, EmpGender from Employees

-- 给列名起别名:
-- 第一种方法:
select EmpName as '姓名', EmpGender as '性别' from Employees 

-- 第二种方法:
select EmpName as 姓名, EmpGender as 性别 from Employees 

-- 第三种方法:
select 姓名=EmpName,性别=EmpGender from Employees


-- 查询当前时间:
select GETDATE()	-- select 结果显示在 "结果" 中;
print '当前时间'		-- print 结果显示在 “消息” 中;


-- 查询所有数据:
select * from Employees

-- 查询前三条数据:
select top 3 * from Employees

-- 数据库中的数据存储是无序的。

-- 查询年龄最小的三个人:可以先使年龄从小到大排列,然后取前三条数据;
select top 3 * from Employees order by EmpAge		-- 默认排序就是从小到大

-- 查询年龄最大的前 40% 的人:percent 表示百分号
select top 40 percent * from Employees order by EmpAge desc		-- 从大到小排序 

-- 查询数据时去除重复的数据:
select distinct EmpGender from Employees 


-- 聚合函数:


-- 查询所有数据:
select * from Employees

-- 查询数据库中数据的数量:
select count(*) from Employees

-- 查询最大的年龄:
select max(EmpAge) from Employees

-- 查询最小的年龄:
select min(EmpAge) from Employees

-- 查询年龄的总和:
select SUM(EmpAge) from Employees

-- 查询平均年龄:
select avg(EmpAge) from Employees


-- 查询年龄在20和30之间的男雇员:
-- 方法一:
select * from Employees where EmpAge>20 and EmpAge<30 and EmpGender='男'

-- 方法二:用 between...and 包括20和30,而且该语句执行效率高.
select * from Employees where EmpGender='男' and EmpAge between 20 and 30

-- 查询年龄为12/22/32的雇员:
-- 方法1:
select * from Employees where EmpAge=12 or EmpAge=22 or EmpAge=32

-- 方法2:
select * from Employees where EmpAge in(12,22,32)


-- 模糊查询:

-- 插入数据:
insert into Employees values('张无忌', '男', 120, 'zwj@163.com', '光明顶')
insert into Employees values('龚长张', '女', 28, 'gcz@163.com', '黑木崖')
insert into Employees values('小兵张嘎', '男', 15, null, '根据地')

-- 查询 EmpName 为 '张' 的数据:
select * from Employees where EmpName like '张'

-- 查询 EmpName 以 "张" 开头的数据:
select * from Employees where EmpName like '张%'

-- 查询 EmpName 以 '张' 开头且是两个字符的数据:
select * from Employees where EmpName like '张_'

-- 查询 EmpName 以 '张' 开头且是三个字符的数据:
-- 方法1:
select * from Employees where EmpName like '张__'
-- 方法2:
select * from Employees where EmpName like '张%' and len(EmpName)=3

-- 查询 EmpName 里带有 '张' 的:
select * from Employees where EmpName like '%张%'

-- 查询 EmpName 以 ‘张’ 开头,并且第一个字符为 小写字母,同时EmpName是三个字符的数据
select * from Employees where EmpName like '张[a-z]_'

-- 查询 EmpEmail 为 null 的数据:
select * from Employees where EmpEmail is null

-- 查询 EmpEmail 不为 null 的数据:
select * from Employees where EmpEmail is not null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值