1.条件语句的写法
在sql中可以通过‘where条件语句’来对操作对象进行筛选 ——筛选
a.比较运算符
=,<>, >, <, >=, <=,
注意:判断一个字段的值是否为空不能使用=和<>,而是使用‘is null’和‘is not null’
b.逻辑运算符:and, or, not
c.where 字段名 between 值1 and 值2 -- 筛选指定的字段的值在值1和值2之间
d. where 字段名 in 集合 -- 筛选出字段值是集合中的元素;(集合是使用括号括起来,里面是多个值)
e. like操作
2.数据类型
⊙varchar(size):不定长字符串:size决定的是最大长度
⊙char(size):定长字符
⊙text: 不限长度 (最大是255个字符)
⊙int/tinyint (-128~127)
⊙float(size,d)/double(size,d) -这儿的size和d都有约束效果
⊙bit:只有0和1两个值
⊙date/datetime/time:值可以是时间函数的结果,也可以是时间字符串
3.去重
添加约束
1.创建表的时候添加约束
2.通过添加约束索引的方式添加约束
a.添加约束
alter table 表名 add constraint 索引名 约束 (字段名);
说明:索引名是自己随便命名,用来指向当前添加的约束; 约束 -- 需要添加的约束
b.删除约束
alter table 表名 drop index(索引名)
外键和E.R图
1.什么是外键:表中的某个字段的值是根据其他表中主键的值确定的
1.1 多对一的外键的添加:将外键添加到多的一方对应的表中
一对一的外键的添加:将外键随便添加到哪一方,同时添加值唯一约束
多对多的外键的添加:关系型数据库中两张表没法实现多对多的关系,需要一个中间表。(中间表有两个外键分别参照多对多的)
1.2 怎么添加外键:
a.添加外键对应的字段
b.给设计好的外键对应的字段添加外键约束
alter table 表1 add constraint fk_index_index1(索引名) foreign key (字段1) references 表2 (字段2);
c.删除外键索引
alter table 表名 drop foreign key 外键索引名; - - 可以删除外键约束
注意:删除外键约束的时候直接删除约束的索引无效,必须先将约束删掉,然后再删除索引。
d.多对多的外键约束
create table if not exists tb_score(scoreid)
查询的高级操作
1.聚合:max/min/sum/avg/count
2.分组
select 字段操作 from 表名 where 条件 group by (字段2)
将指定表中满足条件的记录按照字段2的进行分组(值是一样的在一个组里面),然后再将每个分组最为整体按照指定字段进行指定聚合操作
注意:a.字段操作的位置除了分组字段不用聚合,其他字段都必须聚合
b.分组的时候where要放在分组前对需要分组的数据进行筛选
having:分组的时候,在分组后用having代替where来对分组后的数据进行筛选
3.子查询:将一个查询操作的结果作为另一个查询的数据源
4.连接查询:同时查询多个表中的数据
select * from 表名1,表名2... where 连接条件;
连接查询如果不加连接条件,结果是一个笛卡尔积
注意:如果连接查询的时候既有连接条件又有删选条件,我们要把删选条件写在连接条件后面
2.内连接
select * from 表1 inner join
表2 on 表2的关联条件
中间表写在最前面(存在关联了其他表外键的表)
3.外连接
外连接分为左外连接、右外连接和全连接,但是在MySQL中只支持左外连接和右外连接
字段索引
字段的索引就相当于目录,作用是为了能够快速的对这个字段进行查找
添加索引的好处是可以大大的提高查询效率;缺点:1.会消耗额外的存储空间 2.会让添加和删除的效率降低
添加索引:create index 索引名称 on 表名 (字段名)- 给表中指定的字段名添加索引
建议:1.索引不能滥用 2.如果项目中针对某个字段的查询很频繁,建议加个对应的索引
explain: 获取执行计划
DCL
1.创建用户
creat user 用户名@登录地址
登录地址:(限制用户能够登录MySQL的主机地址), Ip地址,localhost(数据库本机),%(任何位置)
2.授权
grant 权限类型 on 数据库.对象
3.召回权限
revoke
4.事务
完成一个任务需要执行多条sql,但是要求多个操作中还要有一个操作失败,这个任务就失败,数据全部还原;所有的操作都成功,整个任务才成功的时候使用事务
开启事务环境
begin;
提交事务(只有begin到commit这之间的所有的sql还行成功才会执行commit,否则执行rollback)
commit;
事务回滚(放弃begin到commit之间执行成功的所有的sql)
rollback;
网友评论