管理这个数据库的软件成为数据库管理系统,它

作者: www.9159.com  发布:2019-09-14

一:在新表已经建立好的情况下

0、复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。

本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表。

1.数据库系统(database system)

1,拷贝所有的字段

 

 

数据库系统是计算机系统中一种专门管理数组资源的系统,数据库存储的是一组或多组经过处理后的数据,管理这个数据库的软件成为数据库管理系统。

insert into new_table select * from old_table

 

这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表。

组成:
数据库(database) 存数据的
数据库管理系统(database managment system) 管理数据库

2,拷贝部分字段表


 

MySQL数据库作用:

insert into new_table(id,name,sex) select id,name,sex from old_table

 

示例如下:

​ 1) 持久保存

3,拷贝部分的行

 

 

​ 2) 方便查询并提取满足条件的数据, 数据访问速度快

insert into new_table select  *  from old_table where id="1"

 

将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:

​ 3) 处理并发访问

4,拷贝部分的行和字段

1、只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
或CREATE TABLE 新表  LIKE 旧表

 

​ 4) 权限管理

insert into new_table(id,name,sex) select id,name,sex form old_table where id='1'

create table score_youxiu select * from score where grade >90;

CREATE TABLE mytbl_new LIKE production.mytbl;

2.数据库系统分类:
关系型数据库 : MySQL、SQLServer、oracle、db2、informix、sysbase
非关系型数据库:redis、 MogoDB

二:在新表还没有建的情况下

//复制表的部分内容

INSERT mytbl_new SELECT * FROM production.mytbl;

3.开发中常用的数据库
IBM:DB2
甲骨文:Oracle MySQL
Microsoft:SQL Server Access等等

方案一:

create table score_youxiu select * from score where id%4=0;

 

4.数据库在动态网站中有什么地位?
1、动态网站是对数据进行操作。浏览网站的时候会发现网页内容变化,页面的布局主体没有变化。
2、WEB系统的开发基本都离不开数据库,所谓的动态网站是基于数据库开发的系统,最主要的是围绕数据库来写程序(业务逻辑)。

create table new_table (select * from old_table)

//应用:分表办法(按业务需要,取模(id%4),取偏移量)

第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。

5.MySQL和mysql有什么区别:

这种方案建的话,只是拷贝的查询的结果,新表不会有主键和索引

 

第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。

MySQL指的是完整的数据库系统。
mysql指的是一个叫mysql的客户端程序。

方案二:


 

6.MySQL数据库的结构:
数据库->数据表->字段(多个字段组成了一行数据)

create table new_table LIKE old_table

 

注:production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。

数据库:存放信息的文件夹
数据库里面有一个一个的excel文件(数据表)

该方案只能拷贝表结构到新表中,不会拷贝数据

 

假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。

数据表里面的数据是有数据行和数据列构成

方案三:

 

其它方法:
方案1:
复制整个表  
CREATE TABLE   new_table   SELECT   *   FROM   old_table;  

所看到的一行一行的数据是由一个或者多个字段组成的

如果要真正的复制一个数据到新表,我们可以直接执行下面的语句

2、复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表

复制,不复制数据  
CREATE TABLE   new_table   SELECT   *   FROM   old_table   where   0;

7.SQL:为了和MySQL进行交互,需要使用一种叫SQL(结构化查询语言)的语言来进行交互。SQL是当今的标准的数据库语言,很多数据库都使用SQL作为交互语言:SQL Server、Oracle

create table new_table LIKE old_table;

 

注意:本方案其实只是把select语句的结果建一个表。所以new_table这个表不会有主键、索引。

数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表
数据操作语言(DML):用于操作数据库对象中包含的数据。
数据库查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行一个查询。
数据控制语言(DCL):管理数据库的语言

insert into new_table select * from old_table;

 

方案2:
假如我们有以下这样一个表:

8.连接数据库的步骤
1、连接MySQL服务器
2、选择数据库
3、对数据表进行增删改查。
4、关闭数据库

三:我们也可以操作其它的数据库中的表


id      username    password

9.连接数据库
mysql
-u 用户名 root
-p 密码
-h 主机名
-P 端口号 3306

create table new_table LIKE ortherdatabase.old_table;

 


数据库语法的特点:
mysql>
1、每个SQL命令都要使用分号来完成。
2、->表示MySQL需要你继续输入命令。
3、如果说有一条比较长的命令我就可以拆分成多行来执行。
4、'>表示等待下一行,等待以单引号开始的字符串的结束
5、">表示等待下一行,等待以双引号开始的字符串的结束。
6、查询的命令不区分大小写,通常使用大写字母来写出SQL关键字和函数名,用小写字母写出数据库、数据表和数据列的名字

insert into new_table select * from ortherdatabase.old_table;

 

1       admin       *************
2       sameer      *************
3       stewart     *************

10.退出MySQL
quit
exit
q

ortherdatabase.old_table中的ortherdatabase是指定的数据库名

3、复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

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=latin1 AUTO_INCREMENT=4 ;

常见操作
c 取消命令输入
g 代替结束符;
s 查看服务器端信息
h 查看帮助

四:我们也可以在新建表时改名字

insert into ss (id,stu_id) select id,stu_id from score;

  1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)

11.创建数据库
格式:
create database if not exists 数据库名 default charset utf8;

create table new_table (select id,name as username from old_table)

insert into score3 (id,stu_id,c_name) select id,stu_id,c_name from score;

CREATE TABLE newadmin LIKE admin

注意:
1、数据库是唯一的
2、if not exists先判断是否存在这个数据库,存在不创建,不存在就创建。
3、创建数据库,并设定编码集为utf8

 

 

  1. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个 表不会有主键,索引。

12.显示当前数据库服务器下所有的数据库名
show databases;


CREATE TABLE newadmin 
(
SELECT *
FROM admin
)

use 数据库名 选择数据库
注意:
windows下面数据库名是不区分大小写的,在Linux下面严格区分。

 

  1. 如果你要真正的复制一个表。可以用下面的语句。

13.删除数据库
drop database 数据库名

 

CREATE TABLE newadmin LIKE admin;
INSERT INTO newadmin SELECT * FROM admin;

查看已经选择的数据库
select database();

4、可以将表1结构复制到表2
SELECT * INTO 表2 FROM 表1 WHERE 1=2

  1. 我们可以操作不同的数据库。

查看当前的数据库的版本号
select version();

 

CREATE TABLE newadmin LIKE shop.admin;
CREATE TABLE newshop.newadmin LIKE shop.admin;

14.数据表的操作
show tables 查看数据库中的数据表。


  1. 我们也可以拷贝一个表中其中的一些字段。

创建数据表
格式:
create table 表名(列的一些信息);

 

CREATE TABLE newadmin 
(
SELECT username, password FROM admin
)

例子:
create table t1(id int(12), name varchar(100));

 

  1. 我们也可以讲新建的表的字段改名。

create table `test t1`(id int(10), name varchar(50));

5、可以将表1内容全部复制到表2
SELECT * INTO 表2 FROM 表1

CREATE TABLE newadmin 
(
SELECT id, username AS uname, password AS pass FROM admin
)

desc 表名 查看表的结构.

 

  1. 我们也可以拷贝一部分数据。

show create table 表名 查看建表的语句


CREATE TABLE newadmin 
(
SELECT * FROM admin WHERE LEFT(username,1) = 's'
)

G 格式化输出(文本式,竖立显示)

 

  1. 我们也可以在创建表的同时定义表中的字段信息。

drop table 数据表名

 

CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
(
SELECT * FROM admin
)

drop table [if exists] 数据表名 尝试性的删除表。

6、show create table 旧表;
这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表

15.记录操作 增、删、改、查

 

(1)插入数据
格式:
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);


insert into 表名(字段1,字段2,字段3) values(a值1,a值2,a值3);

 

(2)查询表数据
格式:
select * from 表名;

 

select 字段1,字段2,字段3 from 表名;

7、mysqldump
用mysqldump将表dump出来,改名字后再导回去或者直接在命令行中运行

select * from 表名 where 字段=某个值;

 

(3)修改表数据
格式:
update 表名 set 字段=某个值 where 条件;


update 表名 set 字段1=值1,字段2=值2 where 条件;

 

update 表名 set 字段=字段+值 where 条件;

 

(4)删除数据
格式:
delete from 表名 where 字段=某个值;

8、复制旧数据库到新数据库(复制全部表结构并且复制全部表数据)

delete from 表名; (慎重使用)

#mysql -u root -ppassword
>CREATE DATABASE new_db;
#mysqldump old_db -u root -ppassword--skip-extended-insert --add-drop-table | mysql new_db -u root -ppassword

delete from 表名 where 字段 = 值;

 

清空表数据
truncate table 表名;


16.修改用户密码
在退出mysql服务的情况下 输入
1、mysqladmin -u 用户名 -p password 新密码
输入旧密码:

 

2、登录到mysql的时候使用set password for '用户名'@'登录主机'=password('新密码');

 

 

9、表不在同一数据库中(如,db1 table1,  db2 table2)
sql: insert into db1.table1 select * from db2.table2 (完全复制)
     insert into db1.table1 select distinct * from db2.table2(不复制重复纪录)
     insert into tdb1.able1 select top 5 * from   db2.table2 (前五条纪录) 

17.修改表的字段信息

 

修改表的字符集
alter table 表名 charset utf8
修改字段的类型
alter table 表名 modify 字段名 字段类型
修改字段的名字并同时修改字段类型
alter table 表名 change 旧字段名 新字段名 字段类型
修改字段的字符集
alter table 表名 modify 字段名 类型 charset utf8
添加新字段
alter table 表名 add 字段名 类型
删除字段
alter table 表名 drop 字段名
修改表名
alter table 旧表名 rename as 新表名


18.删除默认匿名的账户
为什么我直接输入mysql也能进入数据库中。是匿名用户,MySQL默认创建的。他有test和information_schema这两个库的权限。我们可以把他删掉

 

删除匿名用户:drop user ''@'localhost';

19.MySQL数据库的数据类型:

MySQL的数据类型分为四大类:数值类型、字串类型、日期类型、NULL。

1 数值类型:
*tinyint(1字节) 0~255 -128~127
smallint(2字节)
mediumint(3字节)
*int(4字节)
bigint(8字节)
*www.9159.com,float(4字节) float(6,2) float(m,d)
*double(8字节) double (m,d)
decimal(自定义)字串形数值 decimal(m,d)
m精度 d标度

2 字串类型
普通字串
*char 定长字串 char(8)
*varchar 可变字串 varchar(8)

二进制类型
tinyblob
blob
mediumblob
longblob

文本类型
tinytext
*text 常用于<textarea></textarea>
mediumtext
longtext

*enum枚举
set集合

3 时间和日期类型:
date 年月日
time 时分秒
datetime 年月日时分秒
timestamp 时间戳
year 年

4 NULL值
NULL意味着“没有值”或“未知值”
可以测试某个值是否为NULL
不能对NULL值进行算术计算
对NULL值进行算术运算,其结果还是NULL
0或NULL都意味着假,其余值都意味着真

MySQL的运算符:
算术运算符:+ - * / %
比较运算符:= > < >= <= <> !=
数据库特有的比较:in,not in, is null,is not null,like, between and
逻辑运算符:and or not

like: 支持特殊符号%和_ ; 其中 %表示任意数量的任意字符,_表示任意一位字符。

表的字段约束:
unsigned 无符号(正数)
zerofill 前导零填充
default 默认值
not null 非空
auto_increment 自增 在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用

primary key 主键索引 (非null并不重复)
unique 唯一索引 (可以为null但不重复)
index 常规索引

19.建表语句格式:
create table 表名(
字段名 类型 [字段约束],
字段名 类型 [字段约束],
字段名 类型 [字段约束]
...
);

实例:
mysql> create table stu(
-> id int unsigned not null auto_increment primary key,
-> name varchar(8) not null unique,
-> age tinyint unsigned,
-> sex enum('m','w') not null default 'm',
-> classid char(6)
-> );

20.插入数据
1 插入指定字段
insert into t1(字段1,字段2,字段3...) values ('值1','值2','值3',....);
2 插入所有的字段
insert into t1 values ('值1','值2','值3',....);
3 插入多条数据
insert into t1(字段1,字段2,字段3...) values ('值1','值2'),('值1','值2')....;
4 插入结果
insert into t1(字段1,字段2,字段3...) select 字段1,字段2,字段3... from t1;
insert into t1() select * from t1;
5 插入单条数据
insert into t1 set 字段1=值1,字段2=值2....;

21.查询数据

格式:
select [字段列表]|* from 表名
[where 搜索条件]
[group by 分组字段 [having 子条件]]
[order by 排序 asc|desc]
[limit 分页参数]

 

##where条件查询

  1. 查询班级为lamp138期的学生信息
    mysql> select * from stu where classid='lamp138';

  2. 查询lamp138期的男生信息(sex为m)
    mysql> select * from stu where classid='lamp138' and sex='m';

  3. 查询id号值在10以上的学生信息
    mysql> select * from stu where id>10;

  4. 查询年龄在20至25岁的学生信息
    mysql> select * from stu where age>=20 and age<=25;
    mysql> select * from stu where age between 20 and 25;

  5. 查询年龄不在20至25岁的学生信息
    mysql> select * from stu where age not between 20 and 25;
    mysql> select * from stu where age<20 or age>25;

  6. 查询id值为1,8,4,10,14的学生信息
    select * from stu where id in(1,8,4,10,14);
    mysql> select * from stu where id=1 or id=8 or id=4 or id=10 or id=14;

  7. 查询lamp138和lamp94期的女生信息
    mysql> select * from stu where classid in('lamp138','lamp94') and sex='w';
    mysql> select * from stu where (classid='lamp138' or classid='lamp94') and sex='w

##LIKE 子句

这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。

LIKE 子句中使用百分号%字符来表示任意字符,类似于UNIX或正则表达式中的星号*。

如果没有使用百分号%, LIKE 子句与等号=的效果是一样的。

LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
可以使用regexp正则来代替 like

1.查询name字段值是以zh开头的所有信息
mysql> select * from stu where name like "zh%";
mysql> select * from stu where name regexp "^zh"; --正则写法

2.查询姓名name中含有ang子串的所有信息
mysql> select * from stu where name like "%ang%";
mysql> select * from stu where name regexp "ang";

3.查询姓名是任意四位字符构成的信息。
mysql> select * from stu where name like "____";
mysql> select * from stu where name regexp "^[a-z0-9]{4}$";

创建一个表结构和另一个表一样的结构

create table t3 like t1;
那么现在t3表的结构和t1表的结构是一样的,但是要注意数据是没有的

 

##MySQL的统计函数(聚合函数):max() min() count() sum() avg()

1.获取学生表中最大、最小以及平均年龄是多少?
mysql> select max(age),min(age),avg(age) from stu;

2.获取学生表中男生m的数量
mysql> select count(*) from stu where sex='m';

##GROUP BY 语句 分组

GROUP BY 语句根据一个或多个列对结果集进行分组。

统计班级信息,按性别分组,并统计每组人数;
mysql> select sex,count(*) from stu group by sex;

1.统计每个班级的人数
nysql> select classid,count(*) from stu group by classid;

2.统计每个班级的,男生和女生各多少人数。
mysql> select classid,sex,count(*) from stu group by classid,sex;

##ORDER BY 排序 -- asc 默认升序 desc 降序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的ORDER BY子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE...LIKE 子句来设置条件。

1.按年龄升序排序查询学生信息
mysql> select * from stu order by age;
mysql> select * from stu order by age asc; --默认asc升序 可省略

2.年龄降序排序
mysql> select * from stu order by age desc;

3.查询学生信息,按班级做升序排序,相同班级按年龄降序排序
mysql> select * from stu order by classid asc,age desc;

##LIMIT 关键字 查询部分数据

-- 例如: .... limit m; 查询数据只显示前m条

-- 例如: .... limit m,n; 排除前m条,然后再查询出前n条

1.查询前5条信息
mysql> select * from stu limit 5;

2.排除前2条后再获取4条信息
mysql> select * from stu limit 2,4;

22.修改数据
格式:update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 条件

-- 将id为11的age改为35,sex改为m值
mysql> update stu set age=35,sex='m' where id=11;

-- 将id值为12和14的数据值sex改为m,classid改为lamp92
mysql> update stu set sex='m',classid='lamp92' where id=12 or id=14 --等价于下面
mysql> update stu set sex='m',classid='lamp92' where id in(12,14);

23.删除操作
格式:delete from 表名 [where 条件]

-- 删除stu表中id值为100的数据
mysql> delete from stu where id=100;

-- 删除stu表中id值为20到30的数据
mysql> delete from stu where id>=20 and id<=30;

-- 删除stu表中id值为20到30的数据(等级于上面写法)
mysql> delete from stu where id between 20 and 30;

-- 删除stu表中id值大于200的数据
mysql> delete from stu where id>200;

24.导入和导出
注意: 在操作导入和导出数据的时候 不要登录到mysql服务中,要退出mysql服务进行操作

-- 将lamp138数据库里面的所有的表导出
C:>mysqldump -u root -p lamp138 > C:lamp138.sql
Enter password:

---- 将lamp138数据库中的stu表导出
C:>mysqldump -u root -p lamp138 stu > C:lamp138_stu.sql
Enter password:

-- 将lamp138库中的所有表导入

C:>mysql -u root -p lamp138 < C:lamp138.sql
Enter password:

-- 将lamp138库中stu表导入
C:>mysql -u root -p lamp138 < C:lamp138_stu.sql
Enter password:

*********************
-- 将所有的数据库进行导出
mysqldump -uroot -p密码 --all-databases --events > /tmp/bak.sql 所有数据库备份

 

25.MySQL的权限管理
格式:
grant 权限 on 数据库.数据表 to '用户名'@'登录主机' identified by '密码'

刷新权限
flush privileges;

举例:
grant select,insert,update,delete on *.* to 'wjs'@'%' identified by '12345';

安全的做法
grant select,insert,update,delete on pass.* to 'root'@'localhost' identified by '12345';
只针对localhost主机里面的 pass数据库里面的数据表进行增删该查

删除用户
drop user 'xxoo'@'%'

 

26.索引的作用:
索引是数据库中用来提高搜索性能的。我们通常在做数据库优化的时候通常先做索引的优化,数据量少的时候没效果,数据越多效果越明显。

查看表中都有哪些索引

show index from 表名G

索引的分类:

##常规索引(index)
最基本的索引,没有任何限制

添加表字段的常规索引
create index 索引名 on 表名(字段名)
alter table 表名 add index 索引名(字段名)

在创建表的时候也可以进行添加
create table t2(
id int(10) unsigned auto_increment primary key,
name varchar(255), index 索引名(字段名)
);

删除表字段常规索引**
drop index 索引名 on 表名
alter table 表名 drop index 索引名

##唯一索引(unique)
唯一索引是可以给每个字段进行添加的,添加完了之后字段里面的值就不可以重复了,主键索引和唯一索引类似,
但是数据表里的主键索引只能加在一个字段里(一般都加在id上),id是自增的,索引不会有重复的时候出现

 

添加表字段的唯一索引
create unique index 索引名 on 表名(字段名)
alter table 表名 add unique 索引名(字段名)

在创建表的时候也可以进行添加
create table t2(
id int(10) unsigned auto_increment primary key,
name varchar(255), unique 索引名(字段名)
);

删除唯一索引
drop index 索引名 on 表名

 

##主键索引(primary key)
主键索引是关系数据库中最常见的索引类型,主要作用是确定数据表里一条特定的数据记录的位置。
我们可以在字段后添加PRIMARY KEY来对字段设置为主键索引。

注意:
1.最好为每张表指定一个主键,但不是必须指定。
2.一个表只能指定一个主键,而且主键的值不能为空
3.主键可以有多个候选索引(例如NOT NULL,AUTO_INCREMENT)

添加表字段的主键索引
alter table 表名 add primary key (字段名)
添加自增
alter table 表名 modify id int(4) auto_increment
删除主键索引
如果字段有了auto_increment 和 primary key的时候,需要删除主键的话,
先删除自增,然后再删除主键
删除自增
alter table 表名 change 字段名 字段名 类名
删除主键
alter table 表名 drop primary key

##全文索引(fulltext)

全文索引在MySQL中是一个FULLTEXT类型索引,但FULLTEXT索引只能用于MyISAM表,
并且只可以在CHAR、VARCHAR或TEXT类型的列上创建,也允许创建在一个或多个数据列上。

添加表字段的全文索引
alter table 表名 add fulltext 索引名(字段名)
删除全文索引
drop index (索引名) on 表名
alter table 表名 drop index 索引名

 

注意:如果在创建索引的时候,不添加索引名的话 默认会把字段名当做索引名

 

27.表的存储引擎
存储引擎: 是MySQL的一个特性之一,用户可以根据应用的需要选择如何存储

MySQL支持MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV、MEMORY等多种数据表引擎,在创建一个新MySQL数据表时,可以为它设置一个引擎类型。

MyISAM和InnoDB两种表类型最为重要:

1.MyISAM数据表类型的特点是成熟、稳定和易于管理。
2.MyISAM表类型会产生碎片空间,要经常使用OPTIMIZE TABLE命令去清理表空间
3.MyISAM不支持事务处理,InnoDB支持
4.MyISAM不支持外键,InnoDB支持
5.MyISAM表类型的数据表效率更高
6.MyISAM表类型的数据表会产生三个文件
---.frm (表结构)
---.myd (表数据)
---.myi (表索引)
InnoDB表类型表默认只会产生两个文件
---.frm (表结构)
---.ibd (表数据+表索引)

7.MyISAM表,其优势就是访问的速度快。对事务没有完整性的要求或以select、insert为主的通常使用MyISAM表

8.InnoDB表:会占用更多的磁盘空间

锁机制:MyISAM 表锁:开销小,加锁快,发生冲突的概率高。
InnoDB 行锁:开销大,加锁慢,发生冲突的概率低。

9.默认是InnoDB引擎
数据存储在 innodb_data_home_dir选项所选的文件名的目录里

查看默认的引擎

show variables like 'default_storage_engine';

查看支持的引擎

show engines

查看当前库里面所有的表引擎

show table status from 库名

修改表引擎

alter table 表名 engine = 新的表引擎

ubuntu下
//mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

//重启
sudo /etc/init.d/mysqld restart

 

本文由9159.com发布于www.9159.com,转载请注明出处:管理这个数据库的软件成为数据库管理系统,它

关键词:

上一篇:没有了
下一篇:没有了