mysql终结篇
一、mysql中not null unique和primary key 的区别
1、not null unique 是给一个字段设置非空且唯一的特性,当表中字段没有设置primary key的主键特性时那么第一个设置了非空且唯一特性的字段就是该表的主键。
2、在一个表中可以有多个字段的特性是非空且唯一但是只能有一个字段的特性是主键。
3、主键必须要有非空且唯一的特性,但是有非空且唯一特性的字段并不一定是主键。
二、联合主键
1、主键的创建格式(两种方式):
eg:create table table_name (字段 字段属性 [约束条件] ........)
eg:create table student (id int primary key auto_increment,name varchar(11) not null,book_id int not null unique);
eg:create table student (id int auto_increment,name varchar(11) not null,primary key(id));
2、联合主键的创建方式:
eg:create table student (id int auto_increment,name varchar(11) not null,book_id int not null unique,primary key(id,book_id));
3、联合主键的应用场景
联合主键一般应用于一张表分别关联多张表的场景,并且关联的每个主键都是非空且唯一。
三、数据库搜索引擎
1、什么是存储引擎?
在现实生活中不同类型的文件存储机制是不同的,文本文件就用txt类型存,表格文件就用excel类型存。。。。。。。
在mysql中不同类型的表存储机制也是不同的,mysql5.6以上版本的数据库默认存储引擎是innodb,以下版本的数据库默认存储引擎是myisam
2、存储引擎的查看及修改方式
2.1可以用 show engines;方式来查看数据库支持的存储引擎,以及默认的存储引擎
2.2在建库或者是建表中如果不加存储引擎的类型,就是默认的存储引擎类型,如果加的话可直接在建库或建表的后面加。
create table student3 (id int not null ,name varchar(11) not null)engine=myisam;
2.3可以用show variables like 'default_tmp_storage_engine%';的方式来查看当前库的搜索引擎。
四、索引
1、什么是索引?
在mysql中索引也叫键(index|key),如果在表中没有索引的话想要查询一条记录就会遍历整张表才能查出自己想要的数据,如果这个表存储记录很多而且要查询的记录有可能刚好在表的最后面那么遍历的查询效率是极其低下的那么就应用到了索引的概念。索引的作用就相当于用字典查一个字,如果遍历这个字典查的话效率低下,但是使用拼音或者是偏旁部首来查的话就能直接定位到在哪一页。
2、mysql中创建索引
2.1建立表时直接创建索引的语法:
CREATE TABLE 表名 (字段名1 数据类型 [完整性约束条件…],字段名2 数据类型 [完整性约束条件…],
[UNIQUE] [FULLTEXT] INDEX | KEY [索引名] (字段名1[,字段名2]] [ASC |DESC])
);
2.2建完表后插入索引的语法:
方法1:CREATE [UNIQUE] INDEX 索引名 ON 表名 (字段名[(长度)] [ASC |DESC]) ;
方法2:ALTER TABLE 表名 ADD [UNIQUE] INDEX 索引名 (字段名[(长度)] [ASC |DESC]) ;
2.3删除索引语法:
DROP INDEX 索引名 on 表名
2.4创建索引实例:
--创建普通索引示例: CREATE TABLE emp1 ( id INT,name VARCHAR(30) , resume VARCHAR(50),
INDEX index_emp_name (name));
--创建唯一索引示例: CREATE TABLE emp2 (id INT,name VARCHAR(30) , resume VARCHAR(50),
UNIQUE INDEX index_emp_name (name) );
--创建全文索引示例: CREATE TABLE emp3 ( id INT,name VARCHAR(30) ,resume VARCHAR(50),
FULLTEXT INDEX index_resume (resume) );
--创建多列索引示例: CREATE TABLE emp4 (id INT,name VARCHAR(30) ,resume VARCHAR(50),
INDEX index_name_resume (name,resume));
五、pycharm操作mysql
1、pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同
2、在pycharm中执行mysql语句
import pymysql
# 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 创建游标
cursor = conn.cursor()
# 执行SQL,并返回收影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2'")
# 执行SQL,并返回受影响行数
#effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))
# 执行SQL,并返回受影响行数
#effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
# 提交,不然无法保存新建或者修改的数据
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
3、获取查询数据
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.execute("select * from hosts")
# 获取第一行数据
row_1 = cursor.fetchone()
# 获取前n行数据
# row_2 = cursor.fetchmany(3)
# 获取所有数据
# row_3 = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()
4、注意:
在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:
cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
5、fetch数据类型
关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.execute("call p1()")
result = cursor.fetchone()
conn.commit()
cursor.close()
conn.close()
mysql终结篇的更多相关文章
- 我叫Mongo,干了「查询终结篇」,值得您拥有
这是mongo第三篇"查终结篇",后续会连续更新5篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟着我一起来探索交流. 通 ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
- 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档
接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...
- JavaScript中的正则表达式(终结篇)
JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...
- 转摘 MySQL扫盲篇
一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1) 为什么 ...
- WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享
系列文章目录 WPF自定义控件与样式(1)-矢量字体图标(iconfont) WPF自定义控件与样式(2)-自定义按钮FButton WPF自定义控件与样式(3)-TextBox & Ric ...
- 关于C++对汉字拼音的处理——终结篇
以前写过了3个博文,都是关于汉字转拼音的,后来发现都不是很“完美”的解决方案,第一个和第二个利用的unicode编码的范围进行确定汉字的拼音,但是难免有遗漏,这个在后面的实践中发现的,后来第三个方法是 ...
- WPF自定义控件与样式(15)-终结篇
原文:WPF自定义控件与样式(15)-终结篇 系列文章目录 WPF自定义控件与样式(1)-矢量字体图标(iconfont) WPF自定义控件与样式(2)-自定义按钮FButton WPF自定义控件与 ...
随机推荐
- 红茶一杯话Binder (传输机制篇_下)
红茶一杯话Binder (传输机制篇_下) 侯 亮 1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语 ...
- 88. Merge Sorted Array【easy】
88. Merge Sorted Array[easy] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 ...
- Django的自定义标签
Django提供了自定义标签功能,可以方便常用方法的重复使用. 标签的本质就是函数,标签名就是函数名. 注意点: 1.需要到django.template对象. 2.register = templa ...
- AudioToolKit的简单介绍及教程
AudioToolKit的简单介绍及教程 (2013-02-21 09:29:18) 转载▼ 标签: 游戏开发 unity3d教程 unity3d unity it 分类: Unity3d之插件篇 原 ...
- centos7系统备份与还原
1. 前言 在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工具(通常都是私有软件),然后重启电脑进入备份 ...
- Spring Data Redis 2.x 中 RedisConfiguration 类的新编写方法
在 Spring Data Redis 1.x 的时候,我们可能会在项目中编写这样一个RedisConfig类: @Configuration @EnableCaching public class ...
- 百度UEditor 用require 引入 Thinkphp5 ,图片上传问题
用require引入,用了10分钟:上传图片,用了一个早上(吐血一地.....) 重点:require引入成功后,在需要引用UEditor的文件开头加入(ue的文件夹路径) window.UEDITO ...
- A Survey of Shape Feature Extraction Techniques中文翻译
Yang, Mingqiang, Kidiyo Kpalma, and Joseph Ronsin. "A survey of shape feature extraction techni ...
- Android 混淆完全解析
1.http://blog.csdn.net/jddkdd2/article/details/8858909
- 接入qq登录功能出现的问题
在调用qq授权的接口时,出现以上错误. 原因是: 打包的应用签名和第一次上传包的签名不一致造成的 解决方法: 第一种方法:用上次打包apk的keystore重新打包apk,使签名一致. 第二种方法:联 ...