mysql增删改查语句
2016-07-09 15:51
399 查看
数据库(表)设计3范式:
第一范式(1NF):
原子性,让每个数据不可再分;
第二范式(2NF):
唯一性(每行数据不重复),消除部分依赖;
定义主键,就做到唯一性;部分依赖就是其他字段只依赖主键的“部分字段”。
第三范式(3NF):
独立性,消除传递依赖。
主键--->字段A,字段B,字段C...
又出现:字段A-->字段B
此时就出现了传递依赖:
主键--->字段A-->字段B
这种情况需要消除!
经验总结:只要做到一种数据存储在一个表中,就基本可以实现3范式的要求。
数据操作语言:
插入数据(增):
insert into 表名 (字段1,字段2,....) values (值a1,值a2,....),(值b1,值b2,....),(...);
replace into 表名 (字段1,字段2,....) values (值a1,值a2,....),(值b1,值b2,....),(...);
insert into 表名 set 字段1=值1,字段2=值2, .....;
insert into 表名 (字段1,字段2,....) select 字段1,字段2,.... from 表名2;
load data(载入数据)语法:
载入一个纯文本的纯数据文件;其中每一行数据以换行符为分割,一行中的数据项(字段值),以“tab”符号位分割符;
删除数据(删):
delete from 表名 where 条件 【order by排序】 【limit 数量】
修改数据(改):
update 表名 set 字段1=值1,字段2=值2, ..... where 条件 【order by排序】 【limit 数量】
注意:
不管是insert语句,还是update语句,对于“直接值”,字符串类型和时间类型,都需要使用单引号引起来。
基本查询
基本语法形式
select [all | distinct] 字段或表达式列表 【from子句】【where子句】【group by子句】【having】
【order by子句】 【limit子句】
字段或表达式列表
字段必然是来源于“数据源”(表);
每个字段或表达式,都可以对其“取别名”: XX as 别名
from子句:就是数据源;
where子句:是对数据源的每一行数据进行的某种条件筛选;
算术运算符,比较运算符,逻辑运算符
is运算符:空值和布尔值的判断
is null, is not null, is true, is false
between运算符:范围判断:
XX between 值1 and 值2;
in运算符:给定确定数据的范围判断:
XX in (值1,值2, .... )
like运算符:对字符串进行模糊查找:
XX like ‘要查找的字符’
要查找的字符 要想发挥作用,就必须依赖于以下两个特殊字符:
% :代表任意个数的任意字符
_ :代表一个任意字符
group by 子句:分组
什么叫做分组?
就是对若干条“原始数据行”,以某种标准(字段值),来进行“分类”。则分完了之后,自热,就会构成以该字段值为特征的“小组”,每个小组一定是具有相同的该字段的值;
但,注意:
分组之后,只有组信息,而且,每一组,在结果集中,就是一行;
具体来说,有如下信息可用(就是出现在select的输出部分):
1,分组依据字段本身;
2,每一组的“数量信息”:用count(*)来取得;
3,数值型字段的以下几个“统计值”(聚合计算值):
max(XX), min(XX), avg(XX), sum(XX);
having子句:
类似where的作用和使用语法,但其只针对groupby分组之后的“组信息”进行筛选;
order by 子句:对前述数据以某种指定的方式进行排序(ASC,DESC);
limit子句:
对前述数据,以指定的行号开始取出多少行;行号是从0开始算起的连续的整数数字,跟数据本身中的字段值没有关系。
对整个select语句的一些总结
第一范式(1NF):
原子性,让每个数据不可再分;
第二范式(2NF):
唯一性(每行数据不重复),消除部分依赖;
定义主键,就做到唯一性;部分依赖就是其他字段只依赖主键的“部分字段”。
第三范式(3NF):
独立性,消除传递依赖。
主键--->字段A,字段B,字段C...
又出现:字段A-->字段B
此时就出现了传递依赖:
主键--->字段A-->字段B
这种情况需要消除!
经验总结:只要做到一种数据存储在一个表中,就基本可以实现3范式的要求。
数据操作语言:
插入数据(增):
insert into 表名 (字段1,字段2,....) values (值a1,值a2,....),(值b1,值b2,....),(...);
replace into 表名 (字段1,字段2,....) values (值a1,值a2,....),(值b1,值b2,....),(...);
insert into 表名 set 字段1=值1,字段2=值2, .....;
insert into 表名 (字段1,字段2,....) select 字段1,字段2,.... from 表名2;
load data(载入数据)语法:
载入一个纯文本的纯数据文件;其中每一行数据以换行符为分割,一行中的数据项(字段值),以“tab”符号位分割符;
删除数据(删):
delete from 表名 where 条件 【order by排序】 【limit 数量】
修改数据(改):
update 表名 set 字段1=值1,字段2=值2, ..... where 条件 【order by排序】 【limit 数量】
注意:
不管是insert语句,还是update语句,对于“直接值”,字符串类型和时间类型,都需要使用单引号引起来。
基本查询
基本语法形式
select [all | distinct] 字段或表达式列表 【from子句】【where子句】【group by子句】【having】
【order by子句】 【limit子句】
字段或表达式列表
字段必然是来源于“数据源”(表);
每个字段或表达式,都可以对其“取别名”: XX as 别名
from子句:就是数据源;
where子句:是对数据源的每一行数据进行的某种条件筛选;
算术运算符,比较运算符,逻辑运算符
is运算符:空值和布尔值的判断
is null, is not null, is true, is false
between运算符:范围判断:
XX between 值1 and 值2;
in运算符:给定确定数据的范围判断:
XX in (值1,值2, .... )
like运算符:对字符串进行模糊查找:
XX like ‘要查找的字符’
要查找的字符 要想发挥作用,就必须依赖于以下两个特殊字符:
% :代表任意个数的任意字符
_ :代表一个任意字符
group by 子句:分组
什么叫做分组?
就是对若干条“原始数据行”,以某种标准(字段值),来进行“分类”。则分完了之后,自热,就会构成以该字段值为特征的“小组”,每个小组一定是具有相同的该字段的值;
但,注意:
分组之后,只有组信息,而且,每一组,在结果集中,就是一行;
具体来说,有如下信息可用(就是出现在select的输出部分):
1,分组依据字段本身;
2,每一组的“数量信息”:用count(*)来取得;
3,数值型字段的以下几个“统计值”(聚合计算值):
max(XX), min(XX), avg(XX), sum(XX);
having子句:
类似where的作用和使用语法,但其只针对groupby分组之后的“组信息”进行筛选;
order by 子句:对前述数据以某种指定的方式进行排序(ASC,DESC);
limit子句:
对前述数据,以指定的行号开始取出多少行;行号是从0开始算起的连续的整数数字,跟数据本身中的字段值没有关系。
对整个select语句的一些总结
相关文章推荐
- mysql命令大全
- JDBC使用MYSQL的LOAD DATA LOACAL INFILE和LOAD DATA INFILE
- MySQL练习题
- MySQL5.6 报错1067
- Mysql慢日志、缓存配置
- Mysql数据库在cmd操作(一)
- mysql 建立索引的原则
- c# 连接 mysql 以及实现简易增删改查
- PDO操作MySQL 执行写操作与读操作
- mysql绿色版首次安装初始密码问题
- mysql 主从复制配置
- mysql数据库部分性能问题分析及优化
- 项目中遇到的mysql group by having
- Mysql服务启动遇到“某些服务启动后自动停止”的问题的解决方案
- MySQL配置文件my.cnf参数优化和中文详解
- php示例代码之使用mysqli对象
- php示例代码之使用MySQLi接口
- php示例代码之使用mysql_fetch_object函数
- php示例代码使用mysql_fetch_assoc函数
- php示例代码之使用list函数和mysql_fetch_row函数