sql增加字段

MySQL常用规范

▼魔方 西西 提交于 2020-01-10 13:18:11
一. 建表规范 1.使用InnoDB引擎 无特殊情况必须使用InnoDB引擎(5.5版本后默认引擎) InnoDB支持事务、行级锁、MVCC,并发性能更好,CPU及内存缓存页优化使得资源利用率更好。 2.规范表、字段的命名 表名、字段名,小写下划线风格,尽量做到见名知意。 3.规范索引命名 主键索引名为pk_表名_字段名,唯一索引名为uk_表名_字段名,普通索引为idx_表名_字段名。 4.字段NOT NULL的好处 NULL的列使索引、索引统计、值得比较都更加复杂; NULL类型MySQL内部需要特殊处理,增加处理记录的复杂性,NULL的列需要额外的空间来标识; 对NULL的处理是能采用IS NULL或IS NOT NULL:WHERE name != '张三'; 的查询结果不会包含name为NULL的记录。 5.char与varchar 如果存储的字符串长度固定,则应该使用char定长字符串类型,存取效率较高; 如果字符串长度不固定,则应该使用varchar变长字符串类型,它会根据字符串实际长度分配空间,节约资源。如果字符串长度超过5000,应该定义字段类型为text等大文本,并独立一张表,用主键关联,避免影响其他字段的索引效率。 二. 索引规范 1.善于使用唯一索引 业务上具有唯一特性的字段,即使是多个字段组成,也必须建成唯一索引,唯一索引可以显著提高查询效率

20200107_微服务架构下的数据库设计原则

白昼怎懂夜的黑 提交于 2020-01-09 18:18:13
微服务架构下的数据库设计原则 对于为服务而言,每一个微服务专注于某个功能,对外提供清晰的服务边界;由于体积小、复杂度低、高内聚、易于维护等特点,很多信息化平台都采用微服务架构。微服务设计中一个很重要的部分就是数据库的设计。 一对一数据库 基本原则是微服务与数据库是一对一的关系。这样主要是出于以下三点考虑: 服务调用清晰,同意通过REST接口或者RPC(或者消息)形式对外提供接口,如果数据库共享后,那么数据库也就成了接口,且根本没法控制接口的职责,性能、安全等因素也随着失控。 有利于问题的定位,大多数问题都是由于数据库数据造成的,如果数据库无法完全掌控,则可能会出现各种各样的问题,毕竟无法预知别人会往数据库插入/删除什么样的数据。 便于性能调优和应用的弹性伸缩,数据库完全掌控了才有可能做这些优化,否则根本无法预知你的扩展和调优,会不会对调用数据库的第三方应用造成什么样的影响。 共享数据 在实际项目中,为了性能和可维护性,可能会打破这种一对一的关系,出现共享数据库。例如一些码表 当一些数据变动不频繁,例如码表之类的,可以通过在各个为服务中单独维护一个这样的数据库表,通过同步的方式进行更新同步,当然这里有很多前提条件,例如变化不频繁。 只读业务数据的访问,最佳方式是通过服务调用,将SQL 层面的操作通过程序来完成,如果性能达不到要求,可考虑采用同步方式,数据库同步有多种

MySQL灵魂五十问

给你一囗甜甜゛ 提交于 2020-01-06 17:14:36
1、MySQL 中有哪几种锁? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: MyISAM Heap Merge INNODB ISAM 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引 基本一致,但是辅索引不用保证唯一性。 InnoDb: 支持 ACID 的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制, 一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制; 主键索引采用聚集索引(索引的数据域存储数据文件本身)

SQL基础-----DDL

一个人想着一个人 提交于 2020-01-01 07:19:58
1 (My)SQL入门    这里用了(My)SQL这样的标题,目的是介绍标准SQL的同时,也将MySQL在标准SQL上的扩展一同介绍给读者。 2: SQL分类   SQL语句主要可以划分为以下3个类别    . DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。    . DML(Data Manipulation Languages)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。    . DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,主要的语句关键字包括grant、revoke等。 3:DDL语句   DDL是数据定于语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改等操作的语言。它和DML语言的最大区别是DML只是对表内部数据操作,而不涉及表的定义,结构的修改,更不会涉及其他对象。DDL语句更多的由数据库管理员(DBA)使用,开发人员一般很少使用。  

数据库(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常用操作

流过昼夜 提交于 2020-01-01 05:21:05
1. 如何登陆本机MySQL: 运行->cmd 回车-> mysql -h localhost -u root -p 回车 输入密码:12345 “;”“ \G ”“\g”结尾 2. 创建数据库: CREATE DATABASE 数据库名 ; “数据库名”表示要创建的数据库名称。 3. 显示已经存在的数据库: SHOW DATABASES; 4. 删除数据库: DROP DATABASE 数据库名; 5.查看数据库的存储引擎: SHOW ENGINES\G 或者: SHOW VARIABBLES LIKE 'have%'; 6.查看默认存储引擎: SHOW VARIABLES LIKE 'storage_engine'; InnoDB存储引擎中,创建的表的表结构存储在.frm文件中。 MyISAM存储引擎支持3种不同的存储格式,静态型、动态型和压缩型(myisampack工具创建)。 文件扩展名:frm(存储表的结构)、MYD(存储数据)和MYI(存储索引)。 7. 创建表的SQl语句: CREATE TABLE 语法形式: CREATE TABLE 表名(属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], . . . 属性名 数据类型(注意后无逗号) ); 表名 -创建的表的名称; 属性名 -表中字段的名称; 数据类型 -字段的数据类型;

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

MySQL常用命令

感情迁移 提交于 2019-12-25 10:32:58
常用SQL语句   我将由外到里进行编写(数据库到表再到数据)   库层:   1、SHOW DATABASES;   2、CREATE DATABASE dbname;   3、DROP DABABASE dbname;   4、ALTER DATABASE dbname set=新字符集 collate=新校对集;   5、USE dbname;   6、SHOW CREATE DATABASE dbname;   表层:   1、创建表形式:   CREATE TABLE tabname   (    字段名1,数据类型 [列级别约束条件] [默认值],      字段名1,数据类型 [列级别约束条件] [默认值],      …     [表级别约束条件]   );    a、使用主键约束PRIMARY KEY    两个地方添加:1、列约束条件位置(PRIMARY KEY) 2、表级别约束条件位置([CONSTRAINT <约束名>] PRIMARY KEY [字段名])    b、使用唯一性约束UNIQUE    同上两个地方添加:1、UNIQUE 2、[CONSTRAINT <约束名>] UNIQUE(<字段名>)    与主键的区别,两者同样要求唯一,但是UNIQUE可以是NULL,主键不可以。且一个表中PRIMARY KEY只能是一个,UNIQUE可以存在多个。

数据库主键设计思考

回眸只為那壹抹淺笑 提交于 2019-12-24 05:47:17
主键的必要性 有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是双主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦。 主键的无意义性 我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同,比如订单表吧,会有“订单编号”字段,而这个字段呢在业务实际中本身就是应该具有唯一性,具有唯一标识记录的功能,但我是不推荐采用订单编号字段作为主键的,因为具有实际意义的字段,具有“意义更改”的可能性,比如订单编号在刚开始的时候我们一切顺利,后来客户说“订单可以作废,并重新生成订单,而且订单号要保持原订单号一致”,这样原来的主键就面临危险了。因此,具有唯一性的实际字段也代表可以作为主键。因此,我推荐是新设一个字段专门用为主键,此主键本身在业务逻辑上不体现,不具有实际意义。而这种主键在一定程序增加了复杂度,所以要视实际系统的规模大小而定,对于小项目,以后扩展不会很大的话,也查允许用实际唯一的字段作主键的。 主键的选择 我们现在在思考一下,应该采用什么来作表的主键比较合理,申明一下,主键的设计没有一个定论,各人有各人的方法,哪怕同一个,在不同的项目中,也会采用不同的主键设计原则。 第一:编号作主键