您的位置:首页 > 数据库 > MySQL

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语句的一些总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: