20101111在圆周率后1000位多少位?

△数据库系统(DBS)
数据库(DB) + 数据库管理系统 (DBS)+ 数据库应用程序 + 数据库管理员 (BDA)+ 最终用户

△数据库管理系统-DBM
我们要使用服务端的数据 - 需要有一个客户端
客户端可以自己写   : 未来写代码的时候
也可以用别人写好的 : 第三方的工具 数据库管理软件的公司出版的官方客户端
数据库管理系统本质上也是管理一堆文件
只不过人家的管理方式比我们更高效 更安全

△数据库管理员-DBA

用户的创建 权限的管理
数据库的二次开发 : 让数据库具有公司的特质

1、易于维护:都是使用表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询

1、读写性能比较差,尤其是海量数据的高效率读写
2、固定的表结构,灵活度稍欠
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等
2、速度快,成本低:nosql数据库部署简单,基本都是开源软件

1、不提供sql支持,学习和使用成本较高
3、数据结构相对复杂,复杂查询方面稍欠

△ SQL是关系数据库管理系统的标准语言。

终端,python,第三方工具

△服务端-安装启动关闭

#创建用户eva 在所有网段允许 设置密码为123

1,先跟数据库进行连接(用账号和密码,默认3306端口)

m:  显示宽度,和数据类型的取值范围是无关的

MySQL中使用浮点数和定点数来表示小数。它们都可以用(m,n)来表示,其中m称为精度,表示总共的位数;n称为标度,是表示小数的位数(会四舍五入)

默认当前时间并级联更新

让datetime 自动写当前时间,级联更新
 

 

 


例如建表时定义字段
爱好 set(“游泳”,“篮球”,“下棋”,“音乐”,“旅游”)
insert into t_1 values("游泳,篮球,音乐")
添加时会自动去重和去掉不存在的

 

 

 

填充的时候也必须时字符串格式,添加时会自动去重和去掉不存在的

在维护和操作时,一定要先备份一份,之后再去操作数据库

会遭遇各的数据丢失的情况:

# 默认用户登陆之后并没有实际操作的权限
# 需要使用管理员root用户登陆
# 输入“ipconfig”即可查看到本机的ip信息。
# ;表示sql语句的结束
# \c放弃当前要执行的sql语句
 

 



 

 
先切换到文件夹下:use db1 
 
 show creat table 表名; 查看建表语句和搜索引擎,显示的信息更全面
 
 

 

 

 
_ 通配符 表示一个字符长度的任意内容
% 通配符 表示任意字符长度的任意内容

查看所有员工中名字是jin开头,n或者g结果的员工信息
 

 
(判断某个字段是否为NULL不能用等号,需要用IS) 注意''是空字符串,不是null 再用上条查看,就会有结果了

 先执行执行select,把查到的内容导入到t2
 
 

 
having要跟在group by之后,对分组查询的结果进行过滤(过滤分组)
where要出现在group by之前,执行表中所有数据来进行过滤(过滤行)
另外,having可以用聚合函数,并支持所有where子句操作符数

 

 

 

 

 

 

 

 

 
查看字符的ASCII码值,str是空时返回0

 
查看ASCII码值对应的字符

 

 
字符串中包含的字符个数

 

截取字符串左端的len个字符

 
返回删除了左空格的字符串

返回删除了右空格的字符串

 
返回由n个空格组成的字符串

 

 

 

 

 

 

 
表示将值 n 四舍五入为整数,无小数位

 
表示将值 n 四舍五入为小数点后 D 位的数值,D为小数点后小数位数
若要保留 n 值小数点左边的 D 位,可将 D 设为负值

 

 

 
获取一个0.0-1.0之间的随机数

 

 

 

format参数可用的值如下:
%Y 年份,返回4 位整数
%y 年份,返回2 位整数
%d 日期,返回0-31之间的整数
 

 

 

使用算数表达式查询某几列:年龄增加50

 

 

查询每个国家都有谁,注意:distinct后面的字段用逗号分隔,逗号两边不能有空格

# 查询岗位名以及岗位包含的所有员工名字
# 查询各部门年龄在20岁以上的人的平均薪资
 

 
having放在分组之后,因为作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组
查询平均薪资大于1w的部门
1. 查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
3. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资
 
 

 

# 约束各自不能为空 且联合唯一 还占用了整张表的主键

 
排列顺序从高到低 DESC

 
在查询时可以只检索前几条或者中间某几行数据(数据量很大时,几百万条)
SELECT * FROM t_user LIMIT 0,3;
limit 后面的第一个数字设置从哪里开始检索(偏移量,从0开始)
limit 后面的第二个数字是设置显示多少条

 

 

 
所有不在条件匹配内的数据,都会被剔出连表

 
 
 

 

子查询效率相对于连表查低, 因为 子查询要查两张表,连表查询查一张表

-- id 你自己起的字段名字。 -- int 数据类型,整型。

所有的操作都无法改变auto_increment的自动计数。但是我们也没有必要去改变它。 1.至少要看到自增的效果 2.至少写3条数据 4,5,6 3.删掉第5条,再看结果 5.删掉第5条,再看结果 8.再insert一条数据,再看结果

不支持对自增长字段插入" ”值-空字符串 不支持text字段有默认值 直接在mysql中生效(重启失效): 配置文件添加(永久失效):

# 约束各自不能为空 且联合唯一 # pri 是怎么产生的? 第一个被设置了非空+唯一约束会被定义成主键 primary key # 主键在整张表中只能有一个

△外键:用来和其他表建立联系
外键具有保持数据完整性和一致性的机制,目前MySQL只在InnoDB引擎下支持
外键是表中的一个列,其值必须在另一个表的主键或者唯一键中列出
作为主键的表称为 主表,作为外键的表称为 依赖表
外键会参照主表的主键或唯一键

1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
2.对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败

△以下情况创建外键会失败:
外键的引用类型不一样,如主键是int外键是char
主键和外键的字符编码不一样

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作
使用不同的存储引擎还可以获得特定的功能

表结构 存在一个文件中  : 硬盘上

表数据 存在另一个文件中、内存中

索引(目录) 为了方便查找设计的一个机制 :

存储方式为索引+数据 表结构 ,数据的持久化存储

提供了具有提交、回滚和崩溃恢复能力的事务安全,支持外键。但是比起Myisam存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎.

存储方式为索引 数据 表结构  数据的持久化存储 ,有表级锁

不支持事务、也不支持外键,但访问速度快,对事务没有要求

存储方式为表结构,数据断电消失

查看MySQL重要引擎

建表的时候可以指定引擎

一致性 n条语句的执行状态是一致的

commit; # 提交事务 解锁被锁住的数据,让他们能够被修改

行级锁 :只对涉及到修改的行加锁,利于并发的修改,但是对于一次性大量修改效率低下
表级锁 :一次性加一把锁就锁住了整张表,不利于并发的修改,但是加锁速度比行锁的效率要高
外键约束 :被约束表中的数据不能随意的修改/删除 约束字段据要根据被约束表来使用数据

△聚集索引/聚簇索引 : 叶子节点会存储整行数据 —— innodb的主键
△辅助索引/非聚集索引 :除了主键之外的普通索引都是辅助索引,一个索引没办法查到整行数据,需要回聚集索引再查一次(回表)

△b+树 是为了更好的处理范围问题在b树的基础上有所优化
△mysql中innodb存储引擎的所有的索引树都是b+树

当数据库中存在很多条记录,例如几十万条,查询速度就成了一个问题
先在目录中查询,然后根据目录所示的页码找到查询内容,大大缩短查询时间.
不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行
表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件

索引也需要占空间,如果我们有大量的索引,索引文件可能会占很多空间
3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

1.对经常更新的表就避免对其进行索引,对经常用于查询的字段应该创建索引
2.数据量小的表最好不要使用索引
3.在不同值少的列上(字段上)不要建立索引,比如在"性别"字段上只有男,女两个不同值

1,创建表时,主键会默认带有索引

创建一个索引 索引名 从 表名 在哪个字段

在创建一个视图时,只存放视图的定义,也就是动态检索数据的查询语句,并不存放视图对应的数据,在用户使用视图时才去求相对应的数据,所以视图称为‘虚表’

-- 查看每个国家的总人数,年龄总和,平均年龄,最高年龄,最低年龄
为上面的语句创建视图:
 

#三个部门:教学,销售,运营

0.建表book,并向表中插入数据
1.查询egon写的所有书和价格
2.找出最贵的图书的价格
4.将所有图书按照出版日期排序
5.查询alex写的所有书的平均价格
6.查询人民音乐不好听出版社出版的所有图书
7.查询人民音乐出版社出版的alex写的所有图书和价格
8.找出出版图书均价最高的作者
9.找出最新出版的图书的作者和出版社
10.显示各出版社出版的所有图书
11.查找价格最高的图书,并将它的价格修改为50元
12.删除价格最低的那本书对应的数据
自己研究上面sql语句中的year函数的功能,完成需求:
将所有2017年出版的图书从数据库中删除
15.有文件如下,请根据链接自学pymysql模块,使用python写代码将文件中的数据写入数据库

# 书名 作者 出版社 价格 出版日期 # 查询egon写的所有书和价格 # 找出最贵的图书的价格 # 将所有图书按照出版日期排序 # 查询alex写的所有书的平均价格 # 查询人民音乐不好听出版社出版的所有图书 # 查询人民音乐出版社出版的alex写的所有图书和价格 # 找出出版图书均价最高的作者 # 找出最新出版的图书的作者和出版社 # 显示各出版社出版的所有图书 # 查找价格最高的图书,并将它的价格修改为50元 # 删除价格最低的那本书对应的数据

△数据库系统(DBS)
数据库(DB) + 数据库管理系统 (DBS)+ 数据库应用程序 + 数据库管理员 (BDA)+ 最终用户

△数据库管理系统-DBM
我们要使用服务端的数据 - 需要有一个客户端
客户端可以自己写 : 未来写代码的时候
也可以用别人写好的 : 第三方的工具 数据库管理软件的公司出版的官方客户端
数据库管理系统本质上也是管理一堆文件
只不过人家的管理方式比我们更高效 更安全

△数据库管理员-DBA

用户的创建 权限的管理
数据库的二次开发 : 让数据库具有公司的特质

1、易于维护:都是使用表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询

1、读写性能比较差,尤其是海量数据的高效率读写
2、固定的表结构,灵活度稍欠
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等
2、速度快,成本低:nosql数据库部署简单,基本都是开源软件

1、不提供sql支持,学习和使用成本较高
3、数据结构相对复杂,复杂查询方面稍欠

△ SQL是关系数据库管理系统的标准语言。

终端,python,第三方工具

△服务端-安装启动关闭

#创建用户eva 在所有网段允许 设置密码为123

1,先跟数据库进行连接(用账号和密码,默认3306端口)

m: 显示宽度,和数据类型的取值范围是无关的

MySQL中使用浮点数和定点数来表示小数。它们都可以用(m,n)来表示,其中m称为精度,表示总共的位数;n称为标度,是表示小数的位数(会四舍五入)

date 年-月-日 入职日期 出账日期 还款日期

timestamp 年-月-日 时:分:秒 不能为空,自动写当前时间,级联更新,范围小

now() 函数表示当前时间

默认当前时间并级联更新

让datetime 自动写当前时间,级联更新

char(255) :定长的 节省时间 浪费空间 手机号码、身份证号

set 多选,自动去重

爱好 set(“游泳”,“篮球”,“下棋”,“音乐”,“旅游”)
添加时会自动去重和去掉不存在的

填充的时候也必须时字符串格式,添加时会自动去重和去掉不存在的

在维护和操作时,一定要先备份一份,之后再去操作数据库

会遭遇各的数据丢失的情况:

# 默认用户登陆之后并没有实际操作的权限
# 需要使用管理员root用户登陆
# 输入“ipconfig”即可查看到本机的ip信息。
# ;表示sql语句的结束
# \c放弃当前要执行的sql语句

先切换到文件夹下:use db1 
 
 show creat table 表名; 查看建表语句和搜索引擎,显示的信息更全面

先执行执行select,把查到的内容导入到t2

having要跟在group by之后,对分组查询的结果进行过滤(过滤分组)
where要出现在group by之前,执行表中所有数据来进行过滤(过滤行)
另外,having可以用聚合函数,并支持所有where子句操作符数

查看字符的ASCII码值,str是空时返回0

查看ASCII码值对应的字符

字符串中包含的字符个数

截取字符串左端的len个字符

返回删除了左空格的字符串

返回删除了右空格的字符串

返回由n个空格组成的字符串

表示将值 n 四舍五入为整数,无小数位

表示将值 n 四舍五入为小数点后 D 位的数值,D为小数点后小数位数
若要保留 n 值小数点左边的 D 位,可将 D 设为负值

获取一个0.0-1.0之间的随机数

format参数可用的值如下: %Y 年份,返回4 位整数 %y 年份,返回2 位整数 %d 日期,返回0-31之间的整数

使用算数表达式查询某几列:年龄增加50

查询每个国家都有谁,注意:distinct后面的字段用逗号分隔,逗号两边不能有空格

_ 通配符 表示一个字符长度的任意内容

% 通配符 表示任意字符长度的任意内容

查看所有员工中名字是jin开头,n或者g结果的员工信息

(判断某个字段是否为NULL不能用等号,需要用IS)

注意''是空字符串,不是null 再用上条查看,就会有结果了

# 查询岗位名以及岗位包含的所有员工名字
# 查询各部门年龄在20岁以上的人的平均薪资

having放在分组之后,因为作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组

查询平均薪资大于1w的部门
1. 查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
2. 查询各岗位平均薪资大于10000的岗位名、平均工资
3. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资

排列顺序从高到低 DESC

在查询时可以只检索前几条或者中间某几行数据(数据量很大时,几百万条)
limit 后面的第一个数字设置从哪里开始检索(偏移量,从0开始)
limit 后面的第二个数字是设置显示多少条

所有不在条件匹配内的数据,都会被剔出连表

子查询效率相对于连表查低, 因为 子查询要查两张表,连表查询查一张表

# 约束各自不能为空 且联合唯一 还占用了整张表的主键

-- id 你自己起的字段名字。 -- int 数据类型,整型。

所有的操作都无法改变auto_increment的自动计数。但是我们也没有必要去改变它。 1.至少要看到自增的效果 2.至少写3条数据 4,5,6 3.删掉第5条,再看结果 5.删掉第5条,再看结果 8.再insert一条数据,再看结果

不支持对自增长字段插入" ”值-空字符串 不支持text字段有默认值 直接在mysql中生效(重启失效): 配置文件添加(永久失效):

# 约束各自不能为空 且联合唯一 # pri 是怎么产生的? 第一个被设置了非空+唯一约束会被定义成主键 primary key # 主键在整张表中只能有一个

△外键:用来和其他表建立联系
外键具有保持数据完整性和一致性的机制,目前MySQL只在InnoDB引擎下支持
外键是表中的一个列,其值必须在另一个表的主键或者唯一键中列出
作为主键的表称为 主表,作为外键的表称为 依赖表
外键会参照主表的主键或唯一键

1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
2.对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败

△以下情况创建外键会失败:
外键的引用类型不一样,如主键是int外键是char
主键和外键的字符编码不一样

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作
使用不同的存储引擎还可以获得特定的功能

表结构 存在一个文件中 : 硬盘上

表数据 存在另一个文件中、内存中

索引(目录) 为了方便查找设计的一个机制 :

存储方式为索引+数据 表结构 ,数据的持久化存储

提供了具有提交、回滚和崩溃恢复能力的事务安全,支持外键。但是比起Myisam存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎.

存储方式为索引 数据 表结构 数据的持久化存储 ,有表级锁

不支持事务、也不支持外键,但访问速度快,对事务没有要求

存储方式为表结构,数据断电消失

查看MySQL重要引擎

建表的时候可以指定引擎

一致性 n条语句的执行状态是一致的

commit; # 提交事务 解锁被锁住的数据,让他们能够被修改

行级锁 :只对涉及到修改的行加锁,利于并发的修改,但是对于一次性大量修改效率低下
表级锁 :一次性加一把锁就锁住了整张表,不利于并发的修改,但是加锁速度比行锁的效率要高
外键约束 :被约束表中的数据不能随意的修改/删除 约束字段据要根据被约束表来使用数据

△聚集索引/聚簇索引 : 叶子节点会存储整行数据 —— innodb的主键
△辅助索引/非聚集索引 :除了主键之外的普通索引都是辅助索引,一个索引没办法查到整行数据,需要回聚集索引再查一次(回表)

△b+树 是为了更好的处理范围问题在b树的基础上有所优化
△mysql中innodb存储引擎的所有的索引树都是b+树

当数据库中存在很多条记录,例如几十万条,查询速度就成了一个问题
先在目录中查询,然后根据目录所示的页码找到查询内容,大大缩短查询时间.
不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行
表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件

索引也需要占空间,如果我们有大量的索引,索引文件可能会占很多空间
3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

1.对经常更新的表就避免对其进行索引,对经常用于查询的字段应该创建索引
2.数据量小的表最好不要使用索引
3.在不同值少的列上(字段上)不要建立索引,比如在"性别"字段上只有男,女两个不同值

1,创建表时,主键会默认带有索引

创建一个索引 索引名 从 表名 在哪个字段

在创建一个视图时,只存放视图的定义,也就是动态检索数据的查询语句,并不存放视图对应的数据,在用户使用视图时才去求相对应的数据,所以视图称为‘虚表’

-- 查看每个国家的总人数,年龄总和,平均年龄,最高年龄,最低年龄
为上面的语句创建视图:
#三个部门:教学,销售,运营

0.建表book,并向表中插入数据
1.查询egon写的所有书和价格
2.找出最贵的图书的价格
4.将所有图书按照出版日期排序
5.查询alex写的所有书的平均价格
6.查询人民音乐不好听出版社出版的所有图书
7.查询人民音乐出版社出版的alex写的所有图书和价格
8.找出出版图书均价最高的作者
9.找出最新出版的图书的作者和出版社
10.显示各出版社出版的所有图书
11.查找价格最高的图书,并将它的价格修改为50元
12.删除价格最低的那本书对应的数据
自己研究上面sql语句中的year函数的功能,完成需求:
将所有2017年出版的图书从数据库中删除
15.有文件如下,请根据自学pymysql模块,使用python写代码将文件中的数据写入数据库

# 书名 作者 出版社 价格 出版日期 # 查询egon写的所有书和价格 # 找出最贵的图书的价格 # 将所有图书按照出版日期排序 # 查询alex写的所有书的平均价格 # 查询人民音乐不好听出版社出版的所有图书 # 查询人民音乐出版社出版的alex写的所有图书和价格 # 找出出版图书均价最高的作者 # 找出最新出版的图书的作者和出版社 # 显示各出版社出版的所有图书 # 查找价格最高的图书,并将它的价格修改为50元 # 删除价格最低的那本书对应的数据

△数据库系统(DBS)
数据库(DB) + 数据库管理系统 (DBS)+ 数据库应用程序 + 数据库管理员 (BDA)+ 最终用户

△数据库管理系统-DBM
我们要使用服务端的数据 - 需要有一个客户端
客户端可以自己写 : 未来写代码的时候
也可以用别人写好的 : 第三方的工具 数据库管理软件的公司出版的官方客户端
数据库管理系统本质上也是管理一堆文件
只不过人家的管理方式比我们更高效 更安全

△数据库管理员-DBA

用户的创建 权限的管理
数据库的二次开发 : 让数据库具有公司的特质

1、易于维护:都是使用表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询

1、读写性能比较差,尤其是海量数据的高效率读写
2、固定的表结构,灵活度稍欠
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等
2、速度快,成本低:nosql数据库部署简单,基本都是开源软件

1、不提供sql支持,学习和使用成本较高
3、数据结构相对复杂,复杂查询方面稍欠

△ SQL是关系数据库管理系统的标准语言。

终端,python,第三方工具

△服务端-安装启动关闭

#创建用户eva 在所有网段允许 设置密码为123

1,先跟数据库进行连接(用账号和密码,默认3306端口)

m: 显示宽度,和数据类型的取值范围是无关的

MySQL中使用浮点数和定点数来表示小数。它们都可以用(m,n)来表示,其中m称为精度,表示总共的位数;n称为标度,是表示小数的位数(会四舍五入)

date 年-月-日 入职日期 出账日期 还款日期

timestamp 年-月-日 时:分:秒 不能为空,自动写当前时间,级联更新,范围小

now() 函数表示当前时间

默认当前时间并级联更新

让datetime 自动写当前时间,级联更新

char(255) :定长的 节省时间 浪费空间 手机号码、身份证号

set 多选,自动去重

爱好 set(“游泳”,“篮球”,“下棋”,“音乐”,“旅游”)
添加时会自动去重和去掉不存在的

填充的时候也必须时字符串格式,添加时会自动去重和去掉不存在的

在维护和操作时,一定要先备份一份,之后再去操作数据库

会遭遇各的数据丢失的情况:

# 默认用户登陆之后并没有实际操作的权限
# 需要使用管理员root用户登陆
# 输入“ipconfig”即可查看到本机的ip信息。
# ;表示sql语句的结束
# \c放弃当前要执行的sql语句

先切换到文件夹下:use db1 
 
 show creat table 表名; 查看建表语句和搜索引擎,显示的信息更全面

先执行执行select,把查到的内容导入到t2

having要跟在group by之后,对分组查询的结果进行过滤(过滤分组)
where要出现在group by之前,执行表中所有数据来进行过滤(过滤行)
另外,having可以用聚合函数,并支持所有where子句操作符数

查看字符的ASCII码值,str是空时返回0

查看ASCII码值对应的字符

字符串中包含的字符个数

截取字符串左端的len个字符

返回删除了左空格的字符串

返回删除了右空格的字符串

返回由n个空格组成的字符串

表示将值 n 四舍五入为整数,无小数位

表示将值 n 四舍五入为小数点后 D 位的数值,D为小数点后小数位数
若要保留 n 值小数点左边的 D 位,可将 D 设为负值

获取一个0.0-1.0之间的随机数

format参数可用的值如下: %Y 年份,返回4 位整数 %y 年份,返回2 位整数 %d 日期,返回0-31之间的整数

使用算数表达式查询某几列:年龄增加50

查询每个国家都有谁,注意:distinct后面的字段用逗号分隔,逗号两边不能有空格

_ 通配符 表示一个字符长度的任意内容

% 通配符 表示任意字符长度的任意内容

查看所有员工中名字是jin开头,n或者g结果的员工信息

(判断某个字段是否为NULL不能用等号,需要用IS)

注意''是空字符串,不是null 再用上条查看,就会有结果了

# 查询岗位名以及岗位包含的所有员工名字
# 查询各部门年龄在20岁以上的人的平均薪资

having放在分组之后,因为作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组

查询平均薪资大于1w的部门
1. 查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
2. 查询各岗位平均薪资大于10000的岗位名、平均工资
3. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资

排列顺序从高到低 DESC

在查询时可以只检索前几条或者中间某几行数据(数据量很大时,几百万条)
limit 后面的第一个数字设置从哪里开始检索(偏移量,从0开始)
limit 后面的第二个数字是设置显示多少条

所有不在条件匹配内的数据,都会被剔出连表

子查询效率相对于连表查低, 因为 子查询要查两张表,连表查询查一张表

# 约束各自不能为空 且联合唯一 还占用了整张表的主键

-- id 你自己起的字段名字。 -- int 数据类型,整型。

所有的操作都无法改变auto_increment的自动计数。但是我们也没有必要去改变它。 1.至少要看到自增的效果 2.至少写3条数据 4,5,6 3.删掉第5条,再看结果 5.删掉第5条,再看结果 8.再insert一条数据,再看结果

不支持对自增长字段插入" ”值-空字符串 不支持text字段有默认值 直接在mysql中生效(重启失效): 配置文件添加(永久失效):

# 约束各自不能为空 且联合唯一 # pri 是怎么产生的? 第一个被设置了非空+唯一约束会被定义成主键 primary key # 主键在整张表中只能有一个

△外键:用来和其他表建立联系
外键具有保持数据完整性和一致性的机制,目前MySQL只在InnoDB引擎下支持
外键是表中的一个列,其值必须在另一个表的主键或者唯一键中列出
作为主键的表称为 主表,作为外键的表称为 依赖表
外键会参照主表的主键或唯一键

1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败
2.对父表的作用:对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败

△以下情况创建外键会失败:
外键的引用类型不一样,如主键是int外键是char
主键和外键的字符编码不一样

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作
使用不同的存储引擎还可以获得特定的功能

表结构 存在一个文件中 : 硬盘上

表数据 存在另一个文件中、内存中

索引(目录) 为了方便查找设计的一个机制 :

存储方式为索引+数据 表结构 ,数据的持久化存储

提供了具有提交、回滚和崩溃恢复能力的事务安全,支持外键。但是比起Myisam存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎.

存储方式为索引 数据 表结构 数据的持久化存储 ,有表级锁

不支持事务、也不支持外键,但访问速度快,对事务没有要求

存储方式为表结构,数据断电消失

查看MySQL重要引擎

建表的时候可以指定引擎

一致性 n条语句的执行状态是一致的

commit; # 提交事务 解锁被锁住的数据,让他们能够被修改

行级锁 :只对涉及到修改的行加锁,利于并发的修改,但是对于一次性大量修改效率低下
表级锁 :一次性加一把锁就锁住了整张表,不利于并发的修改,但是加锁速度比行锁的效率要高
外键约束 :被约束表中的数据不能随意的修改/删除 约束字段据要根据被约束表来使用数据

△聚集索引/聚簇索引 : 叶子节点会存储整行数据 —— innodb的主键
△辅助索引/非聚集索引 :除了主键之外的普通索引都是辅助索引,一个索引没办法查到整行数据,需要回聚集索引再查一次(回表)

△b+树 是为了更好的处理范围问题在b树的基础上有所优化
△mysql中innodb存储引擎的所有的索引树都是b+树

当数据库中存在很多条记录,例如几十万条,查询速度就成了一个问题
先在目录中查询,然后根据目录所示的页码找到查询内容,大大缩短查询时间.
不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行
表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件

索引也需要占空间,如果我们有大量的索引,索引文件可能会占很多空间
3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

1.对经常更新的表就避免对其进行索引,对经常用于查询的字段应该创建索引
2.数据量小的表最好不要使用索引
3.在不同值少的列上(字段上)不要建立索引,比如在"性别"字段上只有男,女两个不同值

1,创建表时,主键会默认带有索引

创建一个索引 索引名 从 表名 在哪个字段

在创建一个视图时,只存放视图的定义,也就是动态检索数据的查询语句,并不存放视图对应的数据,在用户使用视图时才去求相对应的数据,所以视图称为‘虚表’

-- 查看每个国家的总人数,年龄总和,平均年龄,最高年龄,最低年龄
为上面的语句创建视图:
#三个部门:教学,销售,运营

0.建表book,并向表中插入数据
1.查询egon写的所有书和价格
2.找出最贵的图书的价格
4.将所有图书按照出版日期排序
5.查询alex写的所有书的平均价格
6.查询人民音乐不好听出版社出版的所有图书
7.查询人民音乐出版社出版的alex写的所有图书和价格
8.找出出版图书均价最高的作者
9.找出最新出版的图书的作者和出版社
10.显示各出版社出版的所有图书
11.查找价格最高的图书,并将它的价格修改为50元
12.删除价格最低的那本书对应的数据
自己研究上面sql语句中的year函数的功能,完成需求:
将所有2017年出版的图书从数据库中删除
15.有文件如下,请根据自学pymysql模块,使用python写代码将文件中的数据写入数据库

# 书名作者出版社价格出版日期 # 查询egon写的所有书和价格 # 找出最贵的图书的价格 # 将所有图书按照出版日期排序 # 查询alex写的所有书的平均价格 # 查询人民音乐不好听出版社出版的所有图书 # 查询人民音乐出版社出版的alex写的所有图书和价格 # 找出出版图书均价最高的作者 # 找出最新出版的图书的作者和出版社 # 显示各出版社出版的所有图书 # 查找价格最高的图书,并将它的价格修改为50元 # 删除价格最低的那本书对应的数据

我要回帖

更多关于 圆周率后1000位 的文章

 

随机推荐