mysql创建表

MySQL 表

女生的网名这么多〃 提交于 2019-12-05 22:21:42
1. 建表的基本语法: # 语法 CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];# 表定义选项的格式:<字段> <type>,<字段> <type>, ... 在当前数据库下创建表 # 切换数据库 mysql> use test_db Database changed # 在当前数据库创建表 student mysql> create table student (id INT(5),name varchar(10),age int(3)); Query OK, 0 rows affected, 2 warnings (0.04 sec) # 显示当前数据库的表 mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | student | +-------------------+ 1 row in set (0.00 sec) 在其他数据库下创建表:使用<DBname>.<TableName> mysql> create table atmuser.test (name varchar(5)); Query OK, 0 rows affected (0.03 sec) mysql> desc atmuser.test; +-----

mysql数据库创建表

为君一笑 提交于 2019-12-05 17:26:48
表是数据库存储数据的基本单位。一个表包含若干字段或记录; 语法: CREATE TABLE 表名( 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], .。。。。。 属性名 数据表格 [完整性约束条件] ); 约束条件 说明 PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的记录 FOREIGN KEY 标识该属性为该表的外键,与某表的主键关联 NOT NULL 标识该属性不能为空 UNIQUE 标识该属性的值是唯一的 AUTO_INCREMENT 标识该属性的值自动增加 DEFAULT 为该属性设置默认值 创建图书类别表:t_bookType CREATE TABLE t_booktype( id INT PRIMARY KEYAUTO_INCREMENT, bookTypeName VARCHAR(20), bookTypeDesc VARCHAR(200) ); 创建图书表:t_book CREATE TABLE t_book( id INT PRIMARYKEYAUTO_INCREMENT, bookName VARCHAR(20), author VARCHAR(10), price DECIMAL(6,2), bookTypeId INT, CONSTRAINT `fk` FOREIGN KEY (`bookTypeId`)

mysql基础篇--表的管理

时光毁灭记忆、已成空白 提交于 2019-12-05 17:26:06
表的创建 常见的数据类型 数值型: 整型 tinyint、smallint、mediumint、int/integer、bigint 特点: 1.如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字 2.如果插入的数值超出了正型的范围,会报out of range异常,并且插入临界值 3.如果不设置长度,会有默认的长度 长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用! 小数型 浮点型:float(M,D) double(M,D) 定点型:decimal(M,D) 特点: 1.M:位数(整数部位+小数部位) D:(小数部位) 如果超过范围,则插入临界值 2.M和D都可以省略 如果是decimal,则M默认是10,D默认是0 如果是float和double,则会根据插入的数值的精度来决定精度 3.定点型的精度较高,如果要求插入的数值精度要求高如货币运算等则考虑使用 字符型 char varchar text blob(较大的二进制) enum(用于保存枚举) set(用于保存集合) 特点 写法 M的意思 特点 空间的耗费 效率 char char(M) 最大的字符数,可以省略,默认为1 固定长度的字符 比较耗费 高 varchar varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省 低

MySQL 复制表结构和表数据

别等时光非礼了梦想. 提交于 2019-12-05 12:04:00
1、前言   在功能开发完毕,在本地或者测试环境进行测试时,经常会遇到这种情况:有专门的测试数据,测试过程会涉及到修改表中的数据,经常不能一次测试成功,所以,每次执行测试后,原来表中的数据其实已经被修改了,下一次测试,就需要将数据恢复。   我一般的做法是:先创建一个副本表,比如测试使用的user表,我在测试前创建副本表user_bak,每次测试后,将user表清空,然后将副本表user_bak的数据导入到user表中。   上面的操作是对一个table做备份,如果涉及到的table太多,可以创建database的副本。   接下来我将对此处的表结构复制以及表数据复制进行阐述, 并非数据库的复制原理 !!!!   下面是staff表的表结构 create table staff ( id int not null auto_increment comment '自增id', name char(20) not null comment '用户姓名', dep char(20) not null comment '所属部门', gender tinyint not null default 1 comment '性别:1男; 2女', addr char(30) not null comment '地址', primary key(id), index idx_1 (name,

mysql-表关联和约束

冷暖自知 提交于 2019-12-04 23:44:17
表关联和约束 表关系: 一对一 字段设置不可重复unique 一对多 普通外键关联 多对多 中间表关联 创建表关联--外键: 1 create table 时,在最后面加入 constraint name foreign key(ziduan) referncese 表(字段) 关联索引名 从表字段 主表字段 2 alter table person add constraint dept_fk foreign key(dept_id) references dept(id)[on delete cascade on update cascade]; 通过外键名称解除外键约束 alter table person drop foreign key dept_fk;#此时索引还存在,也需要手动解除 外键约束: 1. 从表约束字段填入内容必须是主表内存在的 2. 从表引用记录,主表不可删除(默认),可修改非引用字段内容 3.设置可删除 on delete cascade on updare cascade 主表删除更新记录,从表引用记录同步更新删除 on delete set null on update set null 主表删除更新记录,从表为null 来源: https://www.cnblogs.com/chenlulu1122/p/11888697.html

mysql-库/表操作

微笑、不失礼 提交于 2019-12-04 23:42:59
##数据库 show databases;查看所有库 create database stu charset=utf8;创建库 use stu;切换操作库 select database();查看待操作库 drop database stu;删除库 ##数据表 show tables;显示库内所有表 create table student(id int primary key auto_increment,name char(32),age tinyint,sex enum('m','w'),index(name));创建表 创建 表 表名 字段id 整型 主键 自增 ,字段name 字符型, 年龄 小整型 , 性别 枚举型, 以字段name建普通索引(索引名自动生成name) ; drop table student;删除表 show create table student;查看创建表语句 desc student;查看表结构 来源: https://www.cnblogs.com/chenlulu1122/p/11888663.html

mysql的分区和分表

删除回忆录丶 提交于 2019-12-04 22:09:56
1,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看 mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 2. mysql分表。 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。 根据个人经验,mysql执行一个sql的过程如下: 1,接收到sql;2,把sql放到排队队列中 ;3,执行sql;4,返回执行结果。在这个执行过程中最花时间在什么地方呢? 第一,是排队等待的时间,第二,sql的执行时间。其实这二个是一回事,等待的同时,肯定有sql在执行。所以我们要缩短sql的执行时间。 mysql中有一种机制是表锁定和行锁定,为什么要出现这种机制,是为了保证数据的完整性,我举个例子来说吧,如果有二个sql都要修改同一张表的同一条数据,这个时候怎么办呢,是不是二个sql都可以同时修改这条数据呢?很显然mysql对这种情况的处理是,一种是表锁定(myisam存储引擎),一个是行锁定(innodb存储引擎)。 表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作

分库、分区、分表

跟風遠走 提交于 2019-12-04 21:07:05
分库分区分表概念 分区   就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的 分表   就是把一张数据量很大的表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。表名可以按照某种业务hash进行映射。单表数据量大于500万或者并发大于1200时考虑分表。 分库   一旦分表,一个库中的表会越来越多。当一个数据库的表数量到达一定的量时(>200),此时应该考虑分库。 一、分区   mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表索引的。如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表对应的三个文件,分割成许多个小块,这样呢,我们查找一条数据时,就不用全部查找了,只要知道这条数据在哪一块,然后在那一块找就行了。如果表的数据太大,可能一个磁盘放不下,这个时候,我们可以把数据分配到不同的磁盘里面去。 分区的二种方式 a,横向分区 什么是横向分区呢?就是横着来分区了,举例来说明一下,假如有100W条数据,分成十份

MySql 表结构修改、约束条件、表关系

核能气质少年 提交于 2019-12-04 18:45:39
表结构修改(alter) 查看表的结构:desc 表名; 修改表名:alter table 表名 rename to 新表名; 修改字段名:alter table 表名 change 旧字段名 新字段名 数据类型; 修改字段类型:alter table 表名 modify 字段名 数据类型; 添加字段:alter table 表名 add [column] 新字段 数据类型; 删除字段:alter table 表名 drop [column] 字段名; 约束条件 约束是一种限制,通过对表中的数据做出限制,来确保表中数据的完整性,唯一性 默认约束(default) 插入数据的时候,如果没有明确为字段赋值,则自动赋予默认值 在没有设置默认值的情况下,默认值为NULL 非空约束(not null) 限制一个字段的值不能为空,insert的时候必须为该字段赋值 空字符不等于NULL 唯一约束(unique key) 限制一个字段的值不重复,该字段的数据不能出现重复的 确保字段中值的唯一 主键约束(primary key) 通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键 主键 = 非空 + 唯一 自增长约束(auto_increment) 自动编号,和主键组合使用,一个表里面只能有一个自增长 auto_increment 要求用在主键上 id int primary key

MySQL多表查询

本小妞迷上赌 提交于 2019-12-04 09:28:35
MySQL多表查询 一、准备 建表与数据准备: # 建表 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 ('nick','male',18,200), ('jason','female',48,201), ('sean','male',38,201), ('tank','female',28,202), ('oscar','male',18,200), ('mac','female',18,204) ; # 查看表结构和数据 mysql> desc department; +-------+-------------+------+-----+---------