drop table person --删除表
create table person --创建表
(
---注意:下面是属性(字段名称)在前,数据类型在后
ID int primary key identity(2,1) not null, -- primary key是设置主键,保证该列值唯一且不为空,identity(2,1)起始值是,步长为
Name nvarchar(10) not null, ---not null是指不能为空
Sex bit not null, --bit是bool类型
age int default 18 , -- default 18是指自动取默认值
scroe decimal(4,1) check(score<=100) --4指小数点前后加起来总共位,代表小数点后位数 check是检查限制约束
cardid int unique --unique 指唯一键,在表中有多列数据需要保证唯一时除了主键以外的列需要设置为唯一列
)
对表的操作
修改表结构,添加删除约束
alter table person --修改表结构
--add NameID int --添加属性\字段NameID列,添加列
--drop column NameID --删除列
--alter column ID int not null ---添加字段不为空
--add constraint 约束名(pk_表名_列名| pk_列名)
--add constraint pk_ID primary key(ID) --修改表时添加主键约束
--add constraint ck_score check(score<150) --修改表时添加检查约束
--add constraint uk_cardi unique(cardid) --修改表时添加唯一键约束
--add constraint df_age default 19 for age --修改表时添加默认约束
--drop constraint CK__person__score__15502E78 --删除约束(格式:drop constraint 约束名)
修改表信息,增(insert) 删(delete) 改(update) 查(select)
--添加记录<insert 表名values(参数)> <1>字符串或日期类型加'' <2>bit用或 <2>自动增长列不需要添加值
insert person values(12,'wang',0,23,32,34)
insert person(sex,age,cardid) values(0,23,32) --有选择性的插入数据((sex,age,cardid) )指要手动添加的数据
--修改记录 <update 表名set 修改对象where 条件> <1>修改多个字段,中间以逗号间隔
update person set age=19,sex=0 where ID=1
update person set age=19,age=12 where ID=2 ---<1>
update person set age=19+1 where ID=2---修改信息时进行算术运算
update person set age=19+1 --如果不写where,则对所有数据进行修改
update person set age=SUBSTRING(age,1,1) where ID=1 --substring 是字符的截取
--删除记录< delete 表名where 条件> (如果不加where则删除所有记录)
delete person where ID=1
对表的查询
单表查询
复制代码 代码如下:
select * from tableName --查找显示整个表(所有列)
select列名1,列名2 from tableName --显示部分列
select列名1='编号',列名2='品牌' from Product1 --把其中一列的信息统一修改
--修改显示时列标题(方法一)
select '编号'=ProCode,'品牌'=ProTypeName from Product1
--修改显示时列标题(方法二)
Select 列名1 '编号',列名2 '品牌' from Product1
--显示时对列进行算数运算, 显示时添加列
select列名1,列名2,列名3*0.5 '打折后',Number from Product1
select distinct 列名1 from tableName --显示时删除该列的重复行
select top 3 * from Product1 --显示前三列
select top 50 percent * from Product1 --显示总行数的前%行
--and是并且, or是或者 , 条件非: not 列名='值'
select * from tableName where Number=15 and not age=12 and or sex=1
--查找score范围为0到100的数据
select * from Product1 where score<100 and score >=1
select * from Product1 where score between 1 and 100
--in,not in (包含不包含) 以下都是查找number为,,的数据
select * from Product1 where Number=10 or Number=15 or Number=20
select * from Product1 where Number in(10,15,20)
select * from Product1 where not Number in(10,15,20)
--<1>like模式匹配符%可以代替任意个数量的字符<2> _可以代替一个字符 <3>[]是一个查找范围
select * from Product1 where ProCode like 'D%' --查找首字母为D的ProCode的数据
select * from Product1 where ProCode like '_S%' --查找第二个字符是S的procode数据
select * from Product1 where 列名1 like '1%' --即使是float型也要加''
select * from Product1 where 列名1 like '_4_' --查找第二个字符是且字符个数为的3数据
select * from Product1 where 列名1 like '_[5-9]%' --查找第二个字符是5到9的列名1数据
--查找为空,不为空的数据
select *from Product1 where proValue is not null
select *from Product1 where proValue is null
go --排序( desc降序 asc升序 什么都不写就默认升序 )
select * from Product1 order by proValue desc --将provalue按降序排列
select * from Product1 order by proValue asc --将provalue按升序排列
select * from Product1 order by Number --将Number按默认(升序)排列
select * from Product1 order by Number desc,proValue asc --第二个条件在第一个条件相同时才执行
go --聚合函数
select MAX(proValue) from Product1 --查找proValue中的最大值
select min(proValue) from Product1 --查找proValue中的最小值
select sum(proValue) from Product1 --查找proValue中数据的和
select avg(proValue) from Product1 --查找proValue中的平均值
select count(*) from Product1 --查找表中的行数*也可以用列名代替
--group by分组(where在group by 之前,having分组之后的筛选条件,where和having都是筛选条件)
--分组:可以显示分组列的信息和分组后的信息分别进行统计
select列名1,max(列名2),min(列名3) from tableName where proTypeName='电视机' group by 列名1
select proTypeName,max(proValue),min(proValue) from Product1 group by proTypeName having count(proValue)>1
多表查询
复制代码 代码如下: