mysql知识总结

目录

sql语句的数据库处理

数据操作

数据完整性约束

1、主键约束

2、外键约束

聚合函数

常用的聚合函数:

多表查询

子查询

1.in子查询

2.比较子查询

3.exists子查询

4.联合查询


sql语句的数据库处理

创建数据库:create database 后加数据库名

查看数据库:show databases(在database后要加上s)

选择数据库:use 后加数据库名

删除数据库:drop 后加数据库名

数据操作

数据操作包括林数据的插入、修改和删除。数据操作可以是对单表进行操作,也可以是对多表同时进行操作。

数据表增删查改语句所需要的关键字:

增:insert (引入数据)

删:delete (删除)

查:select  (数据查询)

改:update (修改)

创建数据表:create table 后加表名 (表名后加括号一对);

查询数据表:select * from 后加表名(注:这句是全表查询,【*】号可以换成想要查询的对象;如需去重可直接在select后加上关键字:distinct);

删除数据表:delete from 后加表名;(delete是删除所有数据,还有一个关键字truncte table 这个是删除表,就是删除表中所有数据,重构表结构。不过一般不会用到truncte这个关键字。)

修改数据:update 表名 set (列名1=值1,...);(注:需要改多少写多少,中间以逗号分隔)

插入数据:insert into 表名(列名1,列名2,列名3,...)

values(值1,值2,值3,...);(注:列名与值长度,类型和个数要一致,凡是数据、布尔类型不用引号外,否则都要用引号引起来)

条件子句:关键字:where  ;条件子句跟select(查询语句)、update(修改)、delete(删除)等许多sql语句配合,在sql中也会经常用到,编写起来也并不难。

例如:与select(查询配合):select * from 表名  where 需要查询某一列的列名=具体的条件;

与between_and_(包含于)配合(例:取年份):select * from 表名 where 列名 year(列1) between (大于) and (小于);(注:此处大于是大于某一年与小于某一年)

 以及字符匹配:select * from 表名 where 列名 like '_(某个字符)%';(注:%表示匹配多个字符;_表示一个字符;not like 同上)

包含:列名 between x and y==x<=列<=y;

数据完整性约束

数据完整性约束指的是数据的一致性和正确性,完整性约束是指数据库的内容必须随时遵守的规则。

1、主键约束

关键字:primary key(实体完整性;约束对象:行)

定义:主键就是表中的一列或多个列的一组,其值能唯一标识表中的每一行。

定义主键的原则:

(1)每个表必须定义一个主键

(2)唯一性规则

(3)最小化规则

语法:例:id int primary key ,(自增可在后面添加关键字:auto_increment)

2、外键约束

关键字:foreign key (引用完整性;约束对象:表之间)

定义:外键被定义为表的完整性约束;外键可以只引用主键和代替键。

语法:在创建表结构时,添加在最后一行:foreign key(列名1,列名2,...)

聚合函数

聚合函数常用于对一组值进行计算,然后返回单个值。

常用的聚合函数:

求组中的项数,返回int类型整数:count

求最大值:max

求最小值:min

求和:sum

求平均值:avg

常用的聚合函数的表达式几乎一致

求项数:select count(*)  from 表名;

求最大值:select max(*) from 表名;

求最小值:select min(*) from 表名;

求和:select sum(*) from 表名;

求平均值:select avg(*) from 表名;

group by子句:主要用于根据字段对行进行分组。

语法:group by 列名 asc/besc(注:默认为asc(升序),降序desc);

having子句:这个子句的目的与where(条件子句)类似,不同的是where(条件子句)是用在from后选择行,而having是用在group by 后选择行的。(注:having子句必须用于group by 后,可以单独有group,但不能单独有having!

order by子句:order by 可以保证结果中的行按一定顺序排序。语法:order by 列名 ;(注:也是默认升序asc,如有需可在后面加上desc);

limit限制子句:limit子句是select(查询)语句的最后一个子句,主要用于限制被select语句返回的行数。语法:limit x(行数),y(列数);

多表查询

select的查询对象由from子句指定,在from子句中在表名后可以加上表的别名,别名关键字为as,这个关键字可有可无。

join连接

显式连接语法:select * from 表名1 join 表名2 on 表1.主键=表2.主键

内连接:指定了inner关键字的连接是内连接,可直接在join前加上inner关键字。

外连接:指定了outer关键字的连接是外连接,可直接在join前加上outer关键字。

左外连接:既左表(主表)left outer join on 右表(辅表);左表(主表)所有数据都显示,右表(辅表)只显示匹配的内容。

左外语法:select 列 from 表1 left join 表2 on 表1.列=表2.列;

右外连接:既右表(主表)right outer join on 左表(辅表);右表(主表)所有数据都显示,左表(辅表)只显示匹配的内容。

右外语法:select 列 from 表1 right join 表2 on 表1.列=表2.列;

子查询

在查询中,另一个查询的结果可以作为条件的一部分;子查询除了可以用select语句中,也可以用在insert、update及delete语句中。子查询通常与in、exists谓词及比较运算符结合使用。

1.in子查询

in(子集):在子集中就符合;

not in(子集):不在子集中的就符合。

语法大多数都在where 列名 后加in或not in(另一个条件语句);

2.比较子查询

这种子查询可以认为是in子查询的拓展,它使表达式的值与子查询的结果进行比较运算。

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

这个语法结构与in子查询一样,不过它的关键字以及在列名后要用表达式来表示进行比较,关键字有:all(指定表达式要与子查询结果集中的每一个值都进行比较,当表达式的每一个值都满足比较的关系时,才返回true,否则返回false。)some和any(它两时同义词,表示表达式只要与子查询结果集中的某一个值满足比较的关系就返回true,否则返回false。)

3.exists子查询

exists谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,exists返回true,否则返回false。

语法结构也与in子查询一致,在列名后加上exists关键字就可以了。

4.联合查询

联合查询就是指两个表的数据按照一定的查询条件查询出来以后,将结果合并到一起显示出来。关键字为:union(一般分为all和distinct,一般默认为去重distinct;如要保留全部结果,则必须指定all)。

它的语法结构就是在两条select语句中间加上union关键字,如指定all则在union后加上关键字all即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值