mysql创建表

MySQL数据库2表的增删改查

谁说胖子不能爱 提交于 2019-12-02 19:31:09
目录 一、数据表(文件): 1.1增 1.2查看表内数据 1.3改 1.4删除列表 1.5查看库内列表及表结构 1.6复制表结构 二、列类型:(*********) 2.1数字 2.2字符串 2.3时间日期类型 2.4枚举ENUM 三、操作表数据行 3.1增加表中的数据 3.2 删除表中的数据 3.3对列表中的某个值进行修改 3.4查询表中的元素 一、数据表(文件): 1.1增 1.1.1列表的创建: create table 表名(字段名 列约束 [可选的参数] , ### 记住加逗号 字段名 列约束 [可选的参数] , ### 记住加逗号 字段名 列约束 [可选的参数] ### 最后一行不加逗号 )charset=utf-8; ### 后面加分号 例子: create table t1( id int, name char(5) )charset=utf-8; 1.1.2增加数据: insert into 表明 (列1,,列2) values (值1,'值2'); 例子:insert into u1(id ,name) values(1,'guanghao'); inster into u2(id,name) values(1,'guanghao1'); 1.2查看表内数据 select 列1,列2 from 表名;(*代表查询所有的列) 例子: ​ mysql> select

Bug解决:mysql 创建表字段Double类型长度

南笙酒味 提交于 2019-12-02 18:47:14
excel导入数据进行新增时,发现安装高度和可视距离在数据库创建都是double类型 程序跑完,执行成功后,数据库的数据是2,小数点后的数据没有了 打印sql并执行后发现sql并没有错误, 检查数据库结构,发现 创建的height字段为double(4,0),4位长度 ,小数点后0位,所以没办法把0.5存入 修改数据库结构为double(4,2),保存后再次执行sql,成功存入2.5 来源: https://www.cnblogs.com/koudaiyoutang/p/11758252.html

Mysql分库分表记录

自古美人都是妖i 提交于 2019-12-02 17:48:03
1、下载安装mysql(在5.6上做的验证); Linux上默认安装目录:/usr/share/mysql,安装后可以通过mysql -u root -p登录mysql: 2、配置master a) 将安装后的mysql目录下的my.cnf拷贝到Linux的配置环境/etc/目录下。 b) 修改my.cnf配置: server-id = 1 # 主机标示,整数 log-bin = master-bin.log # slave复制日志文件 log-bin-index = master-bin.index binlog-do-db =db_test # 需要同步到slave的数据库 binlog-ignore-db =mysql # 不需要 同步的数据库 #innodb_flush_log_at_trx_commit=1 #sync_binlog=1 配置完后重启mysql后会在数据库目录/var/lib/mysql生成相应的日志文件: c) 通过show master status语句查看master信息 红框中就是slave中需要复制的文件以及开始同步数据的起始位置。 d) ‍ ‍ 在master上创建用户备份的用户并赋值REPLICATION SLAVE 权限,用于 slave 连接 master GRANT REPLICATION SLAVE ON *.* TO 'slave'

四、修改表语句

蹲街弑〆低调 提交于 2019-12-02 16:17:13
1、建立一个名为student的表:CREATE TABLE student_tb mysql> USE itcast; Database changed mysql> CREATE TABLE student_tb -> ( -> id INT(20), -> name CHAR(20), -> age INT(2), -> sex CHAR(4) -> ); Query OK, 0 rows affected 2、显示创建表的全部信息:SHOW TABLES mysql> SHOW TABLES; +------------------+ | Tables_in_itcast | +------------------+ | student_tb | | tb_grade | +------------------+ 2 rows in set 3、显示创建的student的表:SHOW CREATE TABLE student_tb mysql> SHOW CREATE TABLE student_tb; +------------+---------------------------------------------------------------------------------------------------------------------------

如何优化MySQL千万级大表

风格不统一 提交于 2019-12-02 13:05:53
很好的一篇博客,转载 如何优化MySQL千万级大表 原文链接:: https://blog.csdn.net/yangjianrong1985/article/details/102675334 千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。 从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。 既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分: “千万级”,“大表”,“优化”, 也分别对应我们在图中标识的 “数据量”,“对象”和“目标”。 我来逐步展开说明一下,从而给出一系列的解决方案。 1.数据量:千万级 千万级其实只是一个感官的数字,就是我们印象中的数据量大。 这里我们需要把这个概念细化,因为随着业务和时间的变化,数据量也会有变化,我们应该是带着一种动态思维来审视这个指标,从而对于不同的场景我们应该有不同的处理策略。 1) 数据量为千万级,可能达到亿级或者更高 通常是一些数据流水,日志记录的业务,里面的数据随着时间的增长会逐步增多,超过千万门槛是很容易的一件事情。 2) 数据量为千万级,是一个相对稳定的数据量 如果数据量相对稳定,通常是在一些偏向于状态的数据,比如有1000万用户

多表关系和查询

空扰寡人 提交于 2019-12-02 11:32:32
多表关系 社会中存储需要可以构建成表的数据, 它们形成的表,往往之间存储某种或某些社会关系, mysql数据库建立表结构就是社会中产生的各种数据, 分门别类管理 但mysql建立的(代码层次的)表之间, 同样需要处理表与表之间的关系 形成了 多对一 | 多对多 | 一对一 三种关系 """ 一对一:丈夫-妻子,用户-身份证,作者-作者详情 一对多:部门-员工,班级-学生,书-出版社 多对多:老师-班级,课程-学生,出版社-作者 """ # 书 - 出版社 - 作者 - 作者详情 外键分布 # 外键是 建立表与表关联 的字段,通常 一个表的外键 是 另一个表的主键(唯一键也可以) # 一对一:外键在任何一方都可以,此时外键要设置 唯一键 """ 作者(author):id,name,sex,age,mobile 作者详情(author_detail): id,info,address,author_id ---------------------------------------------------- 作者(author):id,name,sex,age,mobile, detail_id 1 Tom 1 2 Bom 2 3 Bob 3 作者详情(author_detail): id,info,address 1 Tom_info 2 Bom_info """ # 一对多

表操作和mysql支持的数据类型

狂风中的少年 提交于 2019-12-02 11:31:10
表操作 表的基本操作 前提:先选取要操作的数据库 1)进入指定库 mysql>:use db1; 2)确定当前使用的数据库 mysql>:select database(); 3)查看当前数据库已有表 mysql>:show tables; 4)增加,创建表(字段1 类型, ..., 字段n 类型) mysql>:create table 表名(字段们); eg>: create table student(name char(16), age int); eg>: create table t1(name varchar(16), age int); 5)查看创建表的详细信息 mysql>:show create table 表名; eg>: show create table t1; 4)查看创建表的结构(字段结构信息) mysql>:desc 表名; eg>:desc t1; 5)删除表 mysql>: drop table 表名; eg>: drop table teacher; 创建表的完整语法 # 长度和约束在某些情况下是可以省略的 mysql>: create table 表名 ( 属性名1 类型(长度) 约束, ... 属性名n 类型(长度) 约束 ) engine=引擎 default charset=utf8; ''' create table 表名( 字段名1

MySQL 性能优化总结

本小妞迷上赌 提交于 2019-12-02 10:53:54
一、影响mysql的性能因素 io: 磁盘IO、随机IO、网络IO 扫描行数 内存、临时表、key cache、query cache cpu:排序、分组查询、distinct查询 事务导致的表锁等 一条慢sql查询消耗的性能 > 1000条快查询消耗的性能。性能优化归根结底就是查询语句的优化,如何写出高效的查询语句呢? 对mysql的索引结构要有一定深度的了解,才能更好的写出高效的查询语句。 二、b+ tree结构索引的特点 b+tree 适应于全键值、键值范围或左前缀匹配查找 支持order by排序 b+ tree 索引不支持跳过索引中的列查找 三、hash结构索引特点 hash索引是基于hash表实现。 全值匹配、只有全键值精确匹配才可以查到,也就是说只有等值比较,如:=、in 不支持范围、部分匹配查找 不支持排序 当hash冲突较多的话,索引维护代价较高,查询性能也会受到影响。 四、聚簇索引的select,没有union和子查询 MySQL innodb存储引擎是基于聚簇索引构建而来,一般是基于主键id构建的b+tree索引和数据行而来, 如果表不存在主键,那么mysql会自动选择其他的非空的索引字段;如果非空索引字段不存在,而mysql内部会自动生成内部的唯一标识作为主键构建聚簇索引。 插入速度严重依赖于插入顺序。当主键不是数值自增长类型,而是varchar类型

mysql 索引基本概念

人盡茶涼 提交于 2019-12-02 06:28:51
1. 什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找. 2. 索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3. Hash索引和B+树所有有什么区别或者说优劣呢? 首先要知道Hash索引和B+树索引的底层实现原理: hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据.B+树底层实现是多路平衡查找树.对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据. 那么可以看出他们有以下的不同: hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询. 因为在hash索引中经过hash函数建立索引之后,索引的顺序与原顺序无法保持一致,不能支持范围查询.而B+树的的所有节点皆遵循(左节点小于父节点,右节点大于父节点,多叉树也类似),天然支持范围. hash索引不支持使用索引进行排序,原理同上. hash索引不支持模糊查询以及多列索引的最左前缀匹配.原理也是因为hash函数的不可预测. AAAA 和 AAAAB 的索引没有相关性. hash索引任何时候都避免不了回表查询数据,而B+树在符合某些条件

mysql 为大表添加索引,导致超时的解决办法

只愿长相守 提交于 2019-12-02 05:28:59
简单的创建索引语句 : create unique index inxName on table A('Col') 。 如果表数据量不大,没有问题,但是数据超过千万,可能你等了半天,却告知你超时了。 网上查到解决方案: 1. 复制表A 的数据结构 , 不复制数据 create table B like A; 2. 表B加上你需要的索引 3. 把原有数据导入新表 4. 修改表A 的名称为A_old , 修改B表的 表名为A. 我的问题出在步骤3. 使用如下语句导入A表数据到B : insert into B select * from A; 执行了半天,又提示错误 table x is full。 网上找到另一种导入方式,即把A表数据导入文件,然后load 进B表 select * from A into outfile '/var/money.txt'; load data infile '/var/money.txt' into table B; -- 这个路径需要和show variables like '%secure%'; 一致 我执行的时候提示没有权限,需要开启secure_file_priv 相关权限 ,我没有root用户权限,所以就放弃该方案了。 解决: insert into B select * from A; 错误提示 table x is full ,