mysql创建表

MYSQL对数据库和表的基本操作

前提是你 提交于 2020-03-01 17:55:39
CREATE DATABASE testdb CHARSET=UTF8 创建一个数据库 名字叫做testdb USE testdb; 选择数据库 CREATE TABLE testTable1( -> id int(11) not null primary key auto_increment, -> username char(16) not null, -> password char(16) not null); 创建一个表 名字为testTable1 第一个字段名字为 id 最大11个字符 not null 不允许为空 Primary key 设置主键 auro_increment,自动增长 第二个字段名字为username char型最大16个字符 不允许为空 第二个字段名字为password char型最大16个字符 不允许为空 DROP TABLE testTable1;DROP DATABASE testdb; 删除一个表 删除一个数据库 来源: https://www.cnblogs.com/hack747/p/12390888.html

MySQL(2)操作数据库及表

拈花ヽ惹草 提交于 2020-03-01 13:24:40
数据库 1.创建数据库 创建:CREATE DATABASE 数据库名; 显示数据库:SHOW DATABASES; 2.删除数据库 删除数据库会删除该数据库中所有的表和所有数据。 删除:DROP DATABASE 数据库名; 表 1.创建表 在创建表前,首先要使用USE语句选择数据库。如果没有选择数据库,创建表时会出现错误。 完整性约束条件: 约束条件 说明 PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组 POREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键 NOT NULL 标识该属性不能为空 UNIQUE 标识该属性的值是唯一的 AUTO_INCREMENT 标识该属性的值是自动增加,这是MySQL的语句的特色 DEFAULT 为该属性设置默认值 查看数据库里有哪些表:show tables; 查看表的基本结构:DESCRIBE 表名; 可以缩写为DESC 表名; 查看单个表的详细结构:show create table 表名; 2.修改表 修改表名:ALTER TABLE 旧表名 RENAME TO 新表名; TO可省略 修改字段的数据结构:ALTER TABLE 表名 MODIFY 属性名 数据类型; 修改字段名:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型; 只修改字段名,例:ALTER TABLE

一次Mariadb死锁排查过程回顾

我的梦境 提交于 2020-02-29 22:33:39
场景 在使用某个平台的时候,有些页面发现长时间,部分数据无法加载成功,开始排查问题。 确定是mariadb的问题的过程 访问了几个页面都是正常的,唯独某几个页面查询实时监控数据时无法加载出来, F12 查看接口发现有几个业务相似的接口长时间不返回数据。 既然整体功能是正常的,只有部分页面出现问题,而且都是实时数据无法显示,怀疑是同一个地方出现问题,于是把接口放在一起发现共同点。 都是 timeout 长时间无响应,而且不是前端资源加载的问题, F12 可以看到一个接口的请求过程,例如下图 查看代码逻辑 ,发现几个接口同时查询过一个表,登陆 mariadb ,发现 SELECT 长时间不返回。怀疑是锁表了。 以下所有示例使用 docker 启动 mysql 演示复现。 我先锁表 lock table test read; lock table test write; 发现是卡住了 mysql> select * from test; mysql> 2013 - Lost connection to MySQL server during query 查看长时间卡住的线程 查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist; 但是此命令只能显示前100条数据,要想看全部的数据,请输入 show full

一次Mariadb死锁排查过程回顾

懵懂的女人 提交于 2020-02-29 20:03:45
场景 在使用某个平台的时候,有些页面发现长时间,部分数据无法加载成功,开始排查问题。 确定是mariadb的问题的过程 访问了几个页面都是正常的,唯独某几个页面查询实时监控数据时无法加载出来, F12 查看接口发现有几个业务相似的接口长时间不返回数据。 既然整体功能是正常的,只有部分页面出现问题,而且都是实时数据无法显示,怀疑是同一个地方出现问题,于是把接口放在一起发现共同点。 都是 timeout 长时间无响应,而且不是前端资源加载的问题, F12 可以看到一个接口的请求过程,例如下图 查看代码逻辑 ,发现几个接口同时查询过一个表,登陆 mariadb ,发现 SELECT 长时间不返回。怀疑是锁表了。 以下所有示例使用 docker 启动 mysql 演示复现。 我先锁表 lock table test read; lock table test write; 发现是卡住了 mysql> select * from test; mysql> 2013 - Lost connection to MySQL server during query 查看长时间卡住的线程 查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist; 但是此命令只能显示前100条数据,要想看全部的数据,请输入 show full

MYSQL优化派生表(子查询)在From语句中的

最后都变了- 提交于 2020-02-29 15:21:31
Mysql 在5.6.3中,优化器更有效率地处理派生表( 在from语句中的子查询 ): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化。这一举措提高了性能: 1:之前版本(5.6.3),from语句中的子查询在 explain select 查看执行计划语句执行时就会物化。它导致了部分查询执行,但explain语句的目的是获取执行计划信息,而不是执行查询 该版本物化不会在explain中发生,所以explain执行计划结果的得到更快; 2:因为上面提及的,物化子查询的推迟有可能不会发生。考虑一个from语句中的子查询的结果和另一个表join(链接)查询,如果优化器先处理另一张表A,然后发现A中没有满足条件的行返回,此时join不会再继续执行,并且优化器会完全跳过物化子查询这步骤; 考虑下面的explain语句,子查询出现在form语句中; EXPLAIN SELECT * FROM (SELECT * FROM t1) AS derived_t1; 优化器避免物化子查询直到子查询的结果在查询真正执行需要时。在上面情况下,查询并没有执行,所有并没有物化(子查询); 即使查询执行时,也会要求优化器去避免物化。考虑下面的查询: SELECT * FROM t1 JOIN (SELECT t2.f1 FROM t2) AS derived

mysql——创建表和Sql语句

こ雲淡風輕ζ 提交于 2020-02-26 03:33:32
创建库的时候,要先指定 utf8, 要不然的话中文会乱码的 表格设计规范: 信息一定分析详细列多一点没事。 表格多没关系。 不到万不得已,不要轻易增加减少一个列名。 一个列中最好是独立值,不能有多值,除非不需要修改。 要设计一个唯一列,就是主键列 主键 此列的值是唯一。 此列查询最快。 Sql 语句 DROP TABLE 名字 // 删除表 CREATE TABLE 名字(列名 数据类型,列明 数据类型) // 创建表和列 如果需要必须填写的数据,在创建列的时候: CREATE TABLE 名字( 列名 数据类型 not null , 列名 数据类型 not null ) 默认值填写: CREATE TABLE 名字( 列名 数据类型 DEFAULT ‘ dasda ’, 列名 数据类型 DEFAULT ‘asdasda’ ) 设置主键列: CREATE TABLE 名字( 列名 数据类型 PRIMARY KEY , 列名 数据类型 DEFAULT ‘asdasda’ ) ** 第一个就为主键列 或者: CREATE TABLE 名字( 列名 1 数据类型 , 列名 数据类型 DEFAULT ‘asdasda’ PRIMARY KEY (列名 1 ) ) ** 第一个就为主键列 联合组建 指定表格字符集 alter 命令可执行对表的结构进行修改 : 1、添加一列 alter

MySQL数据库与表的增删改查

廉价感情. 提交于 2020-02-26 03:32:29
1.值库管理 1.1 查询所有值库   show databases; 1.2 创建一个值库   create database 值库名称   default character set 编码格式名称; 1.3 删除值库   drop database 值库名称; 1.4 修改值库语句   alter database 值库名称 default character set 格式名称; 1.3 查看值库   show create database 值库名称; 2.表管理 2.1 查看所有表   show tables; 2.2 创建表   create table 表名称(       字段名 字段类型,       字段名 字段类型,       字段名 字段类型 ) 快速构建相同表结构   create table 表名称2 like 表名称1; 2.3 查看表结构     show create table 表名称;   show columns from 表名称;   desc 表名称; 2.4 删除表   drop table 表名称; 2.5 修改表   添加字段   alert table 表名称 add column 字段名 字段类型;   删除字段   alter table 表名称 drop column 字段名;   修改字段类型   alter table

MySql的修改表操作

徘徊边缘 提交于 2020-02-25 15:29:58
表结构代码如下: mysql> show create table person; | person | CREATE TABLE `person` ( `number` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `birthday` date DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | 删除列: 复制代码 代码如下: ALTER TABLE person DROP COLUMN birthday; 添加列: 复制代码 代码如下: ALTER TABLE person ADD COLUMN birthday datetime; 修改列,把number修改为bigint: 复制代码 代码如下: ALTER TABLE person MODIFY number BIGINT NOT NULL; 或者是把number修改为id,类型为bigint: 复制代码 代码如下: ALTER TABLE person CHANGE number id BIGINT; 添加主键: 复制代码 代码如下: ALTER TABLE person ADD PRIMARY KEY (id); 删除主键: 复制代码 代码如下: ALTER TABLE person DROP

mysql修改表和列

非 Y 不嫁゛ 提交于 2020-02-25 15:29:36
mysql修改列 mysql增加列,修改列名、列属性,删除列语句 mysql修改表名,列名,列类型,添加表列,删除表列 alter table test rename test1; --修改表名 alter table test add column name varchar(10); --添加表列 alter table test drop column name; --删除表列 alter table test modify address char(10) --修改表列类型 ||alter table test change address address char(40) alter table test change column address address1 varchar(30)--修改表列名 mysql修改表 表的结构如下: mysql> show create table person; | person | CREATE TABLE `person` ( `number` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `birthday` date DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | 删除列: ALTER TABLE

Mysql的建表规范与注意事项

99封情书 提交于 2020-02-22 04:14:57
一、 表设计规范 库名、表名、字段名必须使用小写字母,“_”分割。 库名、表名、字段名必须不超过12个字符。 库名、表名、字段名见名知意,建议使用名词而不是动词。 建议使用InnoDB存储引擎。 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。 建议使用UNSIGNED存储非负数值。 建议使用INT UNSIGNED存储IPV4。 整形定义中不添加长度,比如使用INT,而不是INT(4)。 使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED。 不建议使用ENUM类型,使用TINYINT来代替。 尽可能不使用TEXT、BLOB类型。 VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。 VARCHAR(N),N尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。 表字符集选择UTF8。 使用VARBINARY存储变长字符串。 存储年使用YEAR类型。 存储日期使用DATE类型。 存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。 建议字段定义为NOT NULL。 将过大字段拆分到其他表中。