数据库
数据类型 varchar 表示可变的
分离数据库:是将当前数据库文件和数据库引擎关系断开,没有任何关系了,这样我们就可以随意的拷贝,剪切
在数据库文件上右键--》任务--》分离--》勾选”删除链接”--》确定
脱机:告诉数据库引擎,暂停操作当前数据库,也可以随意拷贝,剪切
附加:把已经分离的数据库文件,重新让数据库引擎管理
主键:标识一张表里面数据行
主键分为逻辑主键和业务主键
业务主键就是具有真实意义的,比如身份证,银行卡,缺点:一旦变化,难以维护
逻辑主键:没有任何实际意义,只为了表示当前列在当前数据表里的唯一标识
不可以手动编辑(特殊情况下除外)
主键列:就是不能插入重复数据的列(默认带索引)
主键标识列:就算数据行被删除,增长的数字也是按照原来的增长,
主外键:作用:就是减少重复数据
DELETE FROM 表名 删除所有数据
TRUNCATE TABLE 表名 清空表 把表里面的数据都会删除,重置为刚刚创建时候状态
以上两者效率有很大差别,如果用DELETE会产生很多日志
如果用TRUNCATE就会产生一行日志
DROP TABLE 表名 直接删除表,不仅仅是数据
增删改查
增加语句
Insert into 表名(列名) values(给列名赋值)
增加的时候bit字段要用0跟1表示
Datetime字段用单引号,里面要遵循基本的时间格式
不能为标识列插入数据(特殊情况下可以)
修改语句
Update 表名 SET 列名=值 where 筛选条件
Where后面可以有多个条件判断,多个条件用空格and隔开
如果where后面有and和or关键字,无论位置是否优先,先执行and
对空值的判断用关键字is
删除数据
DELETE FROM 表名
Delete form 表名 where 筛选条件
约束
非空约束 不能为空
键约束(PK) primary key constraint 唯一 且 不为空
唯一约束 (UQ)unique constraint 唯一,允许为空,但只能出现一次
默认约束 (DF)default constraint 默认值
检查约束 (CK)check constraint 范围以及格式限制
外键约束 (FK)foreign key constraint 表关系:保证外键值来源于主键
查询语句
Select * from 表名
Select top 10 * from 表名 查询前10位信息
Select top 10 percent * from 表名 查询前10%的信息
Order by 将当前查询出来的数据结果,进行排序,排序按照后面指定的列排序
对数据进行分组,分组之后的数据就是”分组信息”,和原来的表里的信息就没有联系了,分组之后,可以取到分组根据,就是根据什么字段分组,就能去到字段的名字
还能使用聚合函数
Group by跟order by一样,只不过跟Having一起使用
Having 对分组信息进行过滤,因为分组之后的信息和原来的表信息没有关系了
执行顺序
查询某种表,如果表里面有1000w数据,我们只查出100条
数据,在对着100条数据进行分组,可以筛选分组,如果指定列,结果集就更小了,这里只有100条指定列的数据,取出前面几条,或者去除重复,最后进行排序,排序只需要对100条数据排序了
DESC 倒序排序 ASC 正序排序
Distinct
去除重复行,但是针对于查询之后的结果,去除重复行
判断结果数据中,整行数据,只要有一个列不相同,那么就不认为是重复的
如果是多个列,先执行前面一个,在根据前面一个查询出来的结果查询后面的
聚合函数
Max() 最大值
Min() 最小值
Avg() 平均值
Sum() 和
Count() 一共多少条数据
Where
Between .... and...
In关键字 判断一个值是否在后面括号里
模糊查询
使用系统已经定义好的匹配符,按照定义的规则匹配数据,如果匹配就查出来
通配符,匹配符:_ % [] ^
_ 代表一个任意字符
% 代表多个任意字符
[] 代表一个字符 的取值区间
^ 配合[]使用,表示不是这个区间,数据库是不兼容的,SqlServer可以用,其他数据库用not like
里面 不区分大小写
如果在匹配时,就要匹配这几个符合,那么需要把符合放在[]中,^不用,因为他不在[]中就默认是普通字符了
空值判断
ISNULL(‘列名’,值)
类型转换
Cast(待转换的值 as 数据类型)
联合结果集
1.2个集合必须具有相同的列数
2.列具有相同的数据类型(至少能隐式转换)
3.最终输出的集合的列名由第一个集合的列来
4.4.UNION 默认会去除重复行
5.UNION ALL 不会去除重复行
批量插入
将一个结果集当成值插入数据库,结果集的列数量,类型,都要一样