mysql创建表

mysql 复制表

匆匆过客 提交于 2019-11-28 10:08:34
mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助。 假如我们有以下这样一个表: id username password ----------------------------------- 1 admin ************* 2 sameer ************* 3 stewart ************* CREATE TABLE IF NOT EXISTS `admin` ( `id` int(6) unsigned NOT NULL auto_increment, `username` varchar(50) NOT NULL default '', `password` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据) CREATE TABLE newadmin LIKE admin 2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把 select语句 的结果建一个表。所以newadmin这个表不会有主键,索引。 CREATE

【MySQL】单表查询

我们两清 提交于 2019-11-28 07:53:02
原文: http://blog.gqylpy.com/gqy/251 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法select 字段1, 字段2 ... from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 重点在于关键字的执行优先级: from where group by having select distinct order by limit 1. 找到表:from 2. 拿着where指定的约束条件,去文件(表)中取出一条条记录 3. 将取出的一条条记录进行分组group by,如果没有group by, 则整体作为一组 4. 将分组的结果进行having过滤 5. 执行select 6. 去重 7. 将结果按条件排序:order by 8. 限制结果的显示条数 company.employee 员工id id int 姓名 name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment     varchar 薪水 salary     double 办公室 office

mysql 低版本导入表中包含两个TIMESTAMP报错问题

我的梦境 提交于 2019-11-28 07:18:55
错误代码: 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 原因: mysql版本低版本不支持在一个表里面 有2个 timestamp 类型 的列. SELECT VERSION(); 来查看一下服务器的版本 1、5.7版本的 timestamp 类型 ,在表设计时多个字段为 timestamp 时,都可以使用CURRENT_TIMESTAMP作为默认值,而且都可以根据当前时间戳更新 2、而5.5-5.6.4版本中 ,在表设计时多个字段为timestamp时候,只能有一个CURRENT_TIMESTAMP作为默认值,而且要在第一个timestamp类型字段设置。如果当前的timestamp字段为非空的话默认是根据当时时间戳更新,所以此处要注意,如果你是update_time的话是可以的,如果你是create_time的话此字段为非空,那么默认根据当前时间戳更新,你以后每次修改数据都会导致创建时间变化,这是不允许的,所以此处要注意 尽量用高版本mysql 来源: https://www.cnblogs.com/niuben/p/11398505.html

MySQL 多表查询

烈酒焚心 提交于 2019-11-28 06:15:57
多表查询 创建两张表 # 创建表 create table dep( id int, name varchar(20) ); ​ create table emp( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int ); # 插入记录 insert into dep values (200,'技术'), (201,'人力资源'), (202,'销售'), (203,'运营'); ​ insert into emp(name,sex,age,dep_id) values ('jason','male',18,200), ('egon','female',48,201), ('kevin','male',38,201), ('nick','female',28,202), ('owen','male',18,200), ('jerry','female',18,204) ; ​ # 当初我们把表分开是为了放标管理,在硬盘上确实是多张表,但是到了内存中我们应该吧他们在拼成一张表尽心查询才合理 表查询 select * from emp,dep; # 左表(emp)一条记录与右表(dep

SQL概要与表的创建

心不动则不痛 提交于 2019-11-28 06:04:48
SQL概要与表的创建 1.表的结构 ​ 关系数据库通过类似Excel 工作表那样的、由行和列组成的二维表来管理数据。用来管理数据的二维表在关系数据库中简称为表。 ​ 根据 SQL 语句的内容返回的数据同样必须是二维表的形式 ,这也是关系数据库的特征之一 。返回结果如果不是二维表的SQL 语句则无法执行。 ​ 表的 列 (垂直方向)称为 字段 ,它代表了保存在表中的数据项目。表的 行 (水平方向)称为 记录 ,它相当于一条数据。 ​ 关系数据库必须以行为单位进行数据读写。 ​ 一个单元格中只能输入一个数据。 2.SQL 语句及其种类 ​ SQL是为操作数据库而开发的语言。 ​ SQL通过一条语句来描述想要进行的操作,发送给RDBMS。 ​ SQL根据操作目的可以分为DDL、DML和DCL。 ​ SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来 描述操作的内容。 2.1.DDL ​ DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。 create :创建数据库和表等对象 drop :删除数据库和表等对象 alert :修改数据库和表等对象的结构 2.2 DML ​ DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。 select

MySQL(面试题)

爷,独闯天下 提交于 2019-11-28 03:13:23
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+树在符合某些条件

数据库之表关系,一对多、多对多、一对一(外键,级联更新级联删除)

故事扮演 提交于 2019-11-28 01:53:18
如何让两种表有代码层面上真正的关联 就必须使用外键 什么是外键? 让表与表有硬性层面上的关系 一对多(Foreign Key) foreign key 外键约束 1.在创建表的时候 必须先创建被关联表 2.插入数据的时候 也必须先插入被关联表的数据 #部门表 id dep_name dep_sesc 1 技术部 技术支持 2 管理部 公司经营管理 3 销售部 负责产品的销售和后期的客户关系维护 4 咨询部 公司产品介绍 #先创建被关联表 create table dep( id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128) ); #再创建关联表 create table emp( id int primary key auto_increment, emp_name varchar(16), emp_gender enum('male','female','others') default 'male', dep_id int, foreign key(dep_id) references dep(id) ); #先插入被关联表的数据 insert into dep(dep_name,dep_desc) values('技术部','技术支持'), ('管理部','公司经营管理'

mysql表与表之间建关系

你说的曾经没有我的故事 提交于 2019-11-28 01:40:04
一对多 定义一张部门员工表 id name gender dep_name dep_desc 1 yzy male 教学部 教书育人 2 yolo male 外交部 形象大使 3 zmm female 教学部 教书育人 4 czh male 教学部 教书育人 5 lc male 技术部 技术能力有限部门 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 上述的弊端产生原因类似于把代码全部写在一个py文件中,应该怎么做? >> 解耦合! 将上述两张表拆成员工的部门两张表 分析表数据之间的关系:多个员工对应一个部门,一个部门对应多个员工.禁止一个员工对应多个部门 如何查找表与表之间的关系   确立表与表之间的关系 一定要换位思考(必须两方都考虑周全之后才能得出结论)   以员工表和部门表为例     先站在员工表看能否有多个员工对应一个部门       翻译过来:一个部门对应多个员工(可以!!!)       (暂时只能确定员工单向多对一部门)     再站在部门表看能否有多个部门对应一个员工       翻译过来:一个员工能否属于多个部门(不可以!!!)   结论:员工表和部门表之间仅仅是单向的多对一.那么它们的关系就是"一对多"   表关系中没有多对一一说,只有一对多 如何让两张表有代码层面上真正的关联 就必须使用 外键 foreign key

Mysql表操作

老子叫甜甜 提交于 2019-11-28 01:15:51
一、Mysql存储引擎 1.innodb MySql 5.6 版本默认的存储引擎。查询速度较myisam更慢,但是更安全InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。 2.myisam MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。 3.memory 在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失 4.blackhole 黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。 二、创建表的完整语法 #语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #注意: 1. 在同一张表中,字段名不能相同 2. 宽度和约束条件可选,字段名和类型是必须的 3. 最后一个字段后不能加逗号! # 补充: # 1

表与表关系

和自甴很熟 提交于 2019-11-28 01:07:44
外键 什么是外键:让表与表有硬性层面上的关系 使用外键条件:1、表类型必须是InnoDB存储引擎。2、关联的字段即references指定的另外一个表的字段必须要唯一。 注意:1、创建表时必须先创建被关联表。2、插入数据时,也必须先插入被关联表数据。 一对多 案例1:部门和员工 思考: 一个部门可以有多个员工吗?可以 一个员工可以有多个部门吗?不可以 结论:部门与员工的关系是一对多。且外键创建在多的一方。 案例二:班级和学生 一个班级可以有多个学生吗?可以 一个学生可以有多个班级吗?不可以 结论:一对多,外键建立在多的一方即学生表里面。 案例三:老师和课程 一个课程可以有多个老师吗?可以。 一个老师可以有多个课程吗?不可以,一个老师只能教一门课程,语文老师不能同时也是数学老师,不专业。 结论:一对多,老师表里面应该设置外键。 只有一方可以一条数据对应对方的多条数据,这种关系叫做一对多。 ''' 创建部门表: ''' create table department( id int primary key auto_increment, name varchar(20) not null, dep_desc varchar(200) ); ''' 创建员工表 ''' create table employee( id int primary key auto_increment,