首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
数据库
> 详细
Mysql数据库知识点总结
时间:
2018-10-20 18:36:21
阅读:
186
评论:
0
收藏:
0
[点我收藏+]
标签:
约束
not
逻辑
参数
字节
task
需要
没有
端口号
一、基本概念
1、数据库服务器
我们可以理解为数据库服务器即是一台内存较高的计算机,可以在上面运行数据库管理软件
2、数据库管理系统
如Mysql,是一个软件,用来管理数据库的软件
3、数据库
即文件夹,用来组织文件
4、表
即文件,用来存放多条记录,每条记录为多个字段组成的一行数据
二、Mysql基本介绍
Mysql是目前WEB应用最好的RDBMS(Relation Database Mangement System)关系数据库管理系统之一
关系型数据库是将数据保存到不同的表里面,而不是将数据放到一个大仓库内
关系型数据库与非关系型数据库的区别是:关系型数据库有表结构,非关系型数据库是通过key-value存储,无表结构
Mysql使用的是标准的SQL数据语言形式,支持多种语言,支持5000万条的数据仓库,32位系统表文件最大支持4GB,64位系统最大支持表文件为8TB
通俗的讲:Mysql就是一个基于socket编写的C/S架构的软件
储存引擎
mysql默认的查询引擎为innodb,可以自行进行更改
语法:
win:
启动mysql服务端,在cmd窗口运行mysqld
数据库初始化命令:mysql-initialize-insecure
启动mysql客户端,并连接服务端mysql -uroot -p
连接其他ip数据库,mysql -u账号 -hIP地址 -P端口号 -p密码
查看当前登陆用户:select user( )
刷新权限,执行命令:flush privileges;
查看进程:tasklist | findstr mysql
杀死进程:tasklist /F /PID 进程号
mac:
设置新密码:set password for ‘用户名‘@‘IP地址‘=password(‘‘);
查看系统进程:ps -A
杀死系统进程:sudo kill -9 PID
操作文件夹(库):
增加一个库:create database db1 charset utf8;
查看所有库: show databases;
查看特定库: show create database db1;
删库跑路: drop database db1;
操作文件(表):
切换进数据库:use db1;
查看当前所在文件夹;select database( );
增加表:create table t1(id int,name char(6));
查看特定表:show create table t1;
查看所有表:show tables;或者desc t1;
改:
alter table t1 modify name char(10);name字段改为10字节;
alter table t1 modify name NAME char(10);name字段名改成NAME
复制表
即复制表数据也复制表结构:create table t1 select * from db1.t1;
只复制表结构create table a1 like db1.t1;
清空表
delete from t1;但是这种方法会保留自增的ID
truncate table t1;这种方法不会保留自增ID
操作文件内容
增加内容:insert into (id,name) values(1,‘aa‘),(2,‘bb‘),(3,‘cc‘);
查看内容:select * from db1.t1;
删除内容:delete from t1 where id =1;
查看用户权限:select * from mysql.user where user=‘root‘\G;
三、SQL数据类型
SQL之中没有bool值,tinyint[1]表示true;tinyint[0]表示fasle.
int数据类型后面存储的是显示宽度,而不是存储宽度,其他的数据类型则表示的是存储宽度
now()sql中的内置函数,根据数据类型生成相对应的时间模式
char( )定长字符串,存储速度快,但是浪费空间
varchar( )变长字符串,存储速度慢,可是节省空间
enum() 表示枚举 多选一
set( )表示集合 多选多
四、约束:作用是保证数据的完整性和一致性
not null 表示该字段数据不能为空
default 表示该字段的默认值
unique 唯一(列唯一,组合唯一)
primary key 主键 一张列表中只允许出现一个主键(not null + unique)
auto-increment 自增长
foregin key 外键 建立两个表之间的联系
语法 constraint fk_dep foreign key(关联列名) references 被关联表(被关联列)
on delete cascade 同步删除
on update cascade 同步更新
五、查询:
单表查询的关键字执行顺序
from 说明是来自那一张表
where 条件 后面可以跟比较运算符 between and in(. ). like(%表示任意字符 _表示一个字符)逻辑运算符
group by 以某个字段的值进行分组,发生在where之后,查看组类信息依赖于聚合函数max min avg sum count
having 过滤,在group by 后面的条件筛选
order by 排序 asc升序 desc降序
limite 限制查询 记录数 limte a, b. a表示从第a个开始,b表示查询b条
多表连接查询
语法:select 字段 from t1 inner/left/right join t2 on t1.字段=t2.字段;
inner 表示只显示连接匹配的行
left:优先显示左表的全部记录
right:优先显示右表的全部记录
子查询中的关键字
in/not in:查询的结果是否在子表中
运算符:= < > !=
exits:表示存在,使用此关键字时,内层查询语句不返回查询的记录,而是返回一个布尔值,当此布尔值为真时外层语句进查询,反之不进行查询
六、pymysql简单使用
连接:conn=pymysql.connect(host=‘IP‘,port=端口号,user=‘root‘,password=‘‘,db=db1,charset=‘utf8‘)
创建游标:cursor=conn.cursor( )
写sql语句:sql=‘’
执行sql语句,返回在数据库中查询成功的记录行数,result=cursor.execute(sql);在result中可以进行字符的拼接,execute(sql,[user,pwd]),即execute注入,防治恶意语法
使用mysql模块进行增删改操作时需使用commit( )方法进行提交,否则数据库更改不生效;conn.commit( )
查询操作:fetchone( )获取下一行数据,从第一行开始;fetchall( )获取所有行数据,;fetchany(n),获取n行数据
查询操作默认返回的是元组,使用如下语句获取游标,改变cursor属性,会返回字典:cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
移动指针:
cursor.scroll(1,mode=‘relative‘)相对定位,相对当前位置向下移动
cursor.scroll(1,mode=‘abusolute‘绝对定位,相对左上角向下移动
关闭连接,游标和连接都需要关闭:cursor.close( ). conn.close( )
七、索引
索引的作用:约束和加速查找
无索引的时候一般会 从前至后一条条查找
有索引的时候:创建索引的本质就是创造额外的文件,查询时先去额外的文件找,定好位置,再去原始表直接查询,提高查询速度,但是增删改的速度依然慢,创建索引后必须命中索引才有效
索引的分类
1、普通索引:加速查询
加入索引:create index 索引名 on 表名(列名)
删除索引: drop index 索引名 on 表名
查看索引:show index from 表名
2、唯一索引:加速查找和唯一约束(可含null)
加入索引:create unique index 索引名 on 表名(列名)
删除:drop index 索引名 on 表名
3、主键索引
加入索引:alter table 表名 add primary key(列名)
删除索引:alter table 表名 drop primary key(列名)和alter table 表名 modify 列名 int,drop primary key
4、组合索引:将多个列组合成一个索引
创建组合索引:create iindex 索引名 on 表名(列1,列2)
在使用组合索引时,若组合索引为(name,email),单独索引email时不走索引,这称为最左前缀匹配原则,最左匹配原则中,mysql会一直向右匹配知道遇到(< > between like)这一类的范围查询时停止
explain + sql查询语句,用于查询sql执行信息参数
在使用关键字‘like’查询时:like ‘n%’ 走索引;但是like ‘%n%’不走索引,即有且仅只有后面带上%时走索引
使用函数时索引不生效
Mysql数据库知识点总结
标签:
约束
not
逻辑
参数
字节
task
需要
没有
端口号
原文地址:https://www.cnblogs.com/immkoy/p/9822303.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
数据库进阶
2021-07-29
在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式
2021-07-28
Windows Logstash同步 Sqlserver 到Elasticsearch
2021-07-26
mysql数据库(11):恢复数据
2021-07-26
mysql数据库(9):常用查询的例子
2021-07-26
SQLAlchemy 多对多
2021-07-26
ClickHouse的JDBC连接
2021-07-26
Apache HBase 1.7.1 发布,分布式数据库
2021-07-26
数据库常用架构和同步工作原理
2021-07-26
MySQL数据库设计规范(仅供参考)
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!