首頁  >  文章  >  資料庫  >  詳細了解Mysql的基礎操作

詳細了解Mysql的基礎操作

迷茫
迷茫原創
2017-03-26 13:41:041174瀏覽

一、表複製

1、複製表結構    將表hello的結構複製一份為表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;

二、索引

 1、create 建立索引(只能建立普通索引和唯一索引)

  建立普通索引:mysql> create index in_name on hello(name); 給表hello中的name列會建立名為in_name的索引。

  建立唯一索引:mysql> create unique index un_name on hello(name);   為表hello中的name列建立唯一索引名為 un_name的索引。

  檢視索引:mysql> show index from hello;   檢視表格 hello的索引。

  刪除索引:mysql> drop index in_name on hello; 刪除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 modify id int unsigned not null;刪除表hello中 id列(int型別) 的自增特性。

  刪除主鍵索引:mysql> alter table hello drop PRIMARY KEY;

  建立唯一索引:mysql> alter table hello add unique(name); 為hello表的name建立唯一索引名是預設的。

  建立主鍵索引:mysql> alter table hello add primary key(id); 為hello表的id欄位建立主鍵索引。

  將主鍵索引設為自增:mysql> alter table hello modify id int unsigned not null auto_increment;將hello表中的主鍵id列設定為自增。

三、檢視  

     主表資料的變化,檢視會時時做相對應的變更。如果視圖所依賴的資料表出現錯誤(已刪除)則視圖也會發生錯誤。

  建立視圖:mysql> create view v_hello as select * from hello where id >5;

#  刪除視圖:mysql> drop 問題 v_hello;

  刪除視圖:mysql> drop #_hello;

#hello;

##  查看視圖的建立過程:mysql> show create view v_hello; 查看視圖v_hello 的建立過程。

四、內建函數

字函數

  1、CONCAT(str1,str2, ................ ; select lcase("MYSQL");

  3、UCASE(str1) 轉大寫

    mysql> select UCASE("MysqlTH");

##mysql> select UCASE("MysqlTH");

## 、 ) str的長度

    mysql> select length('mysql');

  5、LTRIM(Str) 移除前段空格

" my  my 〕sql); ;

  6、RTRIM(str) 移除後端空格

    mysql> select RTRIM(' my空格

#    7、REPEAT( mycount  ');

  7、REPEAT(str.

    mysql> select repeat('mysql',2);

  8、REPLACE(str,search_str,replcae_str) 替換為中的search_str  replac_strstr,search_str,replcae_str) 將中的search_str 合子 select REPLACE('mysql','m','M');

  9、SUBSTRING(str,postion,length) 從str的postion開始取length個字元

   mysql> substring('mysql',1,2);  從1開始

  10、SPACE(count) 產生count個空格

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

數學函數

1、BIN(decimal number):   將十進位轉為二進位

#2、 CEILING(number) 向上取整    mysql> select ceiling(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