Mysql回顾
枚举类型enum和set都是字符串对象
enum(‘1’,’2’,’0’) 用数字下标来表示各个对象
set(‘1’,’2’,’3’,’4’) 用而进行二进制方式来表示各个对象顺序
0001 0010 0100 1000 0101
‘1,2,3’
主键 :可以选择一个字段或多个字段
字段信息变化较少,和表中其他字段的关联少;
Primary key()
外键:参照完整性约束
Foreign key(字段)references 表名(字段)
注意存储引擎MYISAM、 innodb
Myisam tb3 tb5,声明了外键不起作用
Insert 和delete
Innodb tb4 tb8 支持外键
Insert 和 delete
索引:index
例如: 姓名 年龄 单位 工资
姓名
年龄
姓名,年龄,单位 (推荐)
注意:
缩短搜索的时间;
会单独保存索引文件;
Insert等 会有影响,不建议小的数据表创建索引;
使用索引一次只允许一个索引起作用;
1、Select语句
语法顺序:select 表达式|字段名 from 表 where 条件表达式|子查询 group by 字段名列表(支持排序) having 条件表达式 order by 字段列表 limit
执行顺序:from where select group by having order by limit
注意:select 信息有别名;
2、多表的使用
1)全连接
select id1,id8 from tb1,tb2 where …;
注意:
相当于从(tb1的行数*tb2的行数产生的)结果中搜索;
Where子句中指定的表达式使用了“=”叫做等值连接;
2)内连接 inner join
Select tb1.id1,id7 from tb1 join tb2 on 表和表连接的条件
Where 条件表达式;
注意:
l 等同于有条件的全连接
l 可用于多个表(超过两张表)的连接
l 显示结果包括所有表中的信息
3)外连接 outer join
Select tb1.id1,id8 from tb1 left outer join tb2
注意:
用于两张表;
只保留一张表的全部记录,另一张表保留满足条件的记录,不满足的用null来填充
cross join、straight join 等同于join;
自然连接适合于连接条件只有一个字段;
4)子查询
注意:
步骤 :
分类:in(select …)、比较运算符(select…)只执行一次子查询语句
exists(select …) 执行次数和外部选择表的记录行数保持一致
select 、where、 group by、order by
from 必须给子查询的结果起别名
3、视图
相当于用一种格式显示数据表中的记录;
只保存了创建视图的语句;
并不产生新表;
create view view_name[( )]
as select语句;
内置函数
数学函数
提醒:函数名和小括号不要有空格
允许嵌套
Greatest(列表)
Least(列表)
Floor(浮点数)
Ceiling(浮点数)
Round(浮点数)
Truncate(浮点数,小数位数)截取
Abs(数值数据) 求绝对值
Sign(数值数据) 获取符号(+ 、-、0)
Sqrt(正整数) 开方
Pow(底数,指数) 幂
Bin() 二进制
OCT() 八进制
Hex() 十六进制
FORMAT(小数,保留位数)
Mod(数字1,数字2);求余数(正负依赖数字1)
Rand() 生成0<=n<=1之间的随机数
聚合函数 count sum avg max min
字符串函数:
Charset(字符串) 返回该串的字符集
Concat(字符串1,字符串2,。。。。) 连接字符串
Instr
Ucase
Lcase
Left
Length
Replace
Strcmp
Substring
Ltrim
Rtrim
Trim
时间日期函数
Mysql p115-129