Sql中常用的创建表 约束 主外键 增删改查的语句

时间:2022-04-22 22:40:36

创建数据库

 USE master;
GO
--日记数据库
create database DiaryBase
on
(
name=DiaryBase_Dat,--逻辑名称
FILENAME='c:\DiaryBase.log',
size=10MB,
maxsize=50MB,
FILEGROWTH=5MB
)
log on
(
name=DiaryBase_Log,
FILENAME='c:\DiaryBase.mdf',
size=10MB,
maxsize=50MB,
FILEGROWTH=5MB
)
go

创建表 (包含约束)

 --drop table users
create table Users
(
id int identity(1,1) primary key,
username nvarchar(20) unique not null,--唯一约束
userPassword varchar(20) not null,
gender char check (gender ='男' or gender ='女'),--check(这里是一个bool值)
age int ,
check (age>0 and age <100) --检查约束
)
go
--drop table diaryinfo
create table DiaryInfo
(
dId int identity(1,1) primary key,
userId int foreign key references users ( id),--外键
dInfo nvarchar(300) not null,
dCreateTime datetime default (getdate()),--默认约束
dTitle nvarchar(50)
)
go

修改表

 --增加和删除列
alter table users add UserAddr nvarchar(30) alter table users drop column useraddr alter table users add UserPhoneNumber nvarchar(40)
--add DF_Users_userPhoneDf constraint
default ('') --修改表的约束
--删除和增加 默认约束
alter table users drop constraint DF__Users__UserPhone__20C1E124
alter table users add constraint DF__Users__UserPhoneNumber
Default('') for UserPhoneNumber
--增加删除 唯一约束(mssm中在索引分组里)
alter table users drop constraint UQ__Users__F3DBC572276EDEB3
alter table users add constraint UQ_users_UserName unique(UserName) --增加和删除 主键约束
alter table Users drop constraint PK__Users__3213E83F24927208
alter table Users add constraint Pk_Users_id primary key(id) --增加和删除 外键约束
alter table DiaryInfo drop constraint FK__DiaryInfo__userI__30F848ED
alter table DiaryInfo add constraint FK_DiaryInfo_userId
foreign key (UserId) references Users(id) --增加和删除 检查约束
alter table Users drop constraint CK__Users__age__2A4B4B5E
alter table Users add constraint CK_Users_age check(age<100 and age>0)

同时增加多条约束

alter table Employees add
constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId),
constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120),
constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

查询

select
    学生编号=tsid,
    tsname as 学生姓名,
    tsgender 性别,
    婚否='否'--查询的时候直接赋值 ‘否’
from TblStudent
--where 性别='男'  这里性别无效 他只是用来显示的

--distinct关键字,针对已经查询出的结果然后去除重复
select distinct * from TblStudent

--如果top后跟的不是数字,而是一个表达式一定要使用()把表达式括起来。
select top (2*2) * from TblScore order by tMath desc

select top 35 percent * from TblScore order by tMath desc

--1.聚合函数不统计空值

--对于in或者or 查询,如果查询中的条件是连续的几个数字,最好使用>=  <=或者between...and不要使用or或者in。提高效率
select * from TblStudent where tsname like '张[a-z0-9]妹'

--通配符放到[]中就转义了就不认为是通配符了。【】是系统默认的转移符
select * from TblStudent where tsname like '%[%]%'

查出

Sql中常用的创建表 约束 主外键 增删改查的语句

当要搜索名字有 有[或者]字符的

select * from TblStudent where tsname like '%[]]%'

这样查不到,这里需要我们使用自定义转移符  ESCAPE

select * from TblStudent where tsname like '%/[%'  ESCAPE '/'