语法:create database 数据库名;
语法:show databases 检察已存在数据库
举例:
Mysql->create database zytest; 注重每一条要以;号末端 Mysql->show databases;查询是不是建立胜利 >use zytest;
2》删除数据库:
语法:drop database 数据库名字;<运用此敕令,请注重>
举例:
Mysql->drop database zytest; 删除zytest
Mysql->show databases; 查询是不是删除胜利
3》存储引擎引见:
1>innoDB引擎
innoDB是mysql的一种存储引擎,inodb给mysql的表供应了事件日记,回滚、奔溃、修复才能和多版本并发掌握的事件平安。Mysql从3.23.34a最先包含 innoDB存储引擎.
innoDB是第一个供应外键束缚的表引擎,而且对innoDB对事件处置惩罚的才能。也是别的引擎没法与之对抗的。,
innodb支撑自动增长列运用auto_increment,自动增长列不值不能为空
innodb 存储引擎中支撑外键Z(foreign key),外键地点的表为子表,外键所依靠的表为父母,父表中的被子表外检关联的字段必需是主键,当删除、更新父表 的某条信息时,子表也必需有响应的转变,
innodb存储引擎中,建立表的表构造存储在.frm文件中,数据和索引存储在innodb_data_home_dir 和 innodb_data_file_path定义的表空间.
元数据文件一切的表的ibdata1假如不定义innodb_data_home_dir 参数。默许就在datadir下面,InnoDB每一个数据表的元数据(metadata)老是保 存在ibdata1 这个同享表空间里,因而该文件必不可少innodb_data_file_path = ibdata1:10M:autoextend
数据和索引文件鸠合在一起:*.ibd每一个表都有零丁一个元数据,
表定义文件:*.frm
一切的表总的元数据文件为ibdata1
Inoodb存储引擎的
上风:在于供应了优越的事件管理、崩溃、修复才能和并发掌握,
瑕玷:是其读写效力稍差,占用的数据空间相对照较大.
什么是事件??我们先来看看ACID准绳
ACID是数据库事件一般实行的四个基础要素,离别指原子性、一致性、独立性及耐久性
原子性(Atomicity):事件的原子性是指一个事件要么悉数实行,要么不实行.也就是说一个事件不可能只实行了一半就 住手了.比方你从取款机取钱, 这个事件能够分红两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必需同时完成.要么就不完成.
一致性(Consistency):事件的一致性是指事件的运转并不转变数据库中数据的一致性.比方,完全性束缚了a+b=10,一个事件转变了a,那末b也应当随 之转变.
独立性(Isolation):事件的独立性也有称作断绝性,是指两个以上的事件不会涌现交织实行的状况.由于如许可能会致使数据不一致.
耐久性(Durability):事件的耐久性是指事件实行胜利今后,该事件所对数据库所作的变动就是耐久的保留在数据库当中,不会平白无故的回滚.
2>MyISAM引擎
MyISAM存储表分为3个文件,文件与表名雷同,扩大包含frm,MYD和MYI,
frm为扩大名的文件存储表的构造
myd为扩大名的文件存储数据
myi为扩大名的文件存储索引
长处:占用空间小,。处置惩罚速率快,
瑕玷:不支撑事件日记的完全性和并发性 3>MEMORY 引擎 Mysql中的特别引擎,一切的数据悉数存放于内存当中,在企业生产环境当中。几乎是用不到。由于数据存储在内存,假如内存涌现异常。将影响数据的完 整性。 长处:存储速率快
瑕玷:缺少稳定性和完全性
MyISAM:不支撑外键,不支撑事件,索引和数据离开的,能够加载更多的索引,而且索引是紧缩的,相对内存来讲运用效力就进步不少,,他运用一 种表格锁定的机制,来优化多个并发读写操纵,MYISAM强调了疾速读取操纵;
运用场所:在承载的大部分项目是读多写少的项目平台中,而MyISAM的读机能是比Innodb强不少的
Innodb: 支撑外键,支撑事件、回滚,然则索引和数据是严密绑缚的,没有运用紧缩从而会形成INNODB比MYISAM体积巨大不小。
运用场所:在承载的大部分项目实行insert 和update的话,应当挑选InnoDB.
锁的引见:mysql罕见的三种锁级别——表级锁、页面锁、行级锁;其中表级锁有两种形式——表同享读锁和表独有写锁。
MyISAM:
表级锁:对myisam表举行读操纵的时刻,它不会壅塞其他用户对同一表的读要求,但会壅塞对同一表>的写操纵;
对myisam表举行写操纵的时刻,它会壅塞其他用户对同一表的读、写要求.
innodb:
供应行锁(locking on row level),别的,InnoDB表的行锁也不是相对的,假如在实行一个SQL语句时MySQL不能肯定要扫描的局限,InnoDB表同样会 锁全表.
行级锁的长处以下:
1)当许多衔接离别举行差别的查询时减小LOCK状况。
2)假如涌现异常,能够削减数据的丧失。由于一次能够只回滚一行或许几行少许的数据。
行级锁的瑕玷以下:
1)比页级锁和表级锁要占用更多的内存。
2)举行查询时比页级锁和表级锁须要的I/O要多,所以我们常常把行级锁用在写操纵而不是读操纵。
3)轻易涌现死锁。
注重:inodb不能肯定操纵的行,这个时刻就运用的意向锁,也就是表锁on row level);
4》观察存储引擎:
存储引擎是Mysql的特性,Mysql能够挑选多种存储引擎及差别的存储体式格局,是不是举行事物处置惩罚等;
1> 查询Mysql支撑的引擎
Mysql->show engines;
Mysql->show engines\G;
2>查询Mysql引擎细致信息:
Mysql->show engine innodb status\G;
3>查询Mysql默许存储引擎
Mysql-> show variables like 'storage_engine';
假如想修正存储引擎,能够在 my.ini中举行修正或许my.cnf中的Default-storage-engine=引擎范例;
5》怎样挑选存储引擎:
在企业生产环境中,挑选一个款适宜的存储引擎是一个很庞杂的题目。每一种存储引擎都有各自的上风,不能笼统的说,谁比谁好。通经常使用的比较多的 是innodb存储引擎
以下是存储引擎的对照:
==========================建立,修正,删除表:
1》建立表的要领:
语法:create table 表名(
属性名数据范例完全束缚前提,
属性名数据范例条完全束缚件,
。。。。。。。。。
属性名数据范例
);
举例:
create table example0( id int, name varchar(20), sexboolean);
2》表的完全性束缚:
| 束缚前提 | 申明|
| (1)primary key | 标识该字段为表的主键,具有唯一性|
| (2)foreign key | 标识该字段为表的外键,与某表的主键联络|
| (3)not null | 标识该属于的值不能为空|
| (4)unique | 标识这个属性值是唯一|
| (5)auto_increment | 标识该属性值的自动增添
| (6)default | 为该属性值设置默许值|
1>设置表的主键:
主键是一个表的特别字段,这个字段是唯一标识表中的每条信息,主键和记载的关联,跟人的身份证一样。名字能够一样,然则身份证号码以为不会一样, 主键用来标识每一个记载,每一个记载的主键值都差别,主键能够协助Mysql以最快的速率查找到表中的某一条信息,主键必需满足的前提那就是它的唯一性,表中的 恣意两条记载的主键值,不能雷同,不然就会涌现主键值争执,主键值不能为空,能够是单一的字段,也能够多个字段的组合。
举例:
create table sxkj( User_id int primary key, user_name varchar(20), user_sexchar(7));
2>设置多个字段做主键
举例:
create table sxkj2( user_id int , user_name float, grade float, primary key(user_id,user_name));
3>设置表的外键:
外键是表的一个特别字段,假如aa是B表的一个属性且依靠于A表的主键,那末A表被称为父表。B表为被称为子表,
举例申明:
user_id 是A 表的主键,aa 是B表的外键,那末user_id的值为zhangsan,假如这个zhangsan去职了,须要从A表中删除,那末B表关于 zhangsan的信息也该获得响应的删除,如许能够保证信息的完全性。
语法:
constraint外键别号 foreign key(外键字段1,外键字段2)
references 表名(关联的主键字段1,主键字段2)
(1) yy1表存储了zhangsan姓名和ID号
create table yy1(
user_id int primary key not null,
user_name varchar(20));
(2) yy2表存储了ID号和zhangsan的岁数(old)
create table yy2( user_id int primary key not null, old int(5), constraint y_fk foreign key(user_id) references yy1(user_id)on delete cascade on update cascade);
(3)数据添补yy1和yy2表
insert into yy1 values('110','zhangsan'); insert into yy2 values('110','30');
(4)更新测试:
update yy1 set user_id='120' where user_name='zhangsan'; 查询考证 select * from yy2;
(5)删除测试:
delete from yy1 where user_id='120'; 查询考证 select * from yy2;
4>设置表的非空值
语法:属性名数据范例 NOT NULL
举例:
create table C( user_id int NOT NULL);
5> 设置表的唯一性束缚
唯一性指的就是一切记载中该字段。不能反复涌现。
语法:属性名数据范例 unique
举例:
root@zytest 15:43>create table D( ->user_id int unique); root@zytest 15:44>show create table D;
6>设置表的属性值自动增添
Auto_increment 是Mysql数据库中特别的束缚前提,它的作用是向表中插进去数据时自动生成唯一的ID,一个表只能有一个字段运用 auto_increment 束缚,必需是唯一的;
语法:属性名数据范例 auto_increment,默许该字段的值从1最先自增。
举例:
create table F( user_id int primary key auto_increment); root@zytest 15:56>insert into F values();插进去一条空的信息 Query OK, 1 row affected, 1 warning (0.00 sec) root@zytest 15:56>select * from F;值自动从1最先自增 +---------+ | user_id | +---------+ | 1 | +---------+ 1 row in set (0.01 sec)
7>、设置表的默许值
在建立表时,能够指定表中的字段的默许值,假如插进去一条新的记载时,没有给这个字段赋值,那末数据库会自动的给这个字段插进去一个默许 值,字段的默许值用default来设置。
语法: 属性名数据范例 default 默许值
举例:
root@zytest 16:05>create table G( user_id int primary key auto_increment, user_name varchar(20) default 'zero'); root@zytest 16:05>insert into G values('','');
插进去数据,应为ID为自增,值为空,user_name设置了默许值,所以也为空。
3》检察表构造的要领:
DESCRIBE能够检察那表的基础定义,包含、字段称号,字段的数据范例,是不是为主键以及默许值等。。
(1)语法:describe 表名;能够缩写为desc
(2) show create table查询表细致的构造语句,
1>修正表名
语法:alter table 旧表名 rename 新表名;
举例;
root@zytest 16:11>alter table A rename zyA; Query OK, 0 rows affected (0.02 sec)
2>修正表的数据范例
语法:alter table 表名 modify 属性名 数据范例;
举例;
root@zytest 16:15>alter table A modify user_name double; Query OK, 0 rows affected (0.18 sec)
3>修正表的字段称号
语法: alter table 表名 change 旧属性名 新属性名 新数据范例;
root@zytest 16:15>alter table A change user_name user_zyname float; Query OK, 0 rows affected (0.10 sec)
4>修正增添字段
alter table 表名 ADD 属性名1 数据范例 [完全性束缚前提] [FIRST |AFTER 属性名2]
v 增添没有束缚前提的字段:
root@zytest 16:18>alter table A add phone varchar(20); Query OK, 0 rows affected (0.13 sec)
v 增添有完全束缚前提的字段
root@zytest 16:42>alter table A add age int(4) not null; Query OK, 0 rows affected (0.13 sec)
v 在表的第一个位置增添字段默许状况每次增添的字段。都在表的末了。
root@zytest 16:45>alter table tt add num int(8) primary key first; Query OK, 1 row affected (0.12 sec) Records: 1 Duplicates: 0 Warnings: 0
v 实行在那个位置插进去新的字段,在phone背面增添
root@zytest 16:46>alter table A add address varchar(30) not null after phone; Query OK, 0 rows affected (0.10 sec) Records: 0 Duplicates: 0 Warnings: 0
总结:
(1) 默许ADD 增添字段是在末了面增添
(2) 假如想在表的最前端增添字段用first关键字
(3) 假如想在某一个字段背面增添的新的字段,运用after关键字
5>删除一个字段
alter table 表名DROP 属性名;
举例: 删除A 表的age字段
root@zytest 16:51>alter table A drop age; Query OK, 0 rows affected (0.11 sec) Records: 0 Duplicates: 0 Warnings: 0
6>变动表的存储引擎
alter table表名 engine=存储引擎 alter table A engine=MyISAM;
7>删除表的外键束缚
alter table 表名drop foreign key 外键别号; alter table yy2 drop foreign key y_fk;
4》删除表的要领
1>删除没有被关联的一般表
drop table 表名;
2>删除被别的表关联的父表
在数据库中某些表之间建立了一些关联关联。一些成为了父表,被其子表关联,要删除这些父表,就不是那末简朴了。删除要领,先删除所关联的 子表的外键,在删除主表。
以上就是Mysql相干操纵有哪些的细致内容,更多请关注ki4网别的相干文章!