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自定义控件与 ...
随机推荐
- 常用的Http组件
日常生活中,我们接触最多的Http组件就是浏览器了!但是,还有其他也很重要的组件,下面容我慢慢盘点: 1.代理服务器 代理服务器就是帮助我们发送请求报文,接受响应报文的服务器.对web服务器而言,代理 ...
- OpenURL的一些用法
openURL的使用方法: view plaincopy to clipboardprint? [[UIApplication sharedApplication] openURL:[NSURL UR ...
- UITabelViewFootView(转)
在处理UITableView表格时,我们希望在View底部添加按钮. 用户拖动UITableView时按钮能跟随移动. 如题,实现如下界面: - (CGFloat)tableView:(UITable ...
- collection动画
Collection View 动画 吴迪 12 May 2014 分享文章 UICollectionView 和相关类的设置非常灵活和强大.但是灵活性一旦增强,某种程度上也增加了其复杂性: UICo ...
- IOS设计模式浅析之适配器模式(Adapter)
引言 在项目开发中,有时候会遇到这样的一种情景:需要使用以前开发的“一些现存的对象”,但是新环境中要求的接口是这些现存对象所不满足的.怎样应对这种迁移的需求?使得可以复用这些对象,以满足新的应用环境, ...
- php windows 扩展redis
一:客户端安装redis (1)下载地址:https://github.com/dmajkic/redis/downloads 根据电脑是多少位的使用对应的文件,如我的是64bit,那么我就选择64b ...
- [浪风JQuery开发]jquery最有意思的IFrame类似应用--值得深入研究
前几天一时兴起答应朋友的需求--做一个外国的企业网站: 本想做就做呗,可没想我辛辛苦苦用浪风认真php平台开发后,对方来一句我服务器不能安装其他程序,请给我用frame框架开发. 浪风那是一个苦字难言 ...
- 什么是Web Services?
什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描 ...
- merge实现拉链表
建表如下( 历史拉链表): 新表(每日更新的): 实现语句: MERGE INTO test_target t1 USING ( SELECT nvl(c.id, b.id) AS id ,CASE ...
- excel添加复选框和去掉复选框
添加复选框 我测试的excel版本是最新版2016,所有版本都是找开发者工具里面包含很多工具呢,大家可以慢慢测试 excel的右上角 点击文件-->选项-->自定义功能区-->添加开 ...