数据库初级

数据库管理系统(DBMS:data base management system

数据库(DB):①DBMS②数据文件

完整性:①正确性②准确性

数据冗余:①不能绝对避免冗余②为了提高查找效率,也允许一定冗余

系统数据库:master;msdb;model;tempdb

数据库文件:数据文件①主:.mdf ②次:.ndf  日志文件:.ldf   

数据类型:

 

数据类型

二进制数据类型  存储非子符和文本的数据  Image   可用来存储图像

文本数据类型   

字符数据:包括任意字母、符号或数字字符的组合   

Char 固定长度的字符数据(每个字符占一个字节)

        Varchar 可变长度数据(每个字符占一个字节)

        Nchar  固定长度的字符数据(每个字符占两个字节)

        Nvarchar 可变(每个字符占二个字节)

        Text    存储长文本信息(2亿个字符)

        Ntext   存储可变长度的长文本

日期和时间  日期和时间在单引号内输入    Datetime   

日期和时间(y-m-d h:m:s y/m/d h:m:s)

数字数据    该数据仅包含数字,包括正数、负数以及分数   

int 整数 float数字

货币数据类型    用于十进制货币值    Money   00.0000

Bit数据类型 表示是/否的数据 Bit 存储布尔数据类型(0,1 true,false)

             

数据完整性:实体完整性(主键,唯一性,标识列)

           ②域完整性

           ③引用完整性(外键)

           ④自定义完整性

 

主键:①不允许重复键

     ②一张表最多只有一个主键

     ③ 主键可以由多个列组成必须满足最小列原则

标识列:①种子(起始量)②增量               

标识列特点:①自动增长②int型③不允许人工干预               

域完整性:① 数据类型② Check约束③ 默认值default ④ 空值null

唯一性设置:右键→“索引与键”→“唯一性”

外键设置:右键→“关系”→“添加”→选择主键表及其主键

 

T-SQL

注释:①- - 单行注释② /*      */    单行或多行注释

执行SQL

⑴准备:① 新建查询② 打开数据库③ 查看表结构

⑵执行(“F5”):①编写②分析

⑶收尾:保存

 

插入语句:

㈠单行插入:Insert into 表名(列1,列2,……) values(1,值2,……)

   注意:①列和值必须一一匹配(数量,数据类型)

         允许只插入某些列,由是否允许为空决定[空值null]

         ③如果有标识列存在,当它不存在

A.  不带列名Insert into 表名    values(1,值2,……)

释:①代表所有列;②所有列均需给出相应值,除了标识列,允许为空也必须给值null

B:有默认值时

列名出现: ①给出给定的值 ②default列名不出现:不用管

㈡多行插入:

insert into  表名

select ‘值1’,’值2’,……  union

select ‘值1’,’值2’,……  union

…………

select ‘值1’,’值2’,……     (最后一个无union)

 

替换:

update 表名

set 1=新值1,列2=新值2,……(中间用逗号连接)

[where 条件表达式] 

运行:

select *from 表名    (运行“F5

 

删除:

     delete from 表名 [where条件关系式]

     truncate table

 

两者区别:

①不带where语句,delete可以                                                                                                                  

②表里有主外键关系,truncate无法删除,delete可以

     Truncate删除速度快,不写日志文件,不可恢复

 

通配符:

_(下划线):占一个位置;表示任意一个字符;

%(百分号):占任意位置,表示任意个字符;

[]:占一个字符,表示括号内的可选范围内的一个字符;

[^ ]:取反,除了括号里的可选范围外的内容。

①通配符必须like连用

②通配符所在字符串要打上单引号

     一般用在check约束,where语句中。

 

导入,导出。

右键→“任务”→“导入”或“导出”(弄清源文件和目标文件)

 

SQL查询

SQL查询标准格式:

select 列名,聚合函数(sum,max,min,avg,count)

from 表名

[where条件关系式]

[group by 列名

Having条件]

[order by asc/desc]

注意:①顺序绝对不能颠倒 ②Group by 可以不需要having单独出现 

Having必须和group by连用

总执行顺序:

fromwheregroup by→聚合函数→havingorder byselect

 

1.select

①可接算术表达式,如select 1+2+3;②可接字符串

2.查看

查看所有列:

select * from 表名 (*代表所有列)

查看部分列:

select 1,列2,……from 表名

3.列的别名:

⑴列名 as 别名 ⑵列名 _ 别名 ⑶别号=列名  (别号需加单引号)

4.常量列:

select *5 from 表名

5.+

+  加法          字符串+字符串  连接

数(字符串)+字符串(数) 自动进行强制转换,将字符串转换成数字

①转换成功   加法②转换失败  报错

6.*

①数*   乘法

②字符串*字符串  报错

③字符串*数字  自动转换

7.Order by

Asc 升序,默认;desc 降序;②多列排序

Order by 1 /,2 /降,……

   优先级 列1>2>……

8. Between and…:

①数字或日期②适用于区间段③两头包含等于

9.In

用于多种可能中选择一种

  Where stuid=2 or stuid=4  <>where stuid in (2,4)

In 相当于多or连接条件表达式

10. is  null  判断为空is not null 判断不为空

11.Top

Select top 数字(int) 列名

Select top 数字(int percent

注意:如果结果为小数,显示结果为整数部分加1

12.条件

Where :其他条件

Order by 排序

 Top  ①前几列 top int②最大值 top 1 desc③最小值top 1 asc

 

函数

字符串函数:

charindex(指定字符串,目标字符串,开始查找位置)int

功能:返回字符串中指定表达式的起始位置。

如果没有给定开始查找位置、或者给定值为负数或零,那么搜索将会开始于 目标字符串 的起始位置。

len(指定字符串) int

功能:求所给字符串中字符个数

datalength(制定字符串)int

功能:求所给字符串中字符总字节数

replace(目标字符串,带替换字符,新字符串)

     功能:替换指定字符串中的部分字符

 

日期函数

getdate() :返回当前日期→char

dateadd(日期部分,数量,日期) char

datename(日期部分,日期) char

datediff(日期部分,日期1,日期2)int

如:datediff(mm,2008-08-12,2008-10-21)

datepart(日期部分,日期) int

日期部分:yy:year  mm:month dd:day dw:weekday wk:week

lower(目标字符串) 大写转换成小写  upper(目标字符串) 小写转换成大写

ltrim:  清除字符左边字符  rtrim:  清除字符右边字符

right(目标字符串,位数) 功能:截取字符串右边X

left(目标字符串,位数)  功能:截取字符串左边X

 

数学函数:

ceiling(数字):返回大于等于的邻近的整数

floor(数字):返回小于等于的邻近的整数

power(底数,幂次) round(数,精度) rand() 随机数 0<=rand()<1

强制转换:convert(数据类型,待替换字符)

 

聚合函数

注意:

①任何数与null进行运算结果都为null;

②聚合函数使用时会忽略值为null的记录;

Select后接聚合函数,则不能出现其他列,除非该列出现在其他聚合函数里或该列出现在group by 语句里

Sum(列名) Avg(列名) 列所表示的数据类型为数字类型

max(列名) min(列名) count(列名) 可为数字,字符,日期                      distinct 去掉重复的记录)

⑥聚合函数不能出现在where语句中

 

wherehaving的区别:

Where不能接聚合函数,having可以

Where是分组前的条件筛选;having是分组后的条件筛选

 

内联接:

select 列名 

from 表名1 as 别名1

inner join 表名2 as别名2

On 别名1.列名=别名2.列名   (两列为两表共有列)

 

外联接:

左外联接:

left outer join ……     On ……

右外联接:

 right outer join ……   on ……

全联接:

full join ……        on ……

 复制表:

select 想要看的列     Into 新表    from 旧表

注意:①新表不能事先存在

②复制表的结构和数据,不复制主外键关系,check约束

多行插入:

insert into 表名1(列……)  select 对应的列  from 表名2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值