码迷,mamicode.com
首页 > 数据库 > 详细

工作总结-MySQL相关

时间:2016-08-10 00:57:45      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:general   数据库   local   linux   mysql   

一、MySQL下载与安装

    (一)、可以选择Linux General来下载免编译的tar.gz的包,解压以后,具体操作可根据

    (1)、mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql

    (2)、建立mysql用户: useradd -s /sbin/nologin mysql

    (3)、初始化数据库

        [root@localhost src]# cd /usr/local/mysql
        [root@localhost mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
        [root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

    (4)、拷贝配置文件

[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf
        [root@localhost mysql]# cp support-files/mysql.server  /etc/init.d/mysqld
        [root@localhost mysql]# chmod 755 /etc/init.d/mysqld
    (6)、
        [root@localhost mysql]# vim /etc/init.d/mysqld

           需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录)

      (7)、把启动脚本加入系统服务项,并设定开机启动,启动mysql

        [root@localhost mysql]# chkconfig --add mysqld
        [root@localhost mysql]# chkconfig mysqld on
        [root@localhost mysql]# service mysqld start

          如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:[root@localhost mysql]# ps aux |grep mysqld

    (二)、也可以下载rpm包,直接用rpm -ivh filename 来安装

         rpm -ivh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

         yum install mysql mysql-community-server -y

    


二、常用操作

    

 flushprivileges ;//修改权限之后,刷新MySQL的系统权限相关表方可生效

 (一)Linux下MySQL的备份与还原 
1. 备份 
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) 
[root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可。
2. 还原
法一:
[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同1.2还原。
法二:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) 
[root@localhost mysql]# mysql -u root -p voice<voice.sql,输入密码即可。


mysqldump: Got error: 1016 when usingLOCK TABLES 

hitidea是一个有很多数据表的数据库(Wordpress MU),搜索了一下,发现只要在mysqldump的时候加上–lock-tables=false就可以解决问题。

 

零、用户管理:

1、新建用户:

>CREATEUSER name IDENTIFIED BY ‘ssapdrow‘;

2、更改密码:

>SETPASSWORD FOR name=PASSWORD(‘fdddfd‘);

3、权限管理

>SHOWGRANTS FOR name;    //查看name用户权限

>GRANTSELECT ON db_name.* TO name;//name用户db_name数据库的所有权限

>REVOKESELECT ON db_name.* TO name;//GRANT的反操作,去除权限;

一、数据库操作: 

1、查看数据库:

>SHOWDATABASES;

2、创建数据库:

>CREATEDATABASE db_name;//db_name为数据库名

3、使用数据库:

>USEdb_name;

4、删除数据库:

>DROPDATABASE db_name;

二、创建表:

1、创建表:

>CREATETABLE table_name

>idTINYINT UNSIGNED NOT NULL AUTO_INCREMENT,//id值,无符号、非空、递增——唯一性,可做主键。

>nameVARCHAR(60) NOT NULL

>scoreTINYINT UNSIGNED NOT NULL DEFAULT 0,//设置默认列值

>PRIMARYKEY(id)

>ENGINE=InnoDB//设置表的存储引擎,一般常用InnoDBMyISAMInnoDB可靠,支持事务;MyISAM高效不支持全文检索

>DEFAULTcharset=utf8;//设置默认的编码,防止数据库中文乱码

    如果有条件的创建数据表还可以使用  >CREATE TABLE IF NOT EXISTS tb_name(........

2、复制表:

>CREATETABLE tb_name2 SELECT * FROM tb_name;

    或者部分复制:

>CREATETABLE tb_name2 SELECT id,name FROM tb_name;

3、创建临时表:

>CREATETEMPORARY TABLE tb_name(这里和创建普通表一样);

4、查看数据库中可用的表:

>SHOWTABLES;

5、查看表的结构:

>DESCRIBEtb_name;

    也可以使用:

>SHOWCOLUMNS in tb_name; //from也可以

6、删除表:

>DROP[ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];

    实例:

>DROPTABLE IF EXISTS tb_name;

7、表重命名:

>RENAMETABLE name_old TO name_new;

    还可以使用:

>ALTERTABLE name_old RENAME name_new;

三、修改表:

1、更改表结构:

>ALTERTABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...

    实例:

>ALTERTABLE tb_name ADD COLUMN address varchar(80) NOT NULL;

>ALTERTABLE tb_name DROP address;

>ALTERTABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

四、插入数据:

1、插入数据:

>INSERTINTO tb_name(id,name,score)VALUES(NULL,‘张三‘,140),(NULL,‘张四‘,178),(NULL,‘张五‘,134);

    这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。

2、插入检索出来的数据:

>INSERTINTO tb_name(name,score) SELECT name,score FROM tb_name2;

五、更新数据:

1、指定更新数据:

>UPDATEtb_name SET score=189 WHERE id=2;

>UPDATEtablename SET columnName=NewValue [ WHERE condition ]

六、删除数据:

1、删除数据:

>DELETEFROM tb_name WHERE id=3;

七、条件控制:

1WHERE 语句:

>SELECT* FROM tb_name WHERE id=3;

2HAVING 语句:

>SELECT* FROM tb_name GROUP BY score HAVING count(*)>2

3、相关条件控制符: 

=><<>IN(1,2,3......)BETWEEN a AND bNOT

ANDOR

Linke()用法中      %  为匹配任意、  _  匹配一个字符(可以是汉字)

ISNULL 空值检测

 八、MySQL的正则表达式:

1Mysql支持REGEXP的正则表达式:

>SELECT* FROM tb_name WHERE name REGEXP ‘^[A-D]‘   //找出以A-D 为开头的name

2、特殊字符需要转义。

 九、MySQL的一些函数:

1、字符串链接——CONCAT()

>SELECTCONCAT(name,‘=>‘,score) FROM tb_name

2、数学函数:

AVGSUMMAXMINCOUNT

3、文本处理函数:

TRIMLOCATEUPPERLOWERSUBSTRING

4、运算符:

+-*\

5、时间函数:

DATE()CURTIME()DAY()YEAR()NOW().....

 十、分组查询:

 1、分组查询可以按照指定的列进行分组:

>SELECTCOUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;

2、条件使用Having

3ORDER BY 排序:

ORDERBY DESC|ASC=>按数据的降序和升序排列

十一、UNION规则——可以执行两个语句(可以去除重复行)

十二、全文检索——MATCHAGAINST

1SELECTMATCH(note_text)AGAINST(‘PICASO‘) FROM tb_name;

2InnoDB引擎不支持全文检索,MyISAM可以;

 十三、视图

1、创建视图

>CREATEVIEW name AS SELECT * FROM tb_name WHERE ~~ ORDER BY ~~;

2、视图的特殊作用:

a、简化表之间的联结(把联结写在select中);

b、重新格式化输出检索的数据(TRIMCONCAT等函数);

c、过滤不想要的数据(select部分)

d、使用视图计算字段值,如汇总这样的值。

十四、触发器:

  触发器是指在进行某项指定操作时,触发触发器内指定的操作;

1、支持触发器的语句有DELETEINSERTUPDATE,其他均不支持

2、创建触发器:

>CREATETRIGGER trig AFTER INSERT ON ORDERS FOR EACH ROW SELECT NEW.orser_name;

>INSERT语句,触发语句,返回一个值

3、删除触发器

>DROPTRIGGER trig;

   三、MySQL拷贝表的几种方式

CREATE TABLE IF NOT EXISTS `admin` (  

`id` int(6) unsigned NOT NULL auto_increment,  

`username` varchar(50) NOT NULL default ‘‘,  

`password` varchar(100) default NULL,  

PRIMARY KEY (`id`)   

ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 

1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据)

CREATE TABLE newadmin LIKE admin  

2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。

CREATE TABLE newadmin AS  

(   SELECT * FROM admin   )   

3. 如果你要真正的复制一个表。可以用下面的语句。

CREATE TABLE newadmin LIKE admin;  

INSERT INTO newadmin SELECT * FROM admin; 

 

4. 我们可以操作不同的数据库。

CREATE TABLE newadmin LIKE shop.admin;  

CREATE TABLE newshop.newadmin LIKE shop.admin; 

 

5. 我们也可以拷贝一个表中其中的一些字段。

CREATE TABLE newadmin AS  

(   

SELECT username, password FROM admin  

)  

 

6. 我们也可以讲新建的表的字段改名。

CREATE TABLE newadmin AS  

(   

SELECT id, username AS uname, password AS pass FROM admin  

)  

 

7. 我们也可以拷贝一部分数据。

CREATE TABLE newadmin AS  

( SELECT * FROM admin WHERE LEFT(username,1) = ‘s‘ )  

8. 我们也可以在创建表的同时定义表中的字段信息。

CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) AS ( SELECT * FROM admin )  

 



工作总结-MySQL相关

标签:general   数据库   local   linux   mysql   

原文地址:http://liqilong2010.blog.51cto.com/3029053/1836334

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!