首页 数据库 mysql教程 Mysql相关操作有哪些

Mysql相关操作有哪些

Sep 30, 2017 am 09:59 AM
mysql 哪些 相关

1》创建数据库:
  语法: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 &#39;storage_engine&#39;;
登录后复制

    如果想修改存储引擎,可以在 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(&#39;110&#39;,&#39;zhangsan&#39;);
              insert into yy2 values(&#39;110&#39;,&#39;30&#39;);
登录后复制


(4)更新测试:

           update yy1 set user_id=&#39;120&#39; where user_name=&#39;zhangsan&#39;;
         查询验证
           select * from yy2;
登录后复制


(5)删除测试:         

delete from yy1 where user_id=&#39;120&#39;;
        查询验证
          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 &#39;zero&#39;);
                   root@zytest 16:05>insert into G values(&#39;&#39;,&#39;&#39;);
登录后复制

        插入数据,应为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相关操作有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP 的大数据结构处理技巧 PHP 的大数据结构处理技巧 May 08, 2024 am 10:24 AM

大数据结构处理技巧:分块:分解数据集并分块处理,减少内存消耗。生成器:逐个产生数据项,无需加载整个数据集,适用于无限数据集。流:逐行读取文件或查询结果,适用于大文件或远程数据。外部存储:对于超大数据集,将数据存储在数据库或NoSQL中。

如何在 PHP 中使用 MySQL 备份和还原? 如何在 PHP 中使用 MySQL 备份和还原? Jun 03, 2024 pm 12:19 PM

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

如何优化 PHP 中的 MySQL 查询性能? 如何优化 PHP 中的 MySQL 查询性能? Jun 03, 2024 pm 08:11 PM

可以通过以下方式优化MySQL查询性能:建立索引,将查找时间从线性复杂度降至对数复杂度。使用PreparedStatements,防止SQL注入并提高查询性能。限制查询结果,减少服务器处理的数据量。优化连接查询,包括使用适当的连接类型、创建索引和考虑使用子查询。分析查询,识别瓶颈;使用缓存,减少数据库负载;优化PHP代码,尽量减少开销。

如何使用 PHP 插入数据到 MySQL 表中? 如何使用 PHP 插入数据到 MySQL 表中? Jun 02, 2024 pm 02:26 PM

如何将数据插入MySQL表中?连接到数据库:使用mysqli建立与数据库的连接。准备SQL查询:编写一个INSERT语句以指定要插入的列和值。执行查询:使用query()方法执行插入查询,如果成功,将输出一条确认消息。

如何使用 PHP 创建 MySQL 表? 如何使用 PHP 创建 MySQL 表? Jun 04, 2024 pm 01:57 PM

使用PHP创建MySQL表需要以下步骤:连接到数据库。创建数据库(如果不存在)。选择数据库。创建表。执行查询。关闭连接。

如何在 PHP 中使用 MySQL 存储过程? 如何在 PHP 中使用 MySQL 存储过程? Jun 02, 2024 pm 02:13 PM

要在PHP中使用MySQL存储过程:使用PDO或MySQLi扩展连接到MySQL数据库。准备调用存储过程的语句。执行存储过程。处理结果集(如果存储过程返回结果)。关闭数据库连接。

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 Dec 09, 2024 am 11:42 AM

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

oracle数据库和mysql的区别 oracle数据库和mysql的区别 May 10, 2024 am 01:54 AM

Oracle数据库和MySQL都是基于关系模型的数据库,但Oracle在兼容性、可扩展性、数据类型和安全性方面更胜一筹;而MySQL则侧重速度和灵活性,更适合小到中等规模的数据集。①Oracle提供广泛的数据类型,②提供高级安全功能,③适合企业级应用程序;①MySQL支持NoSQL数据类型,②安全性措施较少,③适合小型到中等规模应用程序。

See all articles