day-01 数据库基础

1.数据库:可以用来储存数据,且是永久性的保存。

2.创建与删除数据库的代码:

创建:create database db_数据库名字(当然db_这个前缀可以不需要) 删除:drop database db_数据库名字(同上)

3.创建数据库是会产生至少两个文件:

mdf 主数据文件 (霉豆腐)

ldf 日志文件 (烂豆腐)

ndf 次要数据文件 (嫩豆腐)

4.sql与sqlserver的区别:

sql:是一种结构化的查询语言

sqlserver:是一款数据库管理文件,利用sql语言来编写创建与删除数据库等操作。

5.sqlserver管理软件的基本使用:

①使用前必须(必须)开开启服务:

推荐使用命令提示符(注意须以管理员的身份运行)开启服务器,再输入代码:

net start mssqlserver --(开服) net stop mssqlserver --(关服)

②登录窗口:

   服务器名称:“.”(此为小数点)、localhost、127.0.0.1

6.在sql中不区分大小写(除了命名)

        一个字符串==两个字节数

 day-02 表创建及约束的使用

1.数据储存到数据库是以表格的形式进行储存的。

2.三个关键词:

①精度指的是--小数点左右的个数和 例如:12.22的精度为4

②小数位数--小数点右边的个数和 例如:12.22的小数位数为2

③长度--实际储存的长度

3.数据类型(推荐记住以下四个类型):

①int 整形

②varchar 可变字符串 定义时必须赋予长度 例如:varchar(666)

如果666这个长度没用完,则会自动减去没用的长度部分,也就是不占空间

③datetime 日期

④bit 布尔值

4.学会创建与删除表格,语法:

create table tb_表名(与创数据库差不多,名字自拟) drop table tb_表名(同上)

5.学会家约束条件(六大约束):

①主键约束 primary key

②从键约束 foreign key references

③非空约束 not nul

④默认约束 default

⑤检查约束 check

⑥唯一约束 unique

6.带约束表格创建的语法:(注意属性之间需用逗号隔开,最后一个不需要,如下所示)

7.标识符 identity(x,y):x为从一开始i,y为从一开始每次就加一(类似于约束写在后面,如下所示)

create table tb_表名 ( 属性名1 数据类型 约束 标识符(x,y), 属性名1 数据类型 约束, 属性名2 数据类型 约束, 属性名3 数据类型 约束, 属性名4 数据类型 约束, 属性名5 数据类型 约束 )

 day-03 数据管理(增删改查)

1.新增(insert)的使用,推荐三种语法:

使用情况1: insert into tb_表名(字段1,字段2,字段3) values('值1','值2','值3') --字段之间用逗号隔开,值之间也一样,字段数=值数 --值加不加单引号,有定义的数据类型决定 使用情况2: insert into tb_表名 values('值1','值2','值3') --前提是默认插入使用属性的值 --字段之间用逗号隔开,值之间也一样,字段数=值数 --值加不加单引号,有定义的数据类型决定 使用情况3: insert into tb_表名 values (''), (''), (''); --前提是默认插入使用属性的值 --字段之间用逗号隔开,值之间也一样,字段数=值数 --值加不加单引号,有定义的数据类型决定

2.删除(delete)的使用,语法:

delete from tb_表名; delete from tb_表名 where 某属性 = '某值'; --注意事项:from可以省略。

3.修改(update)的使用,语法:

update tb_表名 set 某属性 = '修改后的新值'; update tb_表名 set 某属性 = '修改后的新值' where 某属性 = '某值'; update tb_表名 set 某属性1 = '修改后的新值' ,某属性2 = '修改后的新值',某属性3 = '修改后的新值',某属性4 = '修改后的新值' where 某属性 = '某值';

4.查询(select)的使用,语法:

--查询三个字段的内容: select 字段1,字段2,字段3 from tb_表名; --“*”表示查询全部的字段内容: select * from tb_表名; --为查询的字段进行起别名: select 字段1 as '别名1' ,字段2 as '别名2' from tb_表名; --条件查询(运算符 =、>、>=、<、<=、!=、<>) select * from tb_表名 where 某属性 = '某值'; --区间查询(and  or  in   between ...and ...)两种方式: select * from tb_表名 where 某属性 >= '某值' and 某属性 <= '某值'; select * from tb_表名 where 某属性 >= '某值' or 某属性 <= '某值;' select * from tb_表名 where 某属性 in ('值1','值2','值3'); select * from tb_表名 where 某属性 between '某值' and '某值'; --排序(order by asc|desc,asc可以省略) select * from tb_表名 order by 某属性 desc; select * from tb_表名 order by 某属性 ,某属性 desc select * from tb_表名 where 某属性 >= '某值' and 某属性 <= '某值' order by 某属性 desc; --top|percent 取前几条数据 select top 3 * from tb_表名 order by 某属性 desc select top 3 * from tb_表名 where 某属性 = '某值' order by 某属性 desc select top 50 percent * from tb_表名 order by 某属性 desc --模糊查询 like 一般于匹配符一起使用 % _ select * from tb_表名 where 某属性 like '%关键词%'; --去除重复 distinct select distinct(某属性) from tb_表名;

  day-04 内置函数

1.字符串函数

ascii、char、charindex、replace、substring、left、right、upper、lower、ltrim、rtrim、len

1.select replace('张三爱上李四','李四','邓言康');--用邓言康替代李四 2.select left(202111,4)年--截取左边的4个字符 结果为:2021 3.select right(202111,2)月份--截取右边的2个字符 结果为:11 4.select substring(name,5,3)--截取此名字从第五个字后面的三个字 例子:select substring('歪比巴卜别比别比',5,3) 结果为:比别比 5.select substring(name,3)--截取此名字从第三个字开始后面的所有字 例子:select substring('歪比巴卜别比别比',3) 结果为:卜别比别比 6.select substring(name,-4,2)--反序操作截取,从第四个字符位置开始截取之后两个字符 例子:select substring('歪比八吧别比比',-4,2) 结果为:吧别 7.select left('name',3)--意思就是截取最左边开始的三个字符 例子:select left('abcdefg',3) 结果为:abd 8.select right和left一样,意思就是截取最右边开始的三个字符 9.len

2.日期函数

getdate()、dateadd()、datediff()、datepart()、datename()、year()、month()、day()

1.select getdate();--获得本地的时间(电脑此时的时间) createtime格式为'2018-01-01' getdata()为此时计算机本地时间 2.select DATEdiff(yy,createtime,getdata())--用于求xx年到此时的年份差 3.select DATEdiff(mm,createtime,getdata())--用于求xx月到此时的月份差 4.select DATEdiff(dd,createtime,getdata())--用于求xx日期到此时的天数差 5.select dateadd(mm,4,'2017-07-04')--求四个月后的日期 结果为:'2017-11-04' 6.sleetc dataname(dw,'2017-07-04')--求'2017-07-04'此时星期几 结果为:星期二 7.select datapart(month,''2017-07-04')--求'2017-07-04'此时的月份 结果为:7 8.year/month/day select year(getdata()) 结果为:2017

3.数学函数

abs、sign、round、ceiling、floor、power、sqrt

select ceiling(12.0000001)

4.系统函数

convert、cast、datalength

convert,cast用于转变数据类型(两种方法可以说是一模一样)

1.select convert(int,'123');--假设'123'为varchar,转为int类不用加单引号 2.select cast('123'as int)--123 3.若为小数 select cast(123.4 as int)--123 selecy convert(int,123.4)--123 4.datalength用于求指定表达的字节数 例子:select datalength('我爱你中国') 结果为:10

 day-05高级函数

1.聚合函数

max、min、count、sum、avg

聚合函数关键词拥戴字段名前面,如下所示:

select avg(sage) from tb_student

2.分组查询及筛选分组

分组关键字:group by--查什么,group by后就要接什么,where不能用在其后面,后面只能放非聚合函数的列

筛选关键词:having 只能在group by 后使用

注意:where条件中不能包含聚合函数

--统计班级的男女生多少人: select ssex,count(*) from tb_student group by ssex; --求各个地方的人数: select saddress,count(*) from tb_student group by saddress; --求住了5个人以上的地方有哪些? select saddress,count(*) from tb_student group by saddresshaving count(*) > 5;

3.联表查询:内链接|外连接(a,b为表名)

1.1内链接

select * from a,b where a.id = b.id;

select * from a inner join b on a.id = b.id;

1.2外连接:左外连接、右外连接、全外连接

select * from left outer join b on a.id = b.id;--左

select * from right outer join b on a.id = b.id;--右

select * from full outer join b on a.id = b.id;--全

day06-高级子查询

(意思就是不用想联表那么麻烦,就可以之间查询,往下看就知道了)

1.概述:将一个select查询的结果当做条件在另外一个select查询语句进行操作

2.特点:子查询的语句必须包裹在小括号中,执行流程:由里向外

3.方式:运算符的子查询|in的子查询

4.连接符号:“in”和等于符号“=”都一样,">"也可以,如下所示:

--查询比邓炎康年龄大的人有哪些?

select * from tb_student where sage in

( select sage from tb_student where sname = '邓炎康')

--查询成绩大于平均分的学员信息有哪些?

select * from tb_student where sno in(

select sno from score where score >  

 (  elect avg(degree) from score)

        )

--例子:--学员信息表:学号,姓名,性别,年龄--学员成绩表:考试编号,学号,javabase成绩(200),oop成绩(200),sqlserver成绩(200)--求每个人的总成绩》300的学员信息有哪些?

select * from student where sno =(

select sno from score where (javabase+oop+sqlserver)>300)

补充知识点:

(1)if exists 存在--存在不及格,砍死,否则放过你们(另外一种类似于高级查询的方式)
 

if exists (select * from score where degree < 60) begin print '砍死'; end else begin print '放过你们'; end

(2)表的复制

select * into 新表 from 旧表 where 1=1;//结构+数据 select * into 新表 from 旧表 where 1=2;//结构

(3)isnull(xx,xx)

假如有null值,就可以用xx代替

 day07-视图和索引

1.概述:视图就是一张虚拟表,借助select查询的结果所保存的。

2.关键词:view

3.创建视图的语法

create view v_视图名称 as select|update|delte|insert;

4.查询视图的语法

select * from v_视图名称

5.删除视图的语法

drop view v_视图名称

6.索引(index)

索引就是目录,提高查询效率 创建索引create index i_索引名称 on 表名(字段) 删除索引 drop index i_索引名称 on 表名