MySQL期末总结

目录

1.数据的定义

1.1创建数据库

1.1.1 使用规范

 1.1.2易错点

1.2创建数据库表

1.2.1 使用规范

1.2.2易错点

 1.3数据完整性约束

1.3.1大概内容

 1.3.2使用规范

1.3.3易错点

2.数据操作

2.1数据插入

2.1.1使用规范

2.2数据修改

2.2.1使用规范

2.3数据删除

2.3.1使用规范

3.数据查询

3.1单表查询

3.1.1大概内容

3.1.2选择列 

 3.1.3定义列别名

3.1.4消除结果集中的重复行

 3.2where子句

3.2.1大概内容

3.2.2比较运算 

3.2.3模式匹配

 3.2.4范围比较

 3.2.5空值比较

3.3分类汇总与排序

3.3.1聚合函数

 3.3.2group by 子句

3.3.3having 子句

3.3.4order by 子句 

3.3.5limit 子句


1.数据的定义

1.1创建数据库

1.1.1 使用规范

在创建数据库时我们一般可以使用create database 数据库名 或者 create schema 数据库名 命令来创建数据库。

使用数据库命令: use 数据库名

修改数据库命令: alter database 数据库名

删除数据库命令: drop database 数据库名

显示数据库命令: show database

 1.1.2易错点

但我们在创建数据库时,数据库列表已有相同的数据库名存在时就会报错。

这时我们就可以使用if  not exists在建库时进行判断,当数据库列表中没有一样库名时才执行create database 操作(建表一样可用)。

1.2创建数据库表

1.2.1 使用规范

创建表时我们使用create table 表名 来创建表。

具体的基本使用格式如下。

修改表结构命令:alter table 表名 其经常搭配add,change,modify,drop,rename等关键词实现不同的功能。

删除表命令: drop table 表名1,表名2, ······

显示表数据信息命令:show tables

1.2.2易错点

在创建表结构时,最后一行是不需要打逗号的,否则就会报错。

 1.3数据完整性约束

1.3.1大概内容

 1.3.2使用规范

(1)定义主键的原则:唯一性规则,表中两个不同的行在主键上不能具有相同的值。

                                      最小化规则,复合主键不应该包含一个不必要的列,一个列名在主键的列                                        表中只能出现一次。

当我们需要添加主键时,有两种方法:

可以在定义列的时候加上关键词 primary key,具体如下。

也可以在语句的最后加上primary key(列名,···)来实现。 

 (2)替换键和主键很像,它们的值在任何时候都是唯一的。

          从以下几点区别替换键和主键:

*数量不同,一个表只能创建一个主键,但可以创建若干个unique键,并且它们可以重合。

*null设置不同,主键字段的值不允许为null,而unique字段的值可以取null,但必须使用null或not null 声明。

*索引不同。

(3)参照完整性约束

参照完整性约束的定义语法如下。

 当我们指定外键时要注意以下几点:

*父表必须是已经创建的表或者是正在创建的表。在后一种情况下,父表和子表是同一个表,表中的某列参照另一列。

*必须在父表的表名后面指定列名。这个列必须是这个表的主键或替代键。

*外键中列的数目必须和父表中主键或替代键中的列的数目相同。

*外键中列的数据类型必须和父表中主键中列的数据类型相同。

*父表和子表必须使用相同的存储引擎,并且不能将它们定义为临时表。

1.3.3易错点

当需要定义外键时,外键必须遵照以上所说的注意点否则就会抱错。

2.数据操作

2.1数据插入

2.1.1使用规范

当我们将数据库和数据表创建好后,就应该要向表里面插入数据。通常使用insert语句

给全部列插入数据如下。

insert into 表名 values(表达式 or default);

给指定列插入数据。

insert into 表名(列名,···)

values(表达式 or default);

 或者

insert into 表名

set 列名=表达式 or default,···

有时也会用到replace语句插入数据。

replace into 表名

values( 表达式 or default);

2.2数据修改

2.2.1使用规范

当需要修改表中数据时,我们可以用update语句。

update 表名

set 列名=表达式,···

where 条件

* 需注意的是如果update中没有where字句将默认更新所有行。当需要用update修改多个表时,要在修改的表名之间用逗号隔开。

2.3数据删除

2.3.1使用规范

当需要删除表中数据时,一般使用以下三种方法。

基本格式

delete from 表名

where 条件表达式

*当需要用delete来删除多个表时,要在需删除的表名之间用逗号隔开。

无条件格式

delete from 表名;

 *如果使用无条件格式将会删除表中的所有行,需谨慎使用。

清空表

truncate table 表名

 delete语句与truncate语句的区别:

*delete语句后面可以跟where子句,通过指定where子句中的条件表达式只删除满足条件的部分记录,而truncate语句只能用于删除表中的所有记录。

*使用delete语句时,每删除一条记录都会在日志中记录,而使用truncate语句时,不会在日志中记录删除的内容,因此truncate语句的执行效率比delete语句高

3.数据查询

3.1单表查询

3.1.1大概内容

select语句功能强大,有很多的子句,所以被使用的子句必须按语法说明中的顺序严格排序。基本语法结构如下。

select 字段名,··· from 表名(主语句)

where 条件表达式(子语句)

group by 字段名

having 条件表达式

order by 字段名[asc/desc]

limit [offset,]记录数];

3.1.2选择列 

想要用select语句实现1+1该怎么办呢?这时我们可以用到。

select 表达式

这是最简单的select语句。

select 1+1;

 当select语句的表达式是表中的字段名变量,我们就可以查询表中该字段名下插入的信息。

 *查询多个需要在字段名之间用逗号隔开

当select语句指定列位置上使用“*”时,表示查询表中所以列。

 3.1.3定义列别名

当希望查询的结果使用自己定义的标题时,可以在列名之后使用as子句来更改查询结果的列名。

select 列名 as 别名

*as也可以省略不写

 *不允许在where子句中使用列别名,因为在执行where子句时,可能尚未确定列值。

3.1.4消除结果集中的重复行

有时查询某些列的时候会有重复行出现,就如这个book表,我只想查询表中有哪些作者。

 使用distinct关键字来消除结果集中的重复行。

select distinct 列名,···

 

 3.2where子句

3.2.1大概内容

where子句必须紧跟在from子句之后,在where子句中使用一个条件从from子句的中间结果中选取行。

语句格式如下。

where <判定运算>

3.2.2比较运算 

比较运算用于比较两个表达式的值,而表达式是除text和blod类型以外的表达式。

比较运算的格式如下。

表达式{ = | < | <= | > | >= | <=> | <> | != } 表达式

3.2.3模式匹配

like运算符用于指出一个字符串是否与指定的字符串相匹配,语法表达式如下。

表达式 [not] like 表达式

* 使用like进行模式匹配时,长使用特殊符号" _ " " % "进行模糊查询, " % "代表0个或多个字符," _ "代表单个字符

例:当我们需要查询一本书,但我们只记得它好像书名有个词叫“世界”,这时我们需要用到模糊查询。

 3.2.4范围比较

当要查询的条件是某个值的范围时,可以使用between关键字,格式如下。

表达式 [not] between 表达式1 and 表达式2

使用in关键字可以指定一个值表,当字段的值与值表中的任意一个值匹配时,即返回true,否则返回false。

使用in关键字指定值表的格式如下。

表达式 [ not ] in (子查询)

 3.2.5空值比较

当需要判定一个表达式的值是否为空值时,可以使用 is null 关键字,格式如下。

表达式 is [ not ] null

3.3分类汇总与排序

3.3.1聚合函数

聚合函数中经常使用count函数,用于统计表中满足条件的行数,若找不到匹配的行,则返回0。

语言格式如下。

count ( 表达式 | * )

例:当需要查询book表中有几本书时,我们可以。

 

 max函数和min函数分别用于求表达式中所以项的最大值与最小值。

语法格式如下。

max / min (表达式)

例:当需要查询book表中数量最多的书的数量和数量最少的书的数量时,我们可以。

 sum函数和avg函数分别用于求表达式中所有项的总和与平均值。

语法格式如下。

sum / avg ( 表达式 )

例: 当需要查询book表中总共有多少书时,我们可以。

 3.3.2group by 子句

group by 子句用于根据字段对行进行分组,语法格式如下。

group by { 列名 | 表达式 }

*可以在列的后面指定 asc 或 desc  。

3.3.3having 子句

使用having 子句的目的与where子句类似,不同的是where子句用来在from子句之后选择行,而having子句用于group by 子句之后选择行。

语法如下。

having 条件

*having子句中的条件可以包含聚合函数,而where子句中的条件则不可以

3.3.4order by 子句 

使用order by 子句后可以保证结果中的行一定顺序排列。

语法格式如下。

order by { 列名 | 表达式 | 列编号 } [ asc | desc ],···

*order by 子句后可以是一个列,一个表达式或一个正整数

*order by 子句默认为asc 升序。 

例:当我们需要以book表中书的数量查询书的全部信息。

 

3.3.5limit 子句

limit子句主要用于限制被select语句返回的行数。

语法格式如下。

limit [ 偏移量, ] 行数

*语法格式中的偏移量和行数都必须是非负的整数常数。 

例:当我们需要以book表中书的数量查询书的全部信息,并取数量最少的书。

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值