数据库mysql学习过程


都为自己总结,把难懂的语句具体化,如有错误,请不吝指正,感谢。

库操作

create database wxdst; //建立名为wxdst的数据库
drop database wxdst; //删除名为wxdst的数据库

表操作

create table student; //建立名为student的表
格式:
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,

)
drop table student; //删除名为student的表
show create table student\g; //显示建表时语句

1、一般在哪个库里建先得引用出库,例如:use wxdst;
2、创建表时每一列名不需要加引号;

数据操作

source命令

执行sql脚本文件(存放有sql命令的文件,包括对库、表、数据的曹操作)。一般格式:source d://db.txt //执行d盘下的名为db的txt脚本文件。

1、归为数据操作,但也可在脚本文件中包含库和表的操作
2、文件路径不得用引号,结尾不加分号

修改数据

插入(insert)

insert into course(cno,cname,cpno,ccredit) values(“5”,“数据结构”,“7”,4); //在course表中按第一个括号中顺序插入数据

insert into course values(“4”,“操作系统”,“6”,3); //也可不写第一个括号,这样就必须按照建表字段顺序写了
insert into course values(“4”,“操作系统”,“6”,3),(“5”,“安卓开发”,“7”,4);//插入多个数据时直接写

更新(update)

待更

删除(delete)

待更


1.插入数据时如果外键参照的主键不存在,则不允许插入。
2.insert 、delete、update对数据的操作都不需要加table这个单词,例如创建和删除表时候都得加,例如:create table sc…;
3.delete和insert后需要分别加介词from和into,再加表名和操作,而update后是先跟表名再跟set和操作。

查询数据

单表

固定查询格式,distinct紧跟select,去重作用。固定查询格式
常用查询条件和谓词
在这里插入图片描述

1、查询学生所有信息,用*号
在这里插入图片描述
2、查询有学生的系,用distinct去重
在这里插入图片描述
3、between prar1 and prar2 相当于>=prar1 and <=prar2;可用between and 替换由and连接的两个条件(目前发现一般适用于确定范围上才可替换)
在这里插入图片描述
在这里插入图片描述
4、每一列不仅可以是表内信息,还可以是运算后的结果。用as可以给表起别名(少用空格)。
在这里插入图片描述

多表

形式:from后有多个表,可以是逗号分开的多个表,也可是join连接的表。

1 、直接用逗号连接多个表是多个表的笛卡尔积
在这里插入图片描述
2、用join链接在on后写连接条件
左外连接(left join):求两个表的交集外加左表剩下的数据
右外连接(right join):求两个表的交集外加右表剩下的数据
在这里插入图片描述
在这里插入图片描述
有公用属性才能用join,下图中student不能和course链接,没有公共属性,必须分步链接。
在这里插入图片描述
3、查询李勇数据库成绩

join连接后的表在where后写条件。
在这里插入图片描述
用逗号连接的就和连接条件写在一起,用and。
在这里插入图片描述

1、每一列不仅可以是表内信息,还可以是运算后的结果。
2、有公用属性才能用join链接多个表。
3、直接用逗号连接多个表是多个表的笛卡尔积

嵌套中的查询

一、不相关子查询(where中的嵌套)
子查询与外层查询没有关联,可以单独执行
1、2号课最高分的学生学号(子查询返回的是一行一列,即标量)
在这里插入图片描述
2、查询既选修1号课,又选修2号课的人(子查询返回的是多行一列,即标量集合)
在这里插入图片描述
3、查询200215103选修的课程信息(子查询返回一行多列,即元组)
在这里插入图片描述
4、查询201215103选修的课程信息(子查询返回多行多列,即表)
在这里插入图片描述

二、相关子查询(where中的嵌套)
子查询与外层查询有关联,相当于for循环两层嵌套
1、查询选修了2号课的人
在这里插入图片描述
三、导出表(from中的嵌套)
嵌套在from中的select查询块,必须给它起一个别名,不然报错。
1、查询计科系学生最大年龄
在这里插入图片描述
2、查询选修了2号课的学生中最大的年龄是那些学生

在这里插入图片描述
3、计科系选修的课有那些
在这里插入图片描述
4导出表不能独立运行,错误举例
在这里插入图片描述

1、导出表必须能独立运行
2、导出表的每一列必须不同,能够区分开来,经常在join后出现相同的列,注意。

四、any、in、all对集合的操作
在any、in、all左面加上>=、<=、=等比较运算符,产生对集合的筛选
1、是不是所有学生年龄都大于21
在这里插入图片描述
mysql> select * from t;

| a | b | c |

±–±-----±-----+

| 4 | 22 | 3 |

| 5 | 12 | NULL |

| 6 | 2 | 4 |

| 7 | 2 | 5 |

4 rows in set (0.00 sec)2、与null运算时,只要空值n
ull参与了±*/><=等运算就为null
在这里插入图片描述
在这里插入图片描述
3、空集合直接进行比较运算也是null
在这里插入图片描述
4、空集合前加any后运算则为假,加all运算则为真
在这里插入图片描述

注意
true and null = null
false or null = null
true or null = true
false and null = false

查询中的统计

一、函数
1、聚集函数count
(1)查询行数
在这里插入图片描述
(2)查询具体一列中的个数,本例中有一个人的所在系为空
在这里插入图片描述
2、聚集函数sum和avg
在这里插入图片描述3、聚集函数min和max
在这里插入图片描述
4、函数group_concat
将该列所有值用逗号列成字符串形式的
在这里插入图片描述

1、上述聚集函数在括号里均可加distinct去重,表示重复的不被选中
2、sum和avg值只能为数值型
二、分组
1、查询计科系按性别分组后的成绩信息
在这里插入图片描述
2、查询学生(大于80给学分)学分情况
分组时加上name是为了select后能加name
在这里插入图片描述
3、having筛选分组后数据
在这里插入图片描述

1、分组后select后面只能有分组表达式和统计表达式。也就是只能与分组时关心的数据和统计后的数据有关,如例1中不能有select sage。

安全性

用户

创建用户

1、普通创建
在这里插入图片描述
2、使用掩码和通配符
在这里插入图片描述


1、用户名右边不加‘@…’表示所有主机地址均可使用此用户名连接,地址时通配符‘%’
2、具体的主机地址,优先于含有%通配符地址,用户名和密码相同时,优先使用具体地址登录

用户登录

1、可以使用-h设定将要连接的主机的ip
在这里插入图片描述

查询用户

1、可以看到我们创建了主机地址为通配的%和localhost的用户rtt,但连接优先使用localhost,这个是查询有哪些用户能连接

2、当前连接用户在这里插入图片描述

1、current_user()返回服务器用来认证当前客户端的MySQL帐户的用户名和主机名组合。该帐户确定您的访问权限。
2、user()客户端提供的用户名和主机名,指示在连接到服务器时指定的用户名以及从中连接的客户端主机。

权限

权限概述

1、全局级别权限:适用于服务器上所有数据库,使用on*.*语法。
2、数据库级别权限:适用于该数据库中所有对象,使用on db_name.*语法
3、表级权限:适用于给定表中所有列,使用on db_name.tbl_name语法
4、列级权限:适用于某个表中的固定列,在每个权限后的括号中加上一个或多个列设置。

授予权限

1、授予全局级别的所有权限
在这里插入图片描述
2、授予数据库级别的所有权限
在这里插入图片描述
3、授予表级别的所有权限
(1)所有权限
在这里插入图片描述
(2)查询权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、授予列级权限
在这里插入图片描述
在这里插入图片描述
1、授予地址为localhost的rtt用户查询权限
在这里插入图片描述

回收权限

1、收回全局级别所有权限
在这里插入图片描述

查询权限

1、查询当前登录用户rtt有哪些权限在这里插入图片描述
2、在root上查询某个用户的权限
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值