表的数据类型即sql总结
在MySql数据库管理系统中,提供数值类型(整数型,浮点数,定点数类型,二进制类型),日期和时间类型以及字符串类型.
例如 Int 型占4个32位,就比Tinyint 型占1个字节.
时间类型:
Date类型用在需要显示年月日的情况,在输入时,年月日中间的符号"-"是否加上第可以
Time类型用于只需要时间值的情况
DateTime用于需要显示年与日和时间的情况,年月日中的符号"-"和时分秒中的符号":"是否加上都可以.
Timestamp 的显示格式与Datetime一样,只是Timestap的列值范围小于Datetime类型.另外一个最大不同是
Timestamp的值与时区有关.
字符串类型
Char(n)类型和Varchar(n)类型的区别是Char(n)用于存储定长字符串,如果存入的字符串少于n个,但仍占n个字符的空间
,而Varchar(n)用于存储定长可变的字符串,其占用的空间长度为实际长度加一个字符.
Text类型(Tinytext Mediumtext 和 Longtext)用于保存非二进制字符串,如文章内容 评论.
Enum类型是一种枚举类型
Bit(n)类型是为字段类型
Binary类型和Varbinary类型用于存放二进制字符串.
BLOB, 即二进制大对象.是一个可以存储二进制文件的容器.
唯一性约束:
用于保证列中不会出现重复数据,在一个数据表上可以定义多个唯一性约束,定义了唯一性约束的列可以去空值.
在MySql中,主键约束和唯一性约束的区别是:唯一约束的字段可以为NULL,可以重复加入含有NULL的记录,但主键字段不能
为null;一个表中只能定义一个主键约束,但可以定义多个唯一约束.
定义唯一约束的语法规则:
字段名 数据类型 UNIQUE
默认约束:
默认约束用于指定某列的默认值.在MySql的表中,可以给列设置默认值,如果某列已设置了默认值,用户在插入记录时,没有
给该列输入数据,则系统自动将默认值填入该列.
语法规则:
字段名 数据类型 DEFAULT 默认值
统计功能分类查询
GROUP_CONCAT(列名) 可以显示出每个分组中指定的字段值
select group_concat(列名) from 表名 where 条件 group by 列名1[,...n]
多字段分类查询
select 字段列表 from 表名
where 条件
group by 列名1, 列名2, ....
在GROUP BY 子句中 ,按照列出的列名先后次序进行分类
采用HAVING 子句的分类查询
MYSQL 中提供了 HAVING 来实现条件限制分组数据记录.
语法规则:
select 字段列表 from 表名
where 条件
group by 列名1, 列名2, ....
having 条件;
多表查询:
内连接查询:分为自连接,等值连接和非等值连接
1.自连接 特殊的等值连接,所谓自连接就是指表与其自身进行连接.
语法形式分为MySql 自身的语法形式, 可以采用ANSI连接的语法形式
mysql语法形式
select x.姓名 , x.性别 , z.专业名 from xsqk x, xsqk z where x.学号 = z.学号;
ANSI语法形式
select x.姓名 , x.性别 , z.专业名 from xsqk x inner join xsqk z on x.学号 = z.学号;
2.等值连接:就是在关键字where后面的匹配条件中,利用等于关系符"="使得两张表中相同字段的值相等作为连接条件来实现的连接
3.不等值连接:不等值连接与等值连接相比,就是把匹配的关系运算符"="改为">,>=,<,<=和!="
外连接查询:
1)左外连接:就是查询结果中显示左表中所有记录,以及右表中符合条件的记录,使用的连接关键字是LEFT JOIN.
2)右外连接:就是在查询结果中显示右表中所有记录,以及左表中符合条件的记录,使用的连接关键字是 RIGHT JOIN
由于连接查询效率不高, 因此出现了比连接查询性能更好的子查询.
子查询:是指在一个SELECT语句中再包含一个SELECT语句,外层的SELECT语句称为外部查询,内层的SELECT语句称为内部查询或者
子查询.
子查询被包含在WHERE子句中作为条件,在执行时通常先执行子查询的SQL语句得到查询结果,然后再将其作结果作为条件完成查询的操作.
子查询分为以下几种:
1.使用比较运算符进行子查询
2.使用in的子查询
3.使用ANY的子查询
有三种方式:=ANY >ANY <ANY
=ANY: 功能和IN子查询一样
>ANY: 表示比子查询中返回的数据记录中最小值要大
<ANY: 表示比子查询中返回的数据记录中最大值要小的记录
4.使用ALL的子查询,有两种方式>ALL(>=ALL)和<ALL(<=ALL)
>ALL(>=ALL)
5.使用EXISTS的子查询
合并查询结果
语法规则:
select 列名 from 表名 1
union[all]
select 列名 from 表名 2
union 和 union all 的区别: 使用union 连接查询时结果时,会去掉相同行;而 union all 连接的时候, 不会去掉相同行.
将查询结果输出到其他表
在对表进行查询时,可以将查询结果保存到一个新表中,这种方法常用于创建表的副本或创建临时表.新表的列为SELECT子句指定的列,数据类型为原表的数据类型,属性方面保留了非空属性和默认值属性,忽略如主键, 外键约束等其他属性.
1.输出前其他表未创建.
CREATE TABLE 新表 SELECT 列名 列表 FROM 原表 WHERE 条件;
2.输出前其他表已经存在
语法规则:
INSERT INTO 其他表 SELECT 列名 列表 FROM 原表 WHERE 条件;
这里需要注意的是, 如果插入的表有主键约束, 则在通过查询输入时与其他表的输入一样, 主键不能有重复值.
网友评论