程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql常用操作

mysql常用操作

編輯:MySQL綜合教程

mysql常用操作


1. mysql insert update on duplicate

如果更新 key 沖突,那麼按照指定的規則來更新數據,有時候這樣可以方便不少。還有一個是連表更新數據,這樣可以將 table_b 的 狀態同步到 table_a, 本質上和 多表查詢是類似的。

insert into myblog (id,title,ctime) values(123,'hello',now())on duplicate key update title=values(title),ctime=values(ctime);
update table_a a , table_b b set a.shop_status = b.group_status where a.shop_id = b.shop_id;

2. 插入,從另一張表選擇內容插入到新表

將 blog_bak表中的所有數據導入到myblog 中,表 blog 和 blog_bak 應該有同樣的表結構

insert into myblog( blog,ctime) select * from blog_bak;

3. mysql 索引

給自己的表添加索引,可以給多個字段添加索引,有下面兩種方式,對應的,刪除索引的方法也列在了下面。

create index index_name on table_name (column_list);
alter table table_name add index index_name (column_list);
drop index index_name on table;
alter table table_name drop index index_name;

4. mysql show

有時候遇到了 warnnings,怎麼查看呢,可以用下面的命令,查看全表的信息,可以查到自己表的注釋信息是可以用最後一個命令full fields from。

show warnings;
show errors;
show tables like '%talname%';
show full fields from your_table;

5. mysql 數據導入和導出

truncate table會清空表中的數據,包括auto_increment的字段都會被重置。mysqldump 可以又這些選擇,導出表,導出庫,導出表結構,導出表中的數據。或者整體導出,下面都有對應的shell命令。

mysqldump -h localhost -ppasswd  -uroot -d database > dump.sql ;
#只導出數據庫的結構
mysqldump -h localhost -ppasswd  -uroot  database  > dump.sql ;
#導出數據庫的結構和所有的數據
mysqldump -h localhost -ppasswd  -uroot -d database tablename > dump.sql ;
#只導出表結構
mysqldump -h localhost -ppasswd  -uroot  database tablename > dump.sql ;
#導出表結構和表中的數據
mysql -u root -p yourpasswd -h localhost yourdb < dump.sql
#將dump.sql 導出入到你的數據庫

6. mysql 幾個簡單的時間處理函數

請不要吧 day 寫成 days ,month , hour 同理,group by 多個字段 從 col_a -> col_b -> col_c 優先級依次降低。

select date_format(now(),"%Y-%m-%d %H:%i:%s") now;
select date_sub(now(), interval 10 day) as yesterday; 
select * from test_table where status = 1 order by col_a desc, col_b desc, col_c asc limit 100;

7. mysql 變量

可以通過 select 給變量賦值,對,你沒有看錯,這兩種方式都可以給@a賦值。使用的時候記得用@啊,就像PHP裡面的$一樣,這個變量只在這個鏈接周期中有效。

set @a = 100;
set @a:=100;
select @a:=300;  

8. mysql 存儲過程

下面是一個簡單的存儲過程的例子,因為 mysql 默認的 終止符是; 而這個正好是存儲過程的語法,所以在編寫存儲過程之前,先將 delimiter 改成 $,在存儲過程結束之後,應將 delimiter 改成默認的; 這樣符合我們的習慣, 最後是調用這個存儲過程call p()。具體代碼如下:

delimiter $ 
create procedure p()
begin
select * from ttt;
end;
$
delimiter ;     
call p();       

9. mysql 中文亂碼,設置成utf8.

下面是我的 centos 6.5 上的mysql 的配置文件,mysql是通過yum安裝的,貌似版本都是5.1的….我添加的內容是斜體部分,目的就是設置默認的字符集為utf8 ,如果有些部分沒有,請自行添加,比如[client]沒有的話,在我的配置文件中,我就是自己添加的,不知道那個版本的mysql配置為何那麼奇葩,以至於剛打開都不太敢相信自己的眼睛。

[client]
default_character_set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character_set_server=utf8
init_connect=’SET NAMES utf8’
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8

10. mysql 權限管理

權限管理的所有信息都存放在mysql這個數據庫中。只有通過root用戶進去才可以進行對應的操作。前面一個是創建一個用戶,host 是表明這個用戶可以從什麼地方連接數據庫,設置成本地比較安全,注意其中的password()函數。flush privileges是讓修改生效。最後的grant是將一個數據庫t_sweet 授權給這個用戶。

use mysql;
insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
flush privileges
grant all privileges on t_sweet.* to sweet_b@localhost identified by 'yourpassword'

設置好之後可以這樣看一下。

show variables like 'character%'

修改配置文件
修改完之後應該變成這個樣子
表中的中文字符正常顯示了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved