>  기사  >  데이터 베이스  >  Mysql과 관련된 작업은 무엇입니까?

Mysql과 관련된 작업은 무엇입니까?

一个新手
一个新手원래의
2017-09-30 09:59:021988검색

1》데이터베이스 생성:
구문: 데이터베이스 데이터베이스 이름 생성, 참고하세요>
 예:
    Mysql->drop 데이터베이스 zytest; 삭제 zytest

                                                  zytest 1>innoDB 엔진 삭제;    innoDB는 A 스토리지입니다 mysql용 엔진인 inodb는 mysql 테이블에 대한 트랜잭션 로그, 롤백, 충돌, 복구 기능 및 다중 버전 동시성 제어 트랜잭션 보안을 제공합니다. Mysql에는 3.23.34a부터 innoDB 스토리지 엔진이 포함되어 있습니다. InnoDB는 외래 키 제약 조건을 제공하는 최초의 테이블 엔진이며 innoDB 트랜잭션을 처리하는 기능을 갖추고 있습니다. 이는 다른 엔진과 경쟁할 수 없는 부분이기도 합니다. ,

          Innodb는 auto_increment를 사용하는 자동 증가 열을 지원합니다. 자동 증가 열의 값은 비워둘 수 없습니다                                                                                                                  ” ” 하위 테이블의 외부 검사와 연결된 상위 테이블의 필드는 기본 키여야 합니다. 부모 테이블의 정보가 삭제되거나 업데이트되면 그에 따라 자식 테이블도 변경되어야 합니다. innodb 스토리지 엔진에서는 생성된 테이블의 테이블 구조가 저장됩니다. frm 파일에는 데이터와 인덱스가 저장됩니다. innodb_data_home_dir 및 innodb_data_file_path에 의해 정의된 테이블스페이스.

    
innodb_data_home_dir 매개변수가 정의되지 않은 경우 모든 테이블의 메타데이터 파일 ibdata1입니다. 기본적으로 datadir 아래에 있습니다. InnoDB의 각 데이터 테이블의 메타데이터는 항상 ibdata1의 공유 테이블스페이스에 저장되므로 이 파일은 필수입니다.

innodb_data_file_path = ibdata1:10M:autoextend

데이터 및 인덱스 파일은 함께 수집됩니다: *.ibd 각 테이블에는 별도의 메타데이터가 있습니다.

 테이블 정의 파일: *.frm

 모든 테이블의 전체 메타데이터 파일은 ibdata1입니다.
 Inoodb 스토리지 엔진의
  장점: 우수한 트랜잭션 관리, 충돌, 복구 기능 및 동시성 제어,
단점: 읽기 및 쓰기 효율성이 약간 낮고 상대적으로 큰 데이터 공간을 차지합니다.


트랜잭션이란 무엇입니까? ? 먼저 ACID 원칙을 살펴보겠습니다   ACID는 데이터베이스 트랜잭션의 정상적인 실행을 위한 4가지 기본 요소로 각각 원자성, 일관성, 독립성 및 내구성을 나타냅니다.

   원자성
:
트랜잭션의 원자성은 하나를 나타냅니다. 거래가 실행되거나 실행되지 않습니다. 즉, 거래가 절반만 수행될 수 없습니다. 예를 들어 카드를 긁었지만 돈이 나오지 않았을 수 있습니다. 이 두 단계는 동시에 완료되어야 합니다. 또는 완료되지 않았습니다.

      일관성
:

트랜잭션의 일관성은 트랜잭션 실행이 데이터베이스의 데이터를 변경하지 않음을 의미합니다. 예를 들어 무결성이 a+b=10으로 제한되는 경우입니다. a 트랜잭션이 a를 변경하면 b도 그에 따라 변경되어야 합니다.

       독립(격리)

: 트랜잭션의 독립성을 격리라고도 합니다. 이는 두 개 이상의 트랜잭션이 엇갈린 실행
을 갖지 않음을 의미합니다. 데이터 불일치.
    내구성:트랜잭션의 내구성은 트랜잭션이 성공적으로 실행된 후의 트랜잭션 내구성을 의미하며 데이터베이스에 영구적으로 저장되며 아무 이유 없이 롤백되지 않습니다.

2>MyISAM 엔진
                                                           파일 및 테이블과 이름이 같고 확장자는 frm, MYD 및 MYI를 포함한 3개의 파일로 업,
                                              ccogene 담당자
                                   logue Myi는 확장자를 가진 파일 저장 인덱스입니다.
장점: 공간을 적게 차지합니다. . 빠른 처리 속도,
단점: 트랜잭션 로그의 무결성 및 동시성을 지원하지 않습니다. 3>MEMORY 엔진 Mysql의 특수 엔진으로 기업 생산 환경에서 모든 데이터가 메모리에 저장됩니다. 거의 쓸모가 없습니다. 데이터는 메모리에 저장되기 때문에 메모리에 예외가 있는 경우. 데이터 무결성에 영향을 미칩니다. 장점: 빠른 저장

단점: 안정성과 무결성 부족



MyISAM: 외래 키를 지원하지 않고, 트랜잭션을 지원하지 않으며, 인덱스와 데이터가 분리되고, 더 많은 인덱스를 로드할 수 있으며, 메모리에 비해 인덱스가 압축됩니다. 사용 효율성 측면에서 그는 테이블 잠금 메커니즘을 사용하여 다중 동시 읽기 및 쓰기 작업을 최적화했습니다. MYISAM은 빠른 읽기 작업을 강조합니다.   사용 사례: 수행되는 대부분의 프로젝트 중 소수의 프로젝트 플랫폼에서 MyISAM의 읽기 성능은 Innodb

  Innodb: 외래 키, 트랜잭션 및 롤백을 지원하지만 인덱스와 데이터가 단단히 바인딩되어 있으며 압축이 사용되지 않으므로 INNODB가 MYISAM보다 훨씬 큽니다.
사용 사례: 호스팅된 대부분의 프로젝트에서 삽입 및 업데이트를 수행하는 경우 InnoDB를 선택해야 합니다. 잠금, 페이지 잠금, 행 수준 잠금에는 테이블 공유 읽기 잠금과 테이블 독점 쓰기라는 두 가지 모드가 있습니다. 자물쇠.

MyISAM: 테이블 수준 잠금: myisam 테이블에서 읽기 작업을 수행할 때 동일한 테이블에 대한 다른 사용자의 읽기 요청을 차단하지는 않지만 차단합니다. 동일한 테이블에 대한 다른 사용자의 읽기 요청> 쓰기 작업     myisam 테이블에 쓸 때 동일한 테이블에 대한 다른 사용자의 읽기 및 쓰기 요청을 차단합니다.
또한 행 잠금 기능을 제공합니다. InnoDB 테이블의 행 잠금은 절대적이지 않습니다. MySQL이 SQL 문을 실행할 때 스캔할 범위를 결정할 수 없으면 InnoDB 테이블도 전체 테이블을 잠급니다.

행 수준의 장점 잠금은 다음과 같습니다.
  1) 많은 연결이 각각 다른 쿼리를 수행하는 경우 LOCK 상태를 줄입니다.
  2) 예외가 발생하면 데이터 손실을 줄일 수 있습니다. 한 번에 하나의 행 또는 소량의 데이터 행만 롤백할 수 있기 때문입니다.
행 수준 잠금의 단점은 다음과 같습니다.
 1) 페이지 수준 잠금 및 테이블 수준 잠금보다 메모리를 더 많이 차지합니다.   2) 쿼리에는 페이지 수준 잠금 및 테이블 수준 잠금보다 더 많은 I/O가 필요하므로 읽기 작업보다는 쓰기 작업에 행 수준 잠금을 사용하는 경우가 많습니다.   3) 교착상태가 발생하기 쉽습니다.
  참고: inodb는 현재 작업 행을 결정할 수 없습니다. 즉, 행 수준의 테이블 잠금이 사용됩니다. 스토리지 엔진:
   스토리지 엔진 Mysql은 여러 스토리지 엔진과 다양한 저장 방법을 선택할 수 있으며, 트랜잭션 처리 등을 수행할 수 있습니다.
      Mysql->show 엔진 ;

L q mysql-& gt; 쇼 엔진g








2 & gt; 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과 관련된 작업은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:MySQL 인덱스 작업다음 기사:MySQL 인덱스 작업