mysql修改字段类型

mysql 索引

空扰寡人 提交于 2020-01-01 04:22:40
一、索引的种类 1.单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。 这里不要搞混淆了。   普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。   唯一索引:索引列中的值必须是唯一的,但是允许为空值,   主键索引:是一种特殊的唯一索引,不允许有空值。 2.组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。 3.全文索引:全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引。 (5.6.4以后InnoDB也可以使用全文索引) 二、索引的curd 1.索引的创建 ALTER TABLE 适用于表创建完毕之后再添加 ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名) ALTER TABLE `table_name` ADD INDEX `index_name` (`column_list`) -- 索引名,可要可不要;如果不要,当前的索引名就是该字段名; ALTER TABLE `table_name` ADD UNIQUE (`column_list`) ALTER TABLE

ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作

走远了吗. 提交于 2019-12-31 16:33:31
目录 ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作。 聚合查询 分组查询 F与Q查询 F查询 Q查询 Q查询进阶 ORM中常见字段及参数 常用字段 ORM字段与MySQL字段对应关系: 常用参数 关系字段 (1)ForeignKey (1)字段参数 (2)OneToOneField (2)字段参数 自定义char字段 查询优化(面试比较喜欢问) only与defer select_related与prefetch_related django orm中的事务操作 补充知识: ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,django orm中的事务操作。 聚合查询 聚合(利用聚合函数) 关键字: aggregate() 是 QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 from django.db.models import Max,Min,Count,Sum,Avg # 统计所有书平均价格 res = models.Book.objects.all().aggregate(Avg('ptice')) res1 = models.Book.objects.all().aggregate(Max('ptice')) res2 = models.Book

行式填报之主键设置

情到浓时终转凉″ 提交于 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

MySQL用户和权限管理

牧云@^-^@ 提交于 2019-12-27 22:39:14
前言 在MySQL 5.7.24中,关于用户及用户权限的相关信息,都保存在了mysql库中的user表中,可以将user表中大致分为用户列、权限列、安全列、资源控制列这几种。 1、用户列 user表的用户列包括 Host、 User、password,分别表示主机名、用户名和密码。其中 user和 Host为user表的联合主踺。当用户与服务器之间建立连接时,输入的账户信息中的用户名称、主机名和密码必须匹配user表中对应的字段,只有3个值都匹配的时候,才允许连接的建立。这3 个字段的值就是创建账户时保存的账户信息。修改用户密码时,实际就是修改user表的password字段值。 2、权限列 权限列的字段决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。包括查询权限、修改权限等普通权限,还包括了关闭服务器、超级权限和加载用户等高级权限。普通权限用于操作数据库;高级权限用于数据库管理。 user表中对应的权限是针对所有用户数据库的。这些字段值的类型为 ENUM,可以取的值只能为 Y和 N, Y表示该用户有对应的权限; N表示用户没有对应的权限。查看user表的结构可以看到,这些字段的值默认都是 N。如果要修改权限,可以使用 GRANT语句或 UPDATE语句更改 user表的这些字段来修改用户对应的权限。 3、安全列 安全列只有6个字段,其中两个是 SSI相关的

数据库应用_表结构_键值

久未见 提交于 2019-12-27 10:01:55
随笔结构:1.数据导入导出; 2.管理表格的记录; 3.数据的匹配条件. 一,数据的导入与导出 * mysql默认的导入导出路径为/var/lib/mysql-files/ * 定义路径的变量名secure_file_priv * 修改路径的方式:1).创建目录mkdir /myfile; 2).赋权chown mysql /myfile; 3).将secure_file_priv写入配置文件/etc/my.cnf; 4).重启服务; 5).进入数据库使用show variables like "%secure_file_priv%"查看路径是否修改成功. 1.导入数据 例:将/etc/passwd文件内容导入db3库下的user表,并添加行号字段. 思路:建库db3->建表user->导入数据->为表格添加id号 1.1 建库 create database db3; 1.2. 建表 1.3. 导入数据:mysql>load data infile “/var/lib/mysql-files/” into table db3.user fields terminated by “:” lines terminated by “\n”; 1.4. 为表格添加id号: alter table user add id primary key auto_increment first;

MySQL建立索引原则

不打扰是莪最后的温柔 提交于 2019-12-27 02:09:25
1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。 2.为经常需要排序、分组和联合操作的字段建立索引 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。 3.为常作为查询条件的字段建立索引 如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。 4.限制索引的数目 索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。 5.尽量使用数据量少的索引 如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。 6.尽量使用前缀来索引 如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。 7.删除不再使用或者很少使用的索引

MySql 建表、添加字段、修改字段、添加索引SQL语句写法

五迷三道 提交于 2019-12-26 07:49:09
建表: DROP TABLE IF EXISTS bulletin; CREATE TABLE bulletin( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # 主键 uid INT(11) NOT NULL DEFAULT 0, # 创建者id context VARCHAR(600) NOT NULL DEFAULT '', # 公告详细内容(300字) begintime DEC(20) NOT NULL DEFAULT 0, # 公告开始时间 endtime DEC(20) NOT NULL DEFAULT 0, # 公告结束时间 createtime DEC(20) NOT NULL DEFAULT 0, # 创建时间 modifytime DEC(20) NOT NULL DEFAULT 0 # 修改时间 PRIMARY KEY (`Id`), )DEFAULT CHARSET=UTF8 TYPE=INNODB; 修改原有字段名称及类型: ALTER TABLE bulletin CHANGE uid username VARCHAR(50) NOT NULL DEFAULT ''; 添加新字段: alter table bulletin add citycode varchar(6) not null default 0;

Mysql 索引

偶尔善良 提交于 2019-12-26 00:25:49
原文: mysql索引详解 一. 索引的定义    索引用于快速找出在某个列中有一特定值的行   不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,   如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。   MySQL中的索引的 存储类型 有两种: B+TREE 、 HASH 。 二. 优缺点 1. 优点 所有的MySql列类型(字段类型)都可以被索引,也就是可以给 任意字段设置索引 提高数据的 查询速度 2. 缺点 创建索引和维护索引要 耗费时间 ,并且随着数据量的增加所耗费的时间也会增加 索引也需要 占用空间 ,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值 当对表中的数据进行增加、删除、修改时,索引也需要 动态维护 ,降低了数据的维护速度。 3. 使用原则 对 经常更新的表 就 减少索引 的设置,对 经常用于查询的字段 应该 创建索引 , 数据量小 的表最好 不要使用索引 ,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。 在 相同值多 的列上(字段上) 不要建立索引 ,比如在学生表的"性别"字段上只有男,女两个不同值。相反的

Mysql 常用操作

瘦欲@ 提交于 2019-12-25 10:36:08
一、mysql 5.7修改root密码 如果 MySQL 正在运行 首先杀之: killall -TERM mysqld。 运行 mysqld_safe --skip-grant-tables & 如果此时不想被远程连接: mysqld_safe --skip-grant-tables --skip-networking & 使用mysql连接server mysql 更改密码 update mysql.user set authentication_string=password('1122qqWW') where user='root' and Host = 'localhost'; 特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了 而是将加密后的用户密码存储于authentication_string字段 mysql> flush privileges; mysql> quit; 修改完毕。重启 killall -TERM mysqld service mysql start 二、创建用户 创建一个只能在本机登陆的用户 create user '用户名'@'localhost' identified by '用户的密码'; 创建一个只能由特定远程主机使用的帐户 create user '用户名'@'远程IP地址' identified