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自定义控件与 ...
随机推荐
- UVA 11014 - Make a Crystal(容斥原理)
UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, ...
- C++语言基础(19)-模板的显式具体化
应用背景: 例如有下面的函数模板,它用来获取两个变量中较大的一个: template<class T> const T& Max(const T& a, const T&a ...
- sigaction()之sa_mask
man文档描述: sa_mask gives a mask of signals which should be blocked during execution of the signal hand ...
- Ubuntu vsftp复制文件到远端时错误,Permission denied
Ubuntu 下复制文件到远端时错误,Permission denied 失败原因如下: (1)vsftp默认配置不允许上传文件 解决办法:修改配置文件 vi /etc/vsftpd.conf. 将& ...
- Unity3D游戏开发之游戏读/存档功能在Unity3D中的实现
喜欢我的博客请记住我的名字:秦元培,我的博客地址是:http://qinyuanpei.com 转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanp ...
- ThinkPHP与EasyUI整合之二(datagrid):删除多条记录
学习EasyUI已有一段时间了,现在开始逐步把平时学习的细节和难点记录下来. 1. datagrid选中多条记录的语句是: var rows = $('#dg').datagrid('getSelec ...
- RL for Robots
1.Robot gains Social Intelligence through Multimodal Deep Reinforcement Learning 这篇文章使用DQN去训练一个机器人,使 ...
- 【转】火狐右键google搜索特别慢的解决办法
原网页:http://www.fatalist.im/blog/459.html google将谷歌中文网站google.cn的搜索服务转向到google.com.hk(香港)后,firefox右上角 ...
- day20常用模块
一.正则内容的补充 import re # ret = re.findall(r'www\.baidu\.com|www\.oldboy\.com','www.baidu.com') # # ret ...
- Ninject学习笔记<三>
ASP.NET MVC学前篇之Ninject的初步了解 1.介绍 废话几句,Ninject是一种轻量级的.基础.NET的一个开源IoC框架,在对于MVC框架的学习中会用到IoC框架的,因为这种IoC开 ...