mysql进⼊数据库表_数据库(Mysql表操作)⼀、mysql存储引擎
1.1 常⽤引擎:
第⼀种⽅式: (Myisam: 是5.5之前默认的存储引擎)
数据存在硬盘上,存三个⽂件,表结构,数据,和搜索⽬录
既不⽀持事务、也不⽀持外键、不⽀持⾏级锁
只⽀持表锁
对于只读操作⽐较多的情况 查询速度相对快
第⼆种⽅式: (Innodb: 是5.6之后的默认存储引擎)
数据存在硬盘上,存两个⽂件,表结构,(数据和搜索⽬录)
⽀持事务
⽀持⾏级锁
⽀持外键
第三种⽅式: (Memory)
数据存在内存中,存⼀个⽂件,表结构(在硬盘上)
数据容易丢失,但读写速度都快
1.2 存储引擎相关sql语句:
查看当前的默认存储引擎:
mysql> show variables like "default_storage_engine";
查询当前数据库⽀持的存储引擎
mysql> show engines \G;
View Code
1.3 在建表时指定引擎类型:
mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM;
mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;
也可以使⽤alter table语句,修改⼀个已经存在的表的存储引擎。
mysql> alter table ai engine = innodb;
View Code
1.4 配置⽂件中指定(my.ini):
#my.ini⽂件
[mysqld]
default-storage-engine=INNODB
View Code
⼆、创建表与查询结构
2.1 创建表的语法结构:
#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);#注意:
1. 在同⼀张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的
View Code
2.2 查看表结构:
describe [tablename];这种⽅法和desc [tablename];效果相同;可以查看当前的表结构
show create table语法。除了可以看到表定义之外,还可以看到engine(存储引擎)和charset(字符集)等信息。(\G选项的含义是是的记录能够竖向排列,以便更好的显⽰内容较长的记录。)
#查看表结构:
mysql> describe staff_info; #⽅式⼀
mysql> desc staff_info; #⽅式⼆
mysql> show create table staff_info\G; #⽅式三
View Code
三、mysql中的数据类型
3.1 常⽤数据类型:
mysql中的基础数据类型:
数值类型:
int-->⼤整数值(4字节)
float-->单精度(4字节)
字符串类型:
char--> 定长字符串(0-255字节)
varchar--> 变长字符串(0-65535字节)
时间类型:
datetime--> 年⽉⽇时分秒(YYYY-MM-DD HH:MM:SS)
set和enum类型:
enum-->单选(⼀次选取⼀个值)
set--> 多选(⼀次选择多个值)
View Code
3.2 ⽰例:
#整型与浮点数⽰例:
i系列:
mysql创建表数据类型create table i1(id1 int,id2 tinyint,id3 int unsigned);#tinyint(⼩整数值:1字节)
create table i2(id1 int(2),id2 int(11)); #对int类型的长度进⾏的约束⽆效
浮点数系列 f系列:
create table f1(f float(5,2),d double(5,2),d2 decimal(5,2));
create table f2(f float,d double,d2 decimal);
create table f3(d double,d2 decimal(65,30));#总结:#float精确到⼩数点后5位#double能多精确⼀些位数,但仍然存在不精确的情况#decimal默认是整数,但是通过设置,最多可以表⽰到⼩数点后30位
整型与浮点数⽰例
#⽇期:
#year(类型:now(),2019) # now()表⽰当前时间
#date(类型:now(),20191010 ,'2019-01-01')
#time(类型:now(),121212,'12:12:12')
#datetime(类型:now(),20191010121212,'2019-01-01 12:12:12')
#timestamp(建议少⽤:时间戳时间(4字节)快结束了)
#时间⽰例:
#datetime 能表⽰的时间范围⼤ 可以为空,没有默认值
#timestamp 能表⽰的时间范围⼩ 不能为空,默认值是当前时间
create table time1(y year,d date,t time);
insert into time1 values (now(),now(),now());#2018-09-21 | 14:51:51 | 2018-09-21 14:51:51
insert into time1 values (null,null,null); #NULL | NULL | NULL
create table time2(dt datetime,ts timestamp);
insert into time2 values(null, null);#NULL | 2019-04-23 18:15:04
create table time2(dt datetime default current_timestamp,ts timestamp);#⼈为设置datetime类型的默认值是当前时间
⽇期类型⽰例
#字符串:#char 能表⽰的长度⼩,浪费存储空间,读写效率快
#定长字符串
#在显⽰的时候会去掉所有空格显⽰,对⽤户的视觉造成欺骗#varchar 能表⽰的长度⼤,节省存储空间,读写效率慢
#变长字符串
#varchar(5) 'ab'-->'ab2' 'abc'-->'abc3' 'abcde'-->'abcde5' # 存储样式2表⽰ab为2个长度
#⽰例:
create table s1(c char(4),v varchar(4));
insert into s1 values ('ab','ab'); #在检索的时候char数据类型会去掉空格
select length(v),length(c) from s1; #来看看对查询结果计算的长度
select concat(v,'+'),concat(c,'+') from s1; #给结果拼上⼀个加号会更清楚
insert into s1 values ('abcd','abcd'); #当存储的长度超出定义的长度,会截断
字符串类型⽰例
#enum和set:
#枚举,单选,且⾃动剔除不存在的选项
#enum('male','female')
#集合,多选,⾃动剔除不存在的选项,⾃动去重
#set('洗脚','洗头','抽烟','喝酒','烫头')
#⽰例:
create table es(name char(10),sex enum('male','female'),hobby set('洗脚','洗头','抽烟','喝酒','烫头'));
insert into es values('Lisa','male','烫头,抽烟,洗脚,按摩');
insert into es values('Annie','⼈妖','烫头'); #不存在的选项则⽆法添加
insert into es values('Andy','male','抽烟,喝酒,喝酒,喝酒') #⾃动去重
enum和set⽰例
四、mysql表的完整性约束
为了防⽌不符合规范的数据进⼊数据库,在⽤户对数据进⾏插⼊、修改、删除等操作时,DBMS⾃动按照⼀定的约束条件对数据进⾏监测,使不符合规范的数据不能进⼊数据库,以确保数据库中存储的数据正确、有效、相容。
约束条件与数据类型的宽度⼀样,都是可选参数,主要分为以下⼏种:
#字段类型:#设置整形⽆符号 int unsigned#设置默认值 default#是否可以为空 not null#是否唯⼀ unique#⾃增 auto_increment#主键 primary key#外建 foreign key
View Code
⽰例:
#not null类型⽰例:#表结构 : id,name,phone,sex
create table stu1(
id int,
name char(12) not null, #不能为NULL
phone char(11),
sex enum('male','female')
);
not null类型⽰例
#not null + default 类型⽰例:
create table stu2(
id int,
name char(12) notnull,
phone char(11),
sex enum('male','female') not null default 'male')
not null + default 类型⽰例
#唯⼀(unique)⽰例:#unique只是约束在char数据类型内不能重复,但是不能约束null
id name ident
create table stu3(
id int,
name char(12),
ident char(18) unique
)
唯⼀(unique)⽰例
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论