Table(表):关系
Column也叫列或者字段FIELD,
Row(行)元祖
主键(Primary Key)
主键就是数据行的唯一标识
特点:不能重复
不允许为null
一个表中只能有一个主键。
如何选择主键:
1.不允许为空的列
2.没有重复的列
3.与实际业务没有关系的列(逻辑主键)
4。稳定的列。
5.选择单列作为主键。
6.尽量选择数字类型和比较小的列作为主键。
7.每一种表中都应该有主键。
外键(ForeignKey)
当把数据拆分成两张表来存储的时候,每个表中都有自己的主键。
引用另一张表中的列的“外键列”,有外键列的表叫做主键表。
常用数据类型:
1.image类型,用来存储二进制数以byte[]的形式
2.binary,用来存储二进制数
2.字符串类型
char(3)长度只能为3个字节
nchar(3)长度只能为3个字符,可以存储所有双字节字符。
varchar(3)长度小于3个字节,长度可变,
nvarchar(3)长度小于3个字符,长度可变,可以存储所有双字节字符。建议只要有中文就使用nvarchar。
text,存储一篇文章,以字节的形式,2005之后一般使用varchar(max)代替。
ntext,存储一篇字符文章,以字符的形式
varchar(max),长度为4个G的字节类型
nvarchar(max),长度为4个G的字符类型
SQL主要分类:
DDL:(数据定义语言,建表、建库等语句):create drop alter
DML:(数据操作语言):select insert update delete等语句
DCL:(数据控制语言):GRANT 授权、RECOKE取消授权。
常用SQL命令语句:
1.create database mytest(创建数据库)
drop database mytest(删除数据库)
2.create table student(创建表)
drop table student(删除表)
3.使用(if exists ---creat table---)语句创建表
3.alter table 表名(修改表结构)
修改表列的信息:
为表的列添加约束:
一次添加多个约束
创建表的时候添加约束:
为表的列删除所有约束:
表中数据操作
1.插入数据 (向表中列插入数据)
格式:insert into 表名
插入所有值的时候可以省略列名:
向自动编号列插入值的功能:(注意:插入之后,之后的编号是以插入的值为基础,自动编号不会往回走)
如果数据库默认排序规则不是中文的话,那么插入中文就会乱码,如何解决?
2.更新数据:
更新表中数据的语句(update 表名.......set......where 条件)
3.删除数据:
delete 表名:(自动编号并没有恢复到默认,任然继续编号)
格式:delete 表 where 条件
删除所有:
条件删除:
truncate table 表名:
4.查询数据:
格式(select XX from 表 where 条件)
给列起别名as:两种方式
查询前几行top以及去重查询distinct
distinct:
top:
排序(order by 名)
asc升序排序、desc降序排序
语句的先后顺序:
按照表达式进行排序:
条件查询:
模糊查询:
通配符:
空值null处理:
5.聚合函数:
max(最大值)、min(最小值)、avg(平均值)、sum(求和)、count(记数)
当求得的平均值是小数的时候,可以在求和之前*1.0,这样的话就可以求得小数平均值了。
group by (分组)
需要注意的是:分组之后,表中的列只有分组之后的那一列可以存在select 中。不可以存在其他的列。
HAVING(对分组之后的每一列数据进行筛选)
语句的执行顺序:
类型转换(cast convert):
cast(expression as data_type)
convert(data_type,expression,[style])
联合结果集
union
union all
案例:
查询平均分,最高分,最低分的三个表现形式:
像表中一次插入多条数据三种方法:
约束:
常见约束:
自增长约束:identity(种子,增量)在mysql中是auto_increment
局部变量:
声明局部变量语法:
DECLARE @variable_name DataType
其中 variable_name为局部变量的名称,DataType为数据类型。
给局部变量赋值有两种方法:
1、SET @variable_name=value
2、SELECT @variable_name=value
两者的区别:
SET赋值语句一般用于赋给变量一个指定的常量,
SELECT赋值语句一般用于从表中查询出数据然后赋给变量。
函数:
字符串函数:
日期函数:
inner join 、left join 、right join、full join之间的区别?
假设有A和B两张表
内连接:inner join 表示把AB表的记录相符都显示出来,把AB表不符合条件的都排除
外连接分三种,左连接(LEFT OUTER JOIN)、右连接(RIGHT OUTER JOIN)、全连接(FULL OUTER JOIN),
1.A LEFT OUTER JOIN B表示把A表的记录都显示出来,把B表符合条件的结果集显示出来,不符合条件的用NULL表示。
2.A RIGHT OUTER JOIN B表示把B表的记录都显示出来,把A表符合条件的结果集显示出来,不符合条件的用NULL表示。
3.A FULL OUTER JOIN B 表示把A表和B表的记录都显示出来,不符合条件的用NULL表示。
如何连接数据库?
打开运行输入services.msc回车,找到下面这条,启动。