数据库主键

mysql字段约束-索引-外键

ε祈祈猫儿з 提交于 2020-01-01 22:13:04
字符修饰符 1)null于not null 说明与使用 NULL 是空值的意思,就是这个字段没有值 先创建一个数据库,并进入 mysql > create database w1 mysql > use w1 ; 这里用例子举例,什么时用null和 not null 1.首先是not null的使用 可以看到,两个字段我类型后面,我加了, not null 关键词,这就是使用 mysql > create table name ( id int ( 10 ) not null , stname char ( 10 ) not null ) ; Query OK , 0 rows affected ( 0.34 sec ) 然后查看一下表结构,可以看到第三列NULL,两个字段都是NO,表示两个字段都不允许为 NULL 值的意思 mysql > desc name ; + --------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + --------+----------+------+-----+---------+-------+ | id | int ( 10 ) | NO | | NULL | | | stname | char ( 10

工具猿之MySQL教程-05-索引详细操作管理

点点圈 提交于 2020-01-01 19:51:01
索引详细操作管理 一、认识索引:       1、了解索引    2、索引分类    3、索引设计原则    二、管理索引:       1、创建索引    2、查看索引    3、删除索引    一、认识索引 了解索引 索引是一种特殊的数据库结构,可以用来快速查询数据库中的特定记录。在MySQL中,所有的数据类型都可以被索引。MySQL支持的索引主要有Hash索引和B-Tree索引。目前,大部分MySQL索引都是以B-Tree(B-树)方式存储,是MySQL数据库中使用最频繁的索引类型。 讨论:    (1)BLOB和TEXT类型字段仅支持前缀索引。    (2)使用 “!=” 以及 “<>” 的时候,MySQL不使用索引。    (3)使用LIKE的时候,以 “%” 开头,即使用 “%****” 的时候无法使用索引;在使用OR的时候。要求OR前后字段都要有索引。    (4)当字段使用函数时候,MySQL无法使用索引;在连接条件字段类型不一致的时候,MySQL无法使用索引;在组合索引里使用非第一个索引时也不使用索引。    (5)索引是一个简单的表,MySQL将一个表的索引都保存到同一个索引文件中,所以索引也是占物理空间的,如果有大量的索引,索引文件可能会比数据文件更快的到达最大的文件尺寸。    (6)在更新的表中引入索引列上的数据时,MySQL会自动地更新索引

MySQL数据库(5)- pymysql的使用、索引

眉间皱痕 提交于 2020-01-01 07:27:33
一、pymysql模块的使用 1、pymysql的下载和使用 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就需要用到pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装。 1)pymysql模块的下载 pip3 install pymysql 2)pymysql模块的使用 现有数据库mydb,其中有一个userinfo表,表中数据如下: mysql> select * from userinfo; +----+------+-----+ | id | name | pwd | +----+------+-----+ | 1 | wll | 123 | | 2 | ssx | 456 | +----+------+-----+ 示例:使用Python实现用户登录,如果用户存在则登录成功,否则登录失败 import pymysql username = input('请输入用户名:') pwd = input('请输入密码:') # 1、连接 conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123', db = 'mydb', charset = 'utf8' ) # 2

数据库(MySQL)表基本操作

眉间皱痕 提交于 2020-01-01 05:55:44
数据库表基本操作 思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句大全,感觉用“大全”这个名词太大了,而文章中介绍的内容有限而且也不深。如果您在阅读的过程中发现有不完善的地方,欢迎补充说明。 创建数据库    一提笔就讲创建数据库,感觉好像是从半道上开始的。创建数据库前总得安装数据库吧,不管是SQL Server、mysql、Oracle。但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本片博客如下都是使用mysql数据库,首先是登入数据库操作(mysql -u root -p)。 查看当前所存在的数据库: show databases; 查询结果中的mysql数据库是必须的,用来描述用户的访问权限;information_schema数据库提供了访问数据库元数据的方式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema用于收集数据库服务器性能参数。 创建新的数据库: create database test_db; test_db为要创建的数据库名称,该名称不能与现有的数据库重名。 查看创建好的数据库定义:show create database test_db; 删除数据库: drop database test_db; test

Mysql innodb索引与查询优化

只谈情不闲聊 提交于 2020-01-01 04:53:36
一、 引言 概要 (1) innodb索引类型与B+树 (2) 索引使用注意事项 (3) 车点评业务表索引优化案例 问题 (1) InnoDb索引为什么要用b+树? (2) 聚集索引与普通索引有什么区别? (3) 为什么主键最好是自增? (4) 组合索引有什么优势? (5) 有哪些实际业务场景索引搞不定? 二、 innodb索引类型与B+树 INNODB主要有几种索引:B+树索引,自适应哈希索引,全文索引 ,覆盖索引。 B+树索引是一种多叉平衡查找树。 自适应哈希索引是mysql对于频繁查询的数据采取的hash存储优化,用户无法选择设置。 全文索引主要用于全文检索使用。 覆盖索引说的是查询的字段都属于同一个索引字段,这样效率非常高。 查找树 查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。 B 树 /B+ 树 /B* 树 B树 B+树 所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 数据库索引采用B

数据库索引

旧街凉风 提交于 2020-01-01 04:22:24
以下索引知识以mysql索引来阐述 一:MySQL中索引的语法   (1)创建索引 --在创建表的时候添加索引 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); --在创建表以后添加索引 ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name); --或者 CREATE INDEX index_name ON my_table(column_name); 注意: 1、索引需要占用 磁盘空间 ,因此在创建索引时要考虑到磁盘空间是否足够 2、创建索引时需要 对表加锁 ,因此实际操作中需要在业务空闲期间进行    (2)索引相关sql --删除索引 DROP INDEX my_index ON tablename; --或者 ALTER TABLE table_name DROP INDEX index_name; --查看表中的索引 SHOW INDEX FROM tablename --查看查询语句使用索引的情况 //explain 加查询语句 explain SELECT * FROM table_name WHERE column_1='123

(七)MySQL索引和执行计划

不羁岁月 提交于 2020-01-01 04:22:05
索引 和 EXPLAIN/DESC 概念 索引 是对 数据库 表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息 索引分为聚簇索引和非聚簇索引两种 聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快 MyISAM:非聚簇索引 非聚簇索引的 主索引和辅助索 引几乎是一样的,只是主索引不允许重复,不允许空值,他们 的叶子结点的key都存储指向键值对应的数据的物理地址 非聚簇索引的数据表和索引表是分开存储的 非聚簇索引中的数据是根据数据的插入顺序保存。因此非聚簇索引更适合单个数据的查询。插入顺序不受键值影响 只有在MyISAM中才能使用FULLTEXT索引 InnoDB:聚簇索引 聚簇索引的 主索引的叶子结点存储的是键值对应的数据本身,辅助索引的叶子结点存储的是键值对应的数据的主键键值 。因此主键的值长度越小越好,类型越简单越好 聚簇索引的数据和主键索引存储在一起。 聚簇索引的数据是根据主键的顺序保存。因此适合按主键索引的区间查找,可以有更少的磁盘I/O,加快查询速度。但是也是因为这个原因,聚簇索引的插入顺序最好按照主键单调的顺序插入,否则会频繁的引起页分裂,严重影响性能。 在InnoDB中

mysql数据库(2)

孤者浪人 提交于 2019-12-31 14:39:18
命令行连接 在工作中主要使用命令操作方式,要求熟练编写 打开终端,运行命令 mysql -uroot -p 回车后输入密码,当前设置的密码为mysql 退出登录 quit 和 exit 或 ctrl+d 登录成功后,输入如下命令查看效果 查看版本:select version(); 显示当前时间:select now(); 修改输入提示符 prompt python> \D 完整日期 \U 使用用户 数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 charset=utf8; 例: create database python charset=utf8; 删除数据库 drop database 数据库名; 例: drop database python; 数据表 查看当前数据库中所有表 show tables; 查看表结构 desc 表名; 创建表 auto_increment表示自动增长 CREATE TABLE table_name( column1 datatype contrai, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY

行式填报之主键设置

情到浓时终转凉″ 提交于 2019-12-28 09:33:38
填报功能是报表工具不可或缺的功能之一,此功能可以让用户在页面中进行数据维护操作。特别是在行式填报中,用户不仅可以修改数据,而且可以插入 / 添加新数据或删除已有数据。这样,在更新行式填报页面中的数据记录时,主键字段就会涉及 insert 和 delete 操作,而对于不同类型的主键我们应该如何进行更新设置?有哪些方面是需要我们注意的呢?下面我们将以雇员信息表的维护为例探讨一下主键设置的相关内容。 附 Employee 表结构: 先准备一张行式填报表,制作效果如下图所示: (行式填报表快速制作教程参见 数据维护不求人,一招搞定增删改 ) 来源脚本设置: 重点来啦 ~~ 去向脚本中不同的主键类型应该如何配置呢?我们来逐个攻破: 1. 单主键 Employee 表的主键为 empno,那么脚本中的 update 函数配置为: A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;empno) 在英文分号后面配置主键 empno,报表在做更新处理时,会以 empno 为主键对比 employee 和 employee_old 对象的数据,然后将差异数据更新到表 employee 中。 完整版脚本内容如下图所示: 2. 多主键 一般情况下,物理表只设置一个主键字段就可以将数据记录区分开来

MySQL入门(二)

故事扮演 提交于 2019-12-27 23:44:18
1. MySQL 架构 1.1 逻辑架构图 1.1.1 Connection Pool: 连接池 * 管理缓冲 用户连接 , 线程处理 等需要缓存的需求。 * 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到 线程管理模块 。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。 * 而 连接线程 的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。 1.1.2 Parser: 解析器 * SQL 命令传递到解析器的时候会被解析器 验证和解析 。 主要功能: a . 将 SQL 语句进行 语义和语法的分析,分解成数据结构 ,然后按照 不同的操作类型进行分类, 然后做出针对性的转发到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的。 b. 如果在分解构成中遇到错误,那么就说明这个 sql 语句是不合理的 1.1.3 Optimizer: 查询优化器 * SQL 语句在查询之前会 使用查询优化器对查询进行优化 。 * 它使用的是“ 选取 - 投影 - 联接 ”策略进行查询。 用一个例子就可以理解: select uid,name from user