试图工具操作数据库
标识列(自增长)
约束
将UserName设置为唯一不能重复
设置用户年龄必须大于等于18小于等于45
设置CreateTime字段默认的创建时间
脚本操作数据库
脚本创建数据库
use master --选择要操作的数据库
go --批处理命令
--开始创建数据库
create database TestNewBase --数据库的名称
on primary --主文件组
(
name = 'TestNewBase', --数据主要数据文件的逻辑名
filename = 'D:\Microsoft SQL Server\TestNewBase.mdf', --主要文件的路径(绝对路径)
size = 5MB, --数据库主要文件的初始大小
filegrowth = 1MB --文件的增量
)
log on --创建日志文件
(
name = 'TestNewBase_Log', --数据日志文件的逻辑名
filename = 'D:\Microsoft SQL Server\TestNewBase_Log.mdf', --主要文件的路径(绝对路径)
size = 1MB, --数据库日志文件的初始大小
filegrowth = 10% --文件的增量
)
go
脚本删除数据库
drop database TestNewBase
go
脚本创建表
use TestNewBase
go
create table Productinfos --创建商品表
(
-- identity(1,1) 表示字段初始重1开始每次自增1
Id int identity(1,1) primary key not null, -- 自增 主键 不能为空 的id字段
ProNo varchar(50) not null,
ProName nvarchar(50) not null,
TypeId int not null,
--decimal(2,1),此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。
Price decimal(18,2) default (0.00) null,
ProCount int default (0) null --商品数量 默认为0 可以为空
)
go
create table ProductType
(
TypeId int identity(1,1) primary key not null,
TypeName nvarchar(20) not null
)
go
脚本删除表
drop table Productinfos
go
脚本修改表 字段
-- 给表添加一列
alter table Productinfos add ProRemark nvarchar(50) null
-- 删除一列
alter table Productinfos drop column ProRemark
-- 修改一列
alter table Productinfos alter column ProNo nvarchar(50) null
-- 修改字段名 (慎重使用 修改后有关联的对应名称都得修改)
exec sp_rename 'Productinfos.ProCount','Count','column'
脚本插入数据及克隆表数据
use TestNewBase
go
-- 单条插入
insert into Productinfos(ProNo,ProName,TypeId,Price,Count) values (1,'测试',1,2.8,8)
-- 多条插入
-- insert into 表面(字段名)
-- values('值1'),('值2')...
insert into ProductType(TypeName)
values('工具类1'),('工具类2'),('工具类3')
go
-- 克隆表数据
-- 1 目标表在数据库以存在
insert into Test(Names) --目标表
select TypeName from ProductType --原表
go
--2 目标表没有在数据库中 执行后字段创建目标表
select TypeName into Test1 --目标表
From ProductType
go
脚本修改约束
查询语句
模糊查询
-- 模糊查询
--1、只要含有d的都查出来 (效率不高)
select * from Userinfos where UserName like '%d%'
-- 以a开头的
select * from Userinfos where UserName like 'a%'
-- 以3结尾的
select * from Userinfos where UserName like '%3'
-- 2、_匹配单个字符 限制长度
select * from Userinfos where UserName like 'a______3' -- 以a开头并且以3结尾的 并且中间长度是6
select * from Userinfos where UserName like '___' --查询长度为3的
--3、[]匹配范围 匹配【】中所有字符中的任意一个
select * from Userinfos where UserName like 'ad[a,b,m,d]in'
select * from Userinfos where UserName like 'ad[a-z]in'-- 匹配a到z中所有字符中的任意一个
--3 [^] 不在[]中的所有字符之内的单个字符
select * from Userinfos where UserName like 'ad[^asd]in' --排除第三个字符为a s d 的
条件查询
select * from Userinfos UserName --查询所有
select top 3 * from Userinfos --查询前3条
select top 100 percent * from Userinfos -- 按百分比 查询百分之百
select * from Userinfos where UserAge not in(23,22) --排除年龄等于 23,22的
-- 子查询
select * From Userinfos -- 先查询出所有用户表
where DeptId in
( -- 在查询出 对应部门表中 DetpId 大于1的
select DeptId from Detpinfos where DeptId >1
)
select * from Userinfos where UserAge between 21 and 33 -- 查询 大于大于21 小于大于33
聚合函数
use StudydDB
go
-- 聚合函数
select 1 from Userinfos
select count(1) num from Userinfos -- 统计记录数
-- sum求和
select sum(UserAge) from Userinfos; -- 年龄总合
--avg 平均值
select avg(UserAge) from Userinfos;
--max 平均值
select max(UserAge) from Userinfos;
--min 最小值
select min(UserAge) from Userinfos;
删除 更新
update Userinfos set UserName = '新名字' where UserId = 4 -- 更新
-- 删除
delete from Userinfos where UserId = 4;
-- 清除表(还原表最初始状态)
truncate table 表名 -- 不会记录到日志 不激发触发器 比delete from Userinfos效率高
关联查询
- 表结构
用户表
Userinfos
部门表
Detpinfos
inner join on 关联查询
select UserId,UserName,UserAge,u.DeptId,d.DetpName
from Userinfos u
inner join Detpinfos d on d.DetpId = u.DeptId
隐实连接
select UserId,UserName,UserAge,u.DeptId,d.DetpName
from Userinfos u,Detpinfos d
where d.DetpId = u.DeptId
左连接
select * from Userinfos u --结果:左表显示所有行 右表行数根据左表 没有匹配上的显示为null
left join Detpinfos d
on u.DeptId = d.DetpId
右连接
select * from Userinfos u
right join Detpinfos d
on u.DeptId = d.DetpId