>  기사  >  데이터 베이스  >  MySQL의 기본 작업에 대해 자세히 알아보세요.

MySQL의 기본 작업에 대해 자세히 알아보세요.

迷茫
迷茫원래의
2017-03-26 13:41:041188검색

1. 테이블 복사

1. 테이블 구조 복사 hello3 테이블에 테이블 구조를 복사합니다

MySQL의 기본 작업에 대해 자세히 알아보세요.

2. 데이터 복사

a. 두 테이블의 구조가 동일하여 복사하려는 경우 모든 열 데이터

mysql> insert into hello3 select * from hello;

b. 두 테이블의 결과가 다를 수 있으므로 일부 열의 데이터만 복사하면 됩니다.

mysql> insert into hello3 (name,sex,degree) select name,sex,degree from hello;

2. 색인

1. create 인덱스를 생성합니다(일반 인덱스와 고유 인덱스만 생성 가능)

일반 인덱스 생성: mysql> hello(name); 테이블에 hello의 name 열은 in_name이라는 인덱스를 생성합니다.

고유 인덱스 생성: mysql> hello(name)에 고유 인덱스 un_name을 생성합니다. hello 테이블의 name 열에 대해 un_name이라는 고유 인덱스를 생성합니다.

인덱스 보기: mysql> hello 테이블의 인덱스 보기;

인덱스 삭제: mysql> hello 테이블에서 in_name 인덱스 삭제;

2. alter는 인덱스를 생성합니다(인덱스를 생성하는 일반적인 방법)

일반 인덱스 생성: mysql> alter table hello add index in_name(name); hello 테이블의 name 열에 대해 in_name이라는 인덱스를 만듭니다.

(일반/고유) 인덱스 삭제: mysql> alter table hello drop index in_name; hello 테이블에서 in_name이라는 일반 인덱스를 삭제합니다.

자동 증가 삭제: mysql> alter table hello 수정 id int unsigned not null; 테이블 hello의 id 열(int 유형)의 자동 증가 기능을 삭제합니다.

기본 키 인덱스 삭제: mysql> alter table hello drop PRIMARY KEY

고유 인덱스 생성: mysql> alter table hello add Unique(name); hello 테이블의 이름이 기본값입니다.

기본 키 인덱스 생성: mysql> alter table hello add 기본 키(id); hello 테이블의 id 필드에 대한 기본 키 인덱스를 생성합니다.

기본 키 인덱스를 자동 증가로 설정: mysql> alter table hello 수정 id int unsigned not null auto_increment; hello 테이블의 기본 키 id 열을 자동 증가로 설정합니다.

3. 뷰

메인 테이블 데이터가 변경되면 그에 따라 뷰도 수시로 변경됩니다. 뷰가 의존하는 테이블에 오류가 있는 경우(삭제된 경우) 뷰에도 오류가 있습니다.

뷰 생성: mysql> create view v_hello 선택 * from hello where id >5;

뷰 삭제: mysql> drop view v_hello;

뷰 생성 과정 보기: mysql> show create view v_hello; 뷰 생성 과정을 봅니다.

4. 내장 함수

문자 함수

1. CONCAT(str1, str2, ....) 문자 연결 함수

mysql> select concat('A','B' )

2. LCASE(str1) 소문자로 변환

mysql> ; select lcase("MYSQL");

3. UCASE(str1) 대문자로 변환

mysql> select UCASE("Mysql");

4. LENGTH(str ) str의 길이

mysql> select length('mysql') ;

6. RTRIM(str) 백엔드 공백 제거

mysql> select RTRIM(' mysql ');

7. REPEAT(str,count) 횟수 반복 Mysql> select REPLACE('mysql','m','M');

9 .SUBSTRING(str,postion,length) str

mysql> 1부터 시작하는 길이의 문자를 취합니다.

10. SPACE (count)는 카운트 공백을 생성합니다

mysql> select concat(space(3),'mysql') ;

수학 함수

1. BIN(10진수): 10진수를 2진수로 변환

2. CEILING(숫자) 반올림 mysql> 선택 천장(10.12) 결과: 11

3、FLOOR(number) 向下取整       mysql> select ceiling(10.12);   结果:10

4、MAX(column) 获取 最大列

5、MIN(column) 获取最小列

6、SQRT(num) 开平方

7、RAND() 返回0-1之间的随机数值  

日期函数

1、CURDATE() 返回当前日期格式 yyyy-MM-dd

2、CURTIME()返回档期时间 12:11:56

3、NOW()返回当前时间 2017-05-12 21:12:34

4、UNIX_TIMESTAMP(date) 返回当前date的时间戳

5、FROM_UNIXTIME()返回UNIX时间戳的日期值

6、WEEK(date)返回当前时间date为一年中的第几周

7、YEAR(data)返回当前时间date的年份

8、DATEDIFF(expr1,expr2) 返回expr1与expr2之间的天数

五、预处理语句

无变量:

创建预处理语句:mysql> prepare stmt1 from 'select * from hello where id>5';创建一个名为stmt1的预处理语句

执行预处理语句:mysql> execute stmt1;执行stmt1预处理语句

带变量:

创建带参数的预处理语句:mysql> prepare stmt1 from 'select * from hello where id>?'

设置变量:mysql> set @i=6;

执行预处理语句:mysql> execute stmt2 using @i;

删除预处理语句:mysql> drop prepare stmt2;    #mysql> DEALLOCATE PREPARE stmt2;  

注意:每一次执行完EXECUTE时,养成好习惯,须执行DEALLOCATE PREPARE … 语句,这样可以释放执行中使用的所有数据库资源(如游标)。
不仅如此,如果一个session的预处理语句过多,可能会达到max_prepared_stmt_count的上限值。

六、事务处理

mysql默认事务是自动提交的。在做mysql事务处理时请将数据库或者表的ENGINE 设置为InnoDB

将表的存储引擎设置为INNODB:mysql> alter table hello engine=innodb;

设置mysql为非自动提交:mysql> set autocommit=0;

产生事务:mysql> delete from hello where id>7;

事务回滚:mysql> rollback;

事务提交:mysql> commit;

关于事务中的还原点:

创建一个事务:mysql> insert into hello (sex,degree,name) values(1,12312.32,'HHH');

对该事务设置还原点:mysql> savepoint p1;

回滚到指定的还原点:mysql> rollback to p1; 此时事务恢复到p1,也就是p1之后的事务p2 ,p3..这些还原点将失效。

回滚到原始的还原点:mysql> rollback;

七、存储过程

<!-- 创建存储过程 hello1()-->
CREATE PROCEDURE hello1()
    BEGIN
        SET @i=0;
        WHILE @i<100 DO 
        insert INTO hello (sex,degree,name) VALUES(1,@i,CONCAT(&#39;name&#39;,@i));
        SET @i=@i+1;
        END WHILE;
    end;
<!-- 查看存储-->
SHOW PROCEDURE STATUS;
<!-- 查看hello1()存储过程-->
show CREATE PROCEDURE hello1;
<!-- 执行存储过程-->
CALL hello1;

八、重排auto_increment值

mysql中我们的主键id如果设置为主键自增策略,那我们如何清空表,并且恢复自增列id的值。

方式一:使用truncate table tableName; 该方式在清空表的同时恢复auto_increment 的值。

方式二:

  1、mysql> delete from hello3;  清空表 (该方式效率较低)

  2、mysql> alter table hello3 auto_increment=1; 恢复auto_increment 的起始值为1

위 내용은 MySQL의 기본 작업에 대해 자세히 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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