【12】简单SQL语句
-------------------------------------------- -- SQL语句 -------------------------------------------- -- 数据定义语言(DDL) -- 数据操作语言(DML) -- 数据控制语言(DCL) -- 简单的增删改查(CRUD) -- 增加数据 -- insert into 表名(字段名, 字段名, ...) values(值1, 值2, ...); insert into ConstraintExercise.StuInfo2 (stuId, stuName, stuAge, stuSex, courseId) values -- (1, N'赵晓虎', 30, 'm', null); (1, N'赵晓虎', 30, 'm', NULL); -- 查询数据(简写) -- select 字段1, 字段2, ... from 表名; select * from ConstraintExercise.StuInfo2; insert into [ConstraintExercise].[StuInfo2] (stuId, stuName, stuAge, stuSex, courseId) values (2, '牛亮亮', 35, 'f', NULL); -- 修改数据 -- update 表名 set 字段=值,字段=值,... where 条件; update ConstraintExercise.StuInfo2 set stuSex='m' where stuId=2; update ConstraintExercise.StuInfo2 set stuName='牛亮亮' where stuId=2; update ConstraintExercise.StuInfo2 set stuName=N'NULL'; update ConstraintExercise.StuInfo2 set stuName=NULL; alter table ConstraintExercise.StuInfo2 drop constraint UQ_StuInfo2_stuName; -- 删除数据 -- delete from 表 where 条件; delete from ConstraintExercise.StuInfo2; -- 二进制截断 insert into ConstraintExercise.StuInfo2(stuId, stuName) values(3, N'0123456789'); select * from ConstraintExercise.StuInfo2 -- 删除 -- delete from 表 where 。。。 -- 删除数据库对象 --drop table 表 --drop database 数据库 --drop view 视图 --drop schema 架构 ------------------------------------------- -- 查询 ------------------------------------------- -- 查询的基本结构(烂熟) -- 查询的详细步骤(烂熟) -- 案例(举一反三) -- 标准的SQL语句 select top | distinct 字段 , 表达式 , 函数 , 标量子查询 , 常量 from 数据源 where 基本筛选 group by 分组字段 having 二次筛选 order by 排序字段依据; -- SQL语句的执行顺序 -- -- 获得数据源(from) -- 进行第一次筛选(where) -- 对筛选得到的结果进行分组(group by) -- 可以对分组后的结果进行再删选一次(having) -- 对所有数据进行整理(select) -- 对结果进行排序(order by) -- 添加一个分数表 go create schema Exercise authorization dbo; go create table Exercise.ScoreTbl ( scoreId int identity(1,1) not null primary key, stuId int not null, scoreNum int check(scoreNum>=0 and scoreNum<=100), scoreLast int check(scoreLast>=0 and scoreLast<=100), -- foreign key(stuId) references Exercise.StudentTbl(stuId) ); -- 添加分数数据 2008+ insert into Exercise.ScoreTbl(stuId, scoreNum, scoreLast) values(1,60,55),(2,75,40),(3,95,85),(5,86,75),(6,90,95); insert into Exercise.ScoreTbl(stuId, scoreNum, scoreLast) values(7, 45, 99) select * from Exercise.ScoreTbl; select * , scoreNum * .3 + scoreLast * .7 from Exercise.ScoreTbl where scoreNum * .3 + scoreLast * .7 >= 60 and scoreNum < 60; -- 找姓牛的人 -- 单字符匹配 _ -- 多字符匹配 % -- stuName like '牛%' -- 引用对象的方式可以是 -- 服务器.数据库.架构.表 select * from TestDataBase..Student; select * from TestDataBase..Course; select * from TestDataBase..Score; -- 叫纪明X select * from TestDataBase..Student where stuName like '纪明%'; insert into TestDataBase..Student (stuName, stuSex, stuBirthdate, stuStudydate, stuAddress, stuEmail, stuPhone, classId) values ('纪明闪闪', 'm', '1990-1-1 00:00:00', '2014-7-7 17:04:52.123', N'上帝细节128号', 'jmss@jmss.com', '12345678909', 2); ----------------------- -- [] [a-z] [^a-z] -- stuName like '杨[中重]科' -- 如果要匹配 asp_net -- bookName like 'asp[_]net' -- stuName like '%虎%' -- age 在 19 到 26 岁 -- datediff(year, 开始的时间, 结束的时间) select datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP),* from TestDataBase..Student where stuSex = 'f' and -- datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP) between 19 and 26; datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP) in (19,26,23) ------------------------- -- 空值处理 ------------------------- select * from ConstraintExercise.StuInfo2; select * from ConstraintExercise.StuInfo2 where stuAge <> null; -- SQL Server 采用三值逻辑 真 假 不知道 -- 判断为空使用 is null 或 is not null 再或 not(... is null) select * from ConstraintExercise.StuInfo2 where stuAge is not null; -- isnull(字段, 数据) select *, isnull(stuAge, -1) from ConstraintExercise.StuInfo2;