温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL相关的一些常识

发布时间:2020-05-06 16:15:20 来源:亿速云 阅读:279 作者:三月 栏目:数据库

本文主要给大家介绍MySQL相关的一些常识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下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

  MySQL相关的一些常识  


二、常用操作

    

 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//设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;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;

七、条件控制:

1、WHERE 语句:

>SELECT* FROM tb_name WHERE id=3;

2、HAVING 语句:

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

3、相关条件控制符: 

=、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT

AND、OR

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

ISNULL 空值检测

 八、MySQL的正则表达式:

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

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

2、特殊字符需要转义。

 九、MySQL的一些函数:

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

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

2、数学函数:

AVG、SUM、MAX、MIN、COUNT;

3、文本处理函数:

TRIM、LOCATE、UPPER、LOWER、SUBSTRING

4、运算符:

+、-、*、\

5、时间函数:

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

 十、分组查询:

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

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

2、条件使用Having;

3、ORDER BY 排序:

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

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

十二、全文检索——MATCH和AGAINST

1、SELECTMATCH(note_text)AGAINST('PICASO') FROM tb_name;

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

 十三、视图

1、创建视图

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

2、视图的特殊作用:

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

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

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

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

十四、触发器:

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

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

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相关的一些常识,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI