本文主要给大家介绍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
二、常用操作
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,输入密码即可。
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相关的一些常识,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。