mysql语法

 
 

1 : 基础语法 --------- 对实体集 的操作 ------------ select 查询 create 创建 drop 删除 alter 修改

----------- 对表的操作 -------------- insert 插入 update 更新 delete 删除

----------- 授权及取消授权 -------------- grant 授权 revoke 取消授权

-------------- 退出登录 ----------------- quit/exit


create database 数据库名[数据库选项] 两个编码格式,校验规则

重点 注意: 如果要使用中文 一定要设置 set names gbk; 告诉服务器客户端编码

show databases 查看当前有哪些数据库

show create database 数据库名 查看数据库的创建语句

drop database 数据库 删除数据库(一定要慎重)

alter database 数据库名 charset gbk 修改数据库编码格式(服务器) 数据库名不可改变

create table 表名(字段名 字段类型)[表选项] 字符编码 数据库引擎 创建数据库

show tables 查看数据表

show create table 数据库表名 查看创建数据表名

desc 表名 查看表结构

drop table 表名 删除表(慎重)

如果我们删除一个不存在的表格会报错 因此 我们 通常会 drop table 表名 加上 if exists 表名

rename table OldName to NewName 修表名

**************** 修改定义 **************** alter table 表名 add | drop | change | modify 例: alter table 表名 add 字段名 字段类型 增加一列 alter table 表名 drop 字段名 删除一列 alter table 表名 change 旧字段名 新字段名(字段类型..) 重命名字段 alter table 表名 modify 字段名 新类型; 修改字段类型 alter table 表名 charset 编码格式 修改表选项

************** 小规律 ************** create database/table 增加数据库/表 drop database/table 删除数据库/表 alter database/table 修改数据库/表 show databases/tables 显示有哪些数据库/表 show create database/table 显示创建语句

------------------------- 数据库操作 ------------------------- 插入数据 insert into 表明(字段列表) values(值列表)

查询数据 select *|字段列表 from 表名 [where 条件] 字段列表以 "," 分割

删除数据 delete from 表名 [where 条件]

修改数据 update 表名 set 字段=值,....... where 条件

查看服务器校对规则 show collation


****** 存储引擎 ****** create table 表名 (字段 字段类型) engin = inndb|myisam

------------------- 数据库 存储类型 ------------------ 数值型(整型,浮点型) 字符串类型,日期时间类型

数值类型 : tiny 微小 small 小 medium 中型

unsigned 无符号属性

float double decimal (货币类型)

后面可拼接 MD 例: float(M,D) M表示总位数,D表示小数位数

时间类型 Datatime 显示形式和下面的基本一致 timestamp 显示形式基本同上面一直 存储范围不一样timestamp 存储的是整形,但是插入显示方式一样 注意: 一般开发过程中 只创建一个时间戳字段,如果不插入数据,会自动填充遮天数据插入的时间

date 年月日 time 时分秒

year 年

字符串格式 char 最大长度 255 varchar 大一些 实际长度可变 可用 M 定义允许长度 text 可以存储比较长的字符串,不能设置默认值 enum 枚举 只能选中一个值 enum(值1,值2....) set 集合 类似多选 set(值1,值2.....) 选择 第一个值为 1 0000 0001 第二个值位 2 0000 0010 第三个值为 4 0000 0100 set 最多可以有 64 种情况 .............

-------------------- 列属性(约约束) -------------------- null 默认列约束 允许字段为空 not null 表示不允许字段为空 直接加在 字段类型后面即可

desc 表名 可以查看 列约束

default 默认值 通常配合 not null 一起使用 给not null字段一个默认值

primary key 主键

unique key 唯一键 与主键的区别 唯一键可以有多个 主键不能为null 唯一键可以为 null

auto_increment 自增长 通常配合主键使用 注意 : 字段必须为整形

comment 注释 : 一般加载字段类型后面

*********************** 外键 *********************** foreign key(本表字段) references 外表名(外表字段) [选项] cascade : 同步操作 父键对应字段更新删除的时候,子表的外键字段也进行相应的更新或删除

set null : 设置为 null 当父表的对应键字段删除 或者 更新的时候子表的外键字段就设置为null

restrict : 拒绝主表更新或者删除

注意 : 外键约束只有 innoDB 存储引擎才支持

主表更新 foreign key(子表字段) references 父表(父表字段) on update[选项]

主表删除 foreign key(子表字段) references 父表(父表字段) on delete[选项]

添加外键 alter table 表名 add foreign key(子表字段名) references 父表名(父表字段_[选项];

删除外键 想要获取外键名 必须通过 show create table 表名获取 alter table 表名 drop foregin key 外键名

--------------------------------- 数据操作详细 --------------------------------- 插入数据标准语法 insert into 表名(字段列表) values(值列表)

蠕虫复制 insert into 表名(字段列表) select(字段列表) from 表名

如果发生主键重复可以采用

直接更新 insert into 表名(字段列表) values (值列表)on duplicate key update 字段=值[,字段=值];

或 直接删除原记录再插入 replace into 表名(字段列表) values (值列表);

删除数据 满足条件删除 delete from 表名 [条件]

truncate 清空 只能清空操作,不能使用where判断,自增长字段重置为 1

---------------------------------- 查询详解 ---------------------------------- 五子句顺序 select *|字段列表 from 表名 where 子句 group by 子句 having 子句 boder by 子句 limit 子句 顺序不可改变

select 选项 all / distinct all : 所有 默认的就是 all distinct : 去重 例 : select distinct name from 表名

select 别名 select 字段名称 as 别名 from 数据表 例 : select name as 名字 from student; 展示出来的结果 name 就有名字 替换了

where 中的运算符 between A and B : 在A 和 B 之间 in : 值的集合 in(2,4,8) 满足条件 2 或4 或8 的 select *from student where age in(22,23,24) 查询满足 年龄 为 22 或 23 或 24 学生的信息 not in : 与上方 in 相反 找 值集合外的 && 相当于 and || 相当于 or ! 相当于 not where 查询条件不知有 = 还有上面 这些可以作为查询条件 运算符使用

like 模糊查询 通配符 % : 任意多个字符匹配 _ : 使用单个字符进行匹配

group by 子句 : 通过分组获取数据 聚合函数 : 通常与 group by 一起使用 主要用于对一组值的计算(group 不要正好进行分组) avg() : 返回平均值 , 空值会被忽略 count() : 返回指定组中的项目数量 max() : 返回指定组中的最大值 min() : 返回指定组中的最小值 sum() : 返回指定组中的数据的和 小括号中填写什么字段,获取获取对应的值 例:select name sex,max(age) from student where 1 group by sex; 上例 以性别分组 获取 每组最大名字

having 子句 : 含义可以理解成为和 where 一样(分组之后在进行筛选只能使用having子句) 二者比较 : where 子句是把磁盘上的数据筛选到内存 having 子句是把内存中的数据再次进行筛选 where 子句不能使用统计函数 例 : select 字段 from 表名 group by sex having avg(age)> 35

order by 子句 : 排序 语法 : order by 字段 [desc|asc] desc : 降序 asc 升序 多字段 : order by 字段1[desc|asc],字段2[desc|asc],...... 先按照字段 1 进行排序 然后在按照字段 2 进行排序

limit : 限制 语法 : limit page page 含义 返回多少条记录 limit start , endpage start 从第几条开始 endpage 返回多好条 例句 select *from table_name limit 20,10; 从第二十条个开始 返回十条记录

************************** 联合查询 ****************************** union : (我感觉没什么卵用) 语法:select union [选项] select 子句 union [选项] 选项就两个 一个是 all 另一个是 distinct 这个是默认选项 all : 不去重 distinct : 去重 注意:联合查询字段顺序,数目必须一致 使用联合查询的时候如果有 order by 必须要用小括号括起来 corss join : (我感觉没什么卵用2) 语法 : select *|字段列表 from 表名 cross join 表名; 返回结果的条数 = 表名记录数 * 表名记录条数 结论 : 没什么卵用

inner join : (意义重大) 可以简写成 join select *|字段列表 from 表 inner join 表 inner join 表 on 条件 inner 可以省略 只写join 系统默认就是内连接 on 连接条件 不能省略 可以给表通过 as 去别名 注意:如果获取的字段信息,如果两个表中字段名有重复的,必须以 表名.字段的形式来获取指定的数据

left outer : 左外连接 语法 : select *|字段列表 from 表 left outer join 表 on 条件 左表为主,坐标中无法连接的记录同样返回,由表中对应的字段使用 null 填充

有外连接 同上 方向相反

子句查询 (个人感觉基本没用 太消耗性能了) 这个自己研究吧

******************** 数据还原和备份 ********************* 数据表的备份 语句 : select *|字段列表 into outfile 路径(绝对路径) from 表名 注意 : 路径一定要用引号引起来,且路径是 反斜杠 / (Linux的斜杠) load data infile 路径 into table 表名(字段列表)

sql 的备份 备份需要在cmd的环境中备份,cmd的环境变量是 mysqldump, 这个mysqldump 在对应的mysql/bin文件夹中

mysqldump –h –P –u –p 数据库名 表名 > 路径

注意: 数据库名后边没有表名,表示整个库都备份 路径不要加 引号,也是用反斜杠 后缀名为 .sql

还原 mysql –u –p 数据库名 < 路径

注意 : 这里的 备份还原是 window 下的

********************* 视图(重点) ********************** 视图:一个虚拟的表,本身没数据,通过执行相应的select 语句完成获得相应的数据 创建视图 : create view 视图名 as select 子句 视图是虚拟的数据表,所有的操作都可以对应数据表操作.

show tables 可以查看到视图 desc 视图名 可以看到视图结构 show create view 视图名 查看视图创建语句 alter view 视图名 as select 子查询 修改视图 drop view 视图名 删除视图

作用: 1. 重用 sql 语句 2. 简化复杂 sql 语句 是表的组成部分而不是整个表 3. 保护数据,授予表特定部分的权限而不是整个表访问 4. 水平分表和垂直分表 水平分表:把一个大表分成若干个结构相同的小表,需要使用union连接数据 垂直分表:摆一个表的字段分成两个部分,常用的放在一个表里,不常用的字段放在另一个表里,需要时用join连接起来

视图算法(查询模式) 基础语法: create algorithm = undifined|merge|temptable view 视图名 as select 子句 默认算法 undifined 算法分类 1. UNDEFINED : 未定义算法,默认算法,让系统自动选择相应算法,或者指定算法为 undifined 2. MERGE : 合并算法,先组装 3. undifined : 系统默认算法,自动选择是用什么


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值