MySQL学习day-33: 查询数据

一、MySQL 中的 DML 操作

1.添加数据(INSERT):

(1)选择插入:

语法:INSERTINTO 表名(列名 1,列名 2,列名 3.....)VALUES(值 1,值 2,值 3......);

(2)完全插入:

语法:INSERTINTO 表名 VALUES(值 1,值 2,值 3......);

(3)插入多条数据:

语法:insert into 表名[(列名1,列名2....)] values(值1,值2...),(值21,值22...)...;

2.自动增长(auto_increment):

MySQL 中的自动增长类型要求:

1)一个表中只能有一个列为自动增长。 

2)自动增长的列的类型必须是整数类型。 

3)自动增长只能添加到具备主键约束与唯一性约束的列上。 

4)删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。

(2)默认值处理:

在 MySQL 中可以使用 DEFAULT 为字段设定一个默认值。如果在插入数据时并未指

定该列的值,那么 MySQL 会将默认值添加到该列中。

创建表时指定列的默认值:

create table 表名(列名1 类型 约束 ,列名2 类型,列名3 类型 default 默认值);

插入数据时的默认值处理:

如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。如果是 完全项插入需要使用 default 来占位。

3.更新数据(UPDATE):

语法:UPDATE 表名 SET 列名=值,列名=值 WHERE 条件;

(1)mysql 的 update 的特点:

1)更新的表不能在 set 和 where 中用于子查询; 

2)update 后面可以做任意的查询。

4.删除数据(DELETE):

(1)使用 DELETE 子句:

语法:DELETEFROM 表名 WHERE 条件;

(2)使用 TRUNCATE 清空表:

语法:TRUNCATETABLE 表名;

(3)DELETE 与 TRUNCATE 区别:

1)truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢); 

2)truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因; 

3)truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原来的值。而 delete 删除以后,自增值仍然会继续累加。

5.MySQL 中的事务处理:

在 MySQL 中,默认情况下,事务是自动提交的,也就是说,只要执行一条 DML 语句 就开启了事物,并且提交了事务。

(1)关闭 MySQL 的事务自动提交:

STARTTRANSACTION 

DML操作.... 

COMMIT|ROLLBACK;

二、MySQL 查询数据

1.MySQL 的基本查询:

(1)MySQL 的列选择:

SELECT*/投影列 FROM 表名;

(2)MySQL 的行选择:

SELECT*| 投影列 FROM 表名 WHERE 选择条件;

2.SELECT 语句中的算术表达式:

1)+ :加法运算;

2)- :减法运算;

3)* :乘法运算 ;

4)/ :除法运算,返回商 ;

5)% :求余运算,返回余数;

3.MySQL 中定义空值:

包含空值的算术表达式计算结果为空。

4.MySQL 中的列别名:

语法:SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;

5.MySQL 中的连字符:

MySQL中并不支持||作为连字符,需要使用concat函数。在参数数量上与oracle的concat 函数有区别。

6.MySQL 中去除重复:

在 SELECT 语句中用 DISTINCT 关键字除去相同的行。

7.约束和排序数据:

(1)MySQL 中的比较条件:

比较运算符:等于=;大于>;大于等于>= ;小于<;小于等于<=;不等于!=或<>;

(2)模糊查询:

关键字:like

%表示任意多个任意字符 ;

_表示一个任意字符。

(3)逻辑运算符:

and 、or 、not;

(4)范围查询:

1)between...and;

2)in 表示在一个非连续的范围内。

区别:

1)如果要让选择的结果在某一个范围之内的话可以用between和in这两个关键字。

2)如果他们都为空的话,between会限制select语句让它一条记录都无法选出来,但是in的话则相反,这个限制条件不会起任何作用,会选择出所有的记录。

(5)空值判断:

1)判断空 isnull ;

2)判断非空 is not null;

(6)使用 ORDERBY 排序:

用 ORDERBY 子句排序默认升序;

1)ASC: 升序排序;

2)DESC: 降序排序;

8.MySQL 中常见的单行函数:

(1)大小写控制函数:

1)LOWER(str) 转换大小写混合的字符串为小写字符串;

2)UPPER(str) 转换大小写混合的字符串为大写字符串。

(2)字符处理:

1)CONCAT(str1,str2,...) 将 str1、str2 等字符串连接起来 ;

2)SUBSTR(str,pos,len) 从 str 的第 pos 位(范围:1~str.length)开始,截取长度为 len 的字符串;

3)LENGTH(str) 获取 str 的长度 INSTR(str,substr) 获取 substr 在 str 中的位置 ;

4)TRIM(str) 从 str 中删除开头和结尾的空格(不会处理字符串中间含有的空格);

5)LTRIM(str) 从 str 中删除左侧开头的空格 ;

6)RTRIM(str) 从 str 中删除右侧结尾的空格 ;

(3)数字函数:

1)ROUND(arg1,arg2):四舍五入指定小数的值。 

2)ROUND(arg1):四舍五入保留整数。 

3)TRUNC(arg1,arg2):截断指定小数的值,不做四舍五入处理。 

4)MOD(arg1,arg2):取余。

(4)日期函数:

1)SYSDATE() 或者 NOW() 返回当前系统时间,格式为 YYYY-MM-DDhh-mm-ss ;

2)CURDATE() 返回系统当前日期,不返回时间 ;

3)CURTIME() 返回当前系统中的时间,不返回日期 ;

4)DAYOFMONTH(date) 计算日期 d 是本月的第几天 ;

5)DAYOFWEEK(date) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推 ;

6)DAYOFYEAR(date) 返回指定年份的天数 ;

7)DAYNAME(date) 返回 date 日期是星期几;

8)LAST_DAY(date) 返回 date 日期当月的最后一天。

(5)转换函数:

1)DATE_FORMAT(date,format) 将日期转换成字符串(类似 oracle 中的 to_char());

2)STR_TO_DATE(str,format) 将字符串转换成日期(类似 oracle 中的 to_date());

(6)通用函数:

1)IFNULL(expr1,expr2) 判断 expr1 是否为 null,如果为 null,则用 expr2 来代替 null (类似 oracle 的 NVL()函数);

2)NULLIF(expr1,expr2) 判断 expr1 和 expr2 是否相等,如果相等则返回 null,如果不 相等则返回 expr1 ;

3)IF(expr1,expr2,expr3) 判断 expr1 是否为真(是否不为 null),如果为真,则使用 expr2 替代 expr1;如果为假,则使用 expr3 替代 expr1(类似 oracle 的 NVL2()函数);

 4)COALESCE(value,...) 判断 value 的值是否为 null,如果不为 null,则返回 value;如 果为 null,则判断下一个 value 是否为 null……直至出现不为 null 的 value 并返回或者返回最 后一个为 null 的 value;

三、多表连接查询

1)确定需要查询的哪些列? 

2)确定需要查询的列分布在哪些表中? 

3)确定表之间的关联关系(主外键的关系);

1.等值连接:

包含在内连接和外连接中,因为内连接和外连接都是需要连接条件的,条件为=则为等值连接。

2.非等值连接:

使用between...and...或不等号;

3.自连接:

自然连接是一种特殊的等值连接,要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

4.外连接(OUTERJOIN):

1)左外连接(LEFTOUTERJOIN);

2)右外连接(RIGHTOUTERJOIN);

3)全外链接::MySQL 中不支持 FULLOUTERJOIN 连接 可以使用 union 实现全完连接。

4)union all:可以将两个查询结果集合并,返回的行都是唯一的,如同对整个结果集合使用了 DISTINCT。

5)UNIONALL:只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据, 那么返回的结果集就会包含重复的数据了。

语法:(SELECT 投影列 FROM 表名 LEFT OUTER JOIN 表名 ON 连接条件 )UNION (SELECT 投影列 FROM 表名 RIGHTOUTERJOIN 表名 ON 连接条件);

5.自然连接(NATURALJOIN):

自然连接是一种特殊的等值连接,要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

6.内连接(INNERJOIN):

内连接基本与自然连接相同,内连接不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。

7.聚合函数:

(1) AVG(arg)函数:对分组数据做平均值运算;参数类型只能是数字类型。

(2)SUM(arg)函数:对分组数据求和;参数类型只能是数字类型。

(3)MIN(arg)函数:求分组中最小数据;参数类型可以是字符、数字、日期。

(4)MAX(arg)函数:求分组中最大数据;参数类型可以是字符、数字、日期。

(5)COUNT 函数:返回一个表中的行数。

8.数据组(group by):

通过group by子句对结果按某条件进行分组;通过having子语句约束。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容

  • 数据库概念 定义1 数据库(database)是按照数据结构来组织、存储、管理数据的建立在计算机存储设备上的仓库 ...
    好好秦先生阅读 1,159评论 0 3
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,659评论 0 8
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,712评论 0 2
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,738评论 0 10
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,294评论 0 9