mysql创建表

MySQL数据库初识

非 Y 不嫁゛ 提交于 2019-11-30 02:13:01
一 数据库概述 1. 数据库???   什么是数据库呢?   先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。   百度的貌似不好理解啊,让我说啊,数据库是存储数据的地方,超哥,你这不是废话么?这位同学,你你你你你说的对,哈哈,存数据的地方是存在哪里呢,存在硬盘上,为什么不是存在内存里面,因为内存无法永久保存。之前我们存数据都是使用的文件,在一个word文档里面写一些羞羞的网址,然后保存,就存储到硬盘上了。有同学就会说了,超哥,我这通过文件不是也将数据保存上了吗?是的,没毛病,但是你想,通过文件来操作数据,效率是不是很低,首先打开关闭就比较慢,其次是我们操作起来也比较麻烦,对不对,如果我想记录一条关于我个人信息的数据,我使用文档来存,是不是很不友好,并且我们要查数据的时候,看图1:图1是一个word里面记录的信息,如果我想查询出所有人的名字,这个操作是不是就很难搞定了,来来来,配合起来~~,你应该说是的,那我就接着说,有同学可能就会说了,老师我用excel啊,看图2,一列就搞定了,没毛病,但是你想打开操作excel效率低不低。并且通过你自己写的程序来操作这些文件是不是很麻烦

mysql索引使用

前提是你 提交于 2019-11-29 22:42:57
索引类型分为普通索引、唯一索引、主键索引和组合索引 索引方式主要有 B-Tree(包括B+Tree)索引,Hash索引 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL , username VARCHAR (16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin。 在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。 索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。 MySQL索引类型包括: (1)普通索引 这是最基本的索引,它没有任何限制。它有以下几种创建方式: ◆创建索引 CREATE INDEX indexName ON mytable(username(length));

MySQL表的完整性约束

前提是你 提交于 2019-11-29 21:46:06
一 介绍   约束条件与数据类型的宽度一样,都是可选参数   作用:用于保证数据的完整性和一致性   主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充   说明:    1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20 3. 是否是key 主键 primary key 外键 foreign key 索引 (index,unique...) 二 not null与default   是否可空,null表示空,非字符串   not null - 不可空   null - 可空    ​  

Mysql的建表规范与注意事项

这一生的挚爱 提交于 2019-11-29 20:44:41
一、库名、表名、字段名必须使用小写字母,“_”分割;库名、表名、字段名必须不超过12个字符;库名、表名、字段名见名知意,建议使用名词而不是动词。 二、建议使用InnoDB存储引擎。 存储引擎:innoDb支持事物,myisam不支持事物,建议使用innoDb, 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好。 (1) MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件: 1.tb_demo.frm,存储表定义; 2.tb_demo.MYD,存储数据; 3.tb_demo.MYI,存储索引。 MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用: 1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。 2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。 (2) InnoDB是一个健壮的事务型存储引擎

Mysql干货

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

mysql 表对象缓存

主宰稳场 提交于 2019-11-29 11:06:42
mysql 表对象缓存 在mysql server层有两个与table相关的结构,分别为TABLE、TABLE_SHARE。在打开表时会先找TABLE缓存,若无,从TABLE_SHARE的缓存空间找到对应缓存创建表实例TABLE,若TABLE_SHARE也没用这从frm读取表信息创建TABLE_SHARE。 TABLE_SHARE TABLE_SHARE是表定义缓存,是一个静态表缓存,唯一对应一张表,所有用户都共享这个表对象。 其内容从系统表获取(frm),它保存在table_def_cache(hash表,key为表名(含库名))中。 参数: table_definition_cache TABLE(表实例) 相对于TABLE_SHARE而言,Table可以看成是动态的,其内容会改变,会记录表操作状态。 每个线程都会有TABLE对象,对应于同一个TABLE_SHARE. TABLE中有引擎handler,用来操作引擎数据。 当表实例不用时会对表进行缓存,再次使用直接取出即可,在缓存时可能需要调用ha_reset恢复实例状态。(其中会调用handler::reset(),用来重置引擎表状态), handler有可能被复用,如果不定义reset,可能出错 。 缓存在表实例缓存空间,同时由TABLE_SHARE的free_table和used_table对表实例的使用情况进行管理。

mysql四-2:多表查询

孤街醉人 提交于 2019-11-29 09:10:05
一、介绍 本节主题: 多表连接查询 复合条件连接查询 子查询 准备表: #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int ); #插入数据 insert into department values (200,'技术'), (201,'人力资源'), (202,'销售'), (203,'运营'); insert into employee(name,sex,age,dep_id) values ('egon','male',18,200), ('alex','female',48,201), ('wupeiqi','male',38,201), ('yuanhao','female',28,202), ('liwenzhou','male',18,200), ('jingliyang','female',18,204) ; #查看表结构和数据 mysql> desc department; +-------+-----------

数据库---表---多表查询

老子叫甜甜 提交于 2019-11-29 09:09:25
多表查询 多表连接查询 复合条件连接查询 子查询 一、准备表 #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int ); #插入数据 insert into department values (200,'技术'), (201,'人力资源'), (202,'销售'), (203,'运营'); insert into employee(name,sex,age,dep_id) values ('egon','male',18,200), ('alex','female',48,201), ('wupeiqi','male',38,201), ('yuanhao','female',28,202), ('liwenzhou','male',18,200), ('jingliyang','female',18,204) ; #查看表结构和数据 mysql> desc department; +-------+-------------+--

mysql 建表选项和约束

跟風遠走 提交于 2019-11-29 08:35:30
1.建表选项   指定列选项:      default :定义列的默认值       当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没有,则为null。              MariaDB [wxy]> create table bigcome (         -> id int not null primary key,         -> name varchar(128) not null,         -> sex varchar(2) default 'm'         -> );       在INSERT和UPDATE语句中使用 DEFAULT 关键字显式地给列赋默认值:         insert into bigcome values(1,'bigcome', default );          update bigcome set sex= default where id=1;       函数 default (column)可以得到一个列的默认值:         select default(sex) from bigcome;      comment :用来给列添加注释,最多255个字符,注释会保存到数据字典中       create table wxy ( id int

MySQL.常见表选项及约束

孤人 提交于 2019-11-29 08:35:21
1.create table 选项   1.指定列选项 default、comment   2.指定表选项 engine、auto_increment、comment 2.create table 约束   1.非空约束:not null   2.唯一约束:unique   3.主键约束: primary key   4.外键: foreign key   5.检查enum、set:chect 一、create table 选项  a. 定义列的时候,指定列选项   1.default<literal>:定义列的默认值    当插入一个新行到表中并且没有给该列明确赋值,如果定义了列的默认值,将自动得到默认值,如果没有,则为null    也可以在insert和 update 语句中使用 default 关键字给默认值赋值,函数default(column)也得到一个列的默认值   2.comment 用来给列添加注释,最多为255个字符,注释将会保存在数据字典中   b.  在create table 语句中的表选项    1.engine :指定表使用的储存引擎    #储存引擎:决定了表中的数据如何存储以及如何访问,还有事务如何处理                       MySQL中允许对每个表使用不同的储存引擎,如果在create table 中没有使用储存引擎