@作者 Stone的博客www.1314sl.com
----- 字段属性: 主键:primary key 主键 唯一约束;不能重复 在创建表的时候,在后面加 primary key 关键字 -- 追加主键 alter table 表名 modify 字段名 primary key alter table 表名 add primary key(字段名); --更新&删除主键 alter table 表名 drop primary key; --主键分类 id int primary key comment '逻辑主键' ------ 自动增长 不给值或者给NULL的时候,会自动被系统+1操作 --自增长通常跟主键搭配 auto_increment 1.任何一个字段要做自增长前提是本身是一个索引(Key 拦有值) 2.必须是int型 3.一张表只能有一个自增长 default NUll 不给值 都会触动自增长 ----列属性(修改自增长) 向下修改不生效 向上修改生效 alter table 表名 auto_increment = 值; 查看字增长变量 show variables like 'auto_increment%'; -- 修改自增长步长 set auto_increment_increment=5;--一次自增5 -- 删除自增长 字段的一个属性,可以通过 modify 进行修改(没有 auto_increment) Alter table 表名 modify 字段 类型; alter table 表 modify id int; --查看 desc 表名 -- 列属性(唯一键) unique key --唯一键 数据不能重复,可以有多个唯一,允许为空。 本质与主键差不多。 -- 增加唯一键 1.在创建表的时候,字段之后跟 unique / unique key; 2.在所有的字段之后。unique key(字段,字段); not null unique key --PRI 表中又没有主键 3.在创建表之后增加唯一 alter table 表名 add unique key (字段); --- 删除唯一键 先删除后新增 alter table 表名 drop unique key -- 错误的 alter table 表名 dropindex 索引名字; --------索引 几乎所有的索引都是建立在字段之上 根据某种算法,将已有得数据(未来可能新增的数据) --索引的意义 1.提示查询数据的效率 2.约束数据的有效性(唯一性等) Mysql中提供了多种索引 主键:primary key 唯一: unique key 全文: fulltext index 普通: index 全文索引,最大的问题是如何确定关键字 英文很容易:单词与单词之间有空格 中文很难:没有空格,中文可以各种随意组合(分词:sphinx) ---------------- 关系 一对一 一对多(多对一) 多对多 sqlserver 主表 外表 ---- 范式:减少数据冗余 1NF - 6NF ------- 1NF 第一范式:在设计表存储数据的时候,如果表中设计的字段存储的数据,在取出来使用之前 还血药额外的处理,不满足第一范式。 数据不需要再次拆封 -- 2NF /* 不允许出现部分依赖 在输出舍得的过程中,如果有复合主键 且表中又字段并不是由整个主键来确定, 而是依赖主键中的某个字段,存在字段依赖的部分问题 称之为:部分依赖 */ -- 3NF 不能出现传递依赖 --逆规范化 磁盘利用率与效率的对抗 就是增大空间,提高效率 -------------数据高级操作--------------------- 数据操作:增删改查 新增: insert into 表名【字段名】 values (值列表); 在数据插入的时候,假设主键对应的值已经存在,插入一定会失败! -- 主键冲突 更新操作 insert into 表名【字段名】values(值列表) on dupllcate key update 字段=值; 替换 replace into 表名【字段名】values(值列表; -------蠕虫复制 复制创建表(表结构) create table 新表名 like 旧表名; 蠕虫复制:先查出数据,然后将查出的数据新增一遍 insert into 表名【字段列表】 select 字段列表 * from 数据表名(旧表) -- 蠕虫复制 成倍增长 insert into 自己 select * from 自己; 意义: 1.从已有表拷贝数据到新表中 2.可以迅速的让表中的数据膨胀到一定的数量级。测试表的压力已经效率 ---- 高级 更新数据 基本语法 update 表名 set 字段=值 |where 条件| 高级更新 update 表名 set 字段 =值 |where 条件| limit 更新数量| -- 把表中的 a 变成 c update 表 set 字段='c' where 字段='a' limit 3; !!!GBK 不区分大小写。 ---- 高级 删除数据 可以 通过 limit 来限制数量 delete from 表名【where 条件】【limit 数量】; 删除数据以后,自增长 思路:数据的删除是不会该表表结构,只能删除表后重建。 TRUNCATE 表名 -删除后,重置自增长 ------- 高级 数据查询(select 选项) 基本语法: select 字段列表 * from 表名 where 条件| 完整语法: select 字段列表 * from 数据源 where 条件 group by having order by limit; All:默认的,保留所有的结果 Distinct : 去重,将重复的去掉 -- 字段别名 字段名 [as] 别名; 不写 as 也行 --- 数据源 /* 从一张表中取出一条记录,去另外一张表中匹配所有的记录 而且保留 记录数和字段数 这种结果为:笛卡尔积(交叉连接) 没什么用,尽量不用 */ 子查询: select * from (select * from 表名); -- 高级 where 子句 where 子句的目标用来判断数据,筛选数据 where 返回结果 0 或者 1 0 带表false 1带表true ; 运算符: > 大于 < 小于 >= 大于等于 <= 小于等于 != <> 不等于 = 等于 模糊查询里用到的: like between and in / not in 逻辑运算符: &&(and) 并 ||(or) 或者 !(not) 非 rand 取得一个0和1之间的随机数 floor 向下取整! 1. select * from 表 where id=1 || id=3 || id=5; || || select * from 表 where id in(1,3,5); 2. select * from 表 where height>=170 and heihgt<=180; || || select * from 表 where height between 170 and 180; --------------- Group by 分组---------------- 聚合函数: COUNT() :统计分组后的记录数,每一组有多少条记录 Max() :统计每组中最大的值 Min() :统计最小值 AVG() :统计平均值 SUM() : 统计和 select 聚合函数,字段名 from 表名 group by 字段名 多字段排序: --order by 放在语句最后 select * from 表名 border by 字段名(desc/asc), group_concat(字段) 回溯统计:with rollup -- Having 子句 Having 字句 进行条件判断 having 能做 where 能做的几乎所有事情 但是where却不能 select 字段名 from 表名 group by 字段 having 条件 --- order by select * from 表名 order by 字段 desc/asc; -- limit 子句 limit 有两种使用方式。 只用来限制长度 ------ length:每页显示的数量 Offset:offset-(页码-1)*每页显示数量
@作者 Stone的博客www.1314sl.com

oneNate笔记
@作者 Stone的博客www.1314sl.com
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。