旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

MySQL经常使用操纵及基础知识【MySQL教程】,MySQL,常用操作,基础知识

作者:搜教程发布时间:2019-11-27分类:MySQL教程浏览:91评论:0


导读:1、启动和封闭mysql效劳器:servicemysqlstartservicemysqlstop2、重启MySQL效劳:servicemysql...

1、启动和封闭mysql效劳器:

service mysql start
service mysql stop

2、重启MySQL效劳:

service mysql restart

3、确认是不是启动胜利,mysql节点处于LISTEN状况示意启动胜利:

sudo netstat -tap | grep mysql

4、进入mysql shell界面:

mysql -u root -p

5、衔接MYSQL:

花样: mysql -h主机地点 -u用户名 -p用户暗码 (注:u与root可以不必加空格,别的也一样)

1、衔接到本机上的MYSQL

找到mysql的装置目次,平常可以直接键入敕令mysql -uroot -p,回车后提醒你输暗码,假如刚装置好MYSQL,超等用户root是没有暗码的,故直接回车即可进入到MYSQL中了.

2、衔接到长途主机上的MYSQL

假定长途主机的IP为:10.0.0.1,用户名为root,暗码为123。则键入以下敕令:

mysql -h10.0.0.1 -uroot -p123

6、退出MYSQL敕令 :

exit (回车)

7、查询mysql正在执行的历程:

show processlist;

8、检察用户:

use mysql;
select * from user;

9、新建用户:

CREATE USER  'user_name'@'host'  IDENTIFIED BY  'password';

user_name:要竖立用户的名字。

host:示意要这个新竖立的用户许可从哪台机上岸,假如只许可从本机上岸,则填 ‘localhost’ ,假如许可从长途上岸,则填 ‘%’

password:新竖立用户的上岸数据库暗码,假如没暗码可以不写。

例:

CREATE USER  ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; //示意竖立的新用户,名为aaa,这个新用户暗码为123456,
只许可本机上岸
CREATE USER  'bbb'@'%' IDENTIFED BY '123456';//示意新竖立的用户,名为bbb,这个用户暗码为123456,
可以从其他电脑长途上岸mysql地点效劳器
CREATE USER  ‘ccc’@‘%’ ;//示意新竖立的用户ccc,没有暗码,可以从其他电脑长途上岸mysql效劳器

10、受权用户:

GRANT privileges ON  databasename.tablename  TO  ‘username’@‘host’

privileges:示意要授与什么权利,比方可以有 select , insert ,delete,update等,假如要授与悉数权利,则填 ALL

databasename.tablename:示意用户的权限能用在哪一个库的哪一个表中,假如想要用户的权限很作用于一切的数据库一切的表,则填 * . *,*是一个通配符,示意悉数。

’username‘@‘host’:示意受权给哪一个用户。

比方:

grant all on *.* to 'test'@'localhost'; #给test用户受权,让test用户能给一切库一切表执行一切的权利
GRANT  select,insert  ON  zje.zje  TO ‘aaa’@‘%’;//示意给用户aaa受权,让aaa能给zje库中的zje表 执行 insert 
和 select。

注重:

用以上敕令受权的用户不能给其他用户受权,假如想这个用户可以给其他用户受权,就要在背面加上 WITH GRANT OPTION

如: GRANT ALL ON *.* TO ’aaa‘@'%' WITH GRANT OPTION;

相干引荐:《mysql教程》

11、限定ip登录:

比方,设置mysql只要172.29.8.72和192.168.3.39可以衔接上

GRANT ALL ON *.* TO 'username'@'172.29.8.72' IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL  ON *.* TO 'username'@'192.168.3.39' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;

12、删除用户:

敕令:DROP USER ‘user_name’@‘host’

例:

drop user 'test'@'%';  #删除用户test

13、显现数据表情势:

use 数据库名;

show columns from 表名;

14、mysql数据范例:

MySQL支撑多种范例,大抵可以分为三类:数值、日期/时刻和字符串(字符)范例。

MySQL支撑一切规范SQL数值数据范例。作为SQL规范的扩大,MySQL也支撑整数范例TINYINT、MEDIUMINT和BIGINT

15、插进去数据:

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

假如数据是字符型,必须运用单引号或许双引号,如:“value”。

16、查询数据:

   SELECT column_name,column_name
    FROM table_name
    [WHERE Clause]
    [LIMIT N][ OFFSET M]

查询语句中你可以运用一个或很多个表,表之间运用逗号(,)支解,并运用WHERE语句来设定查询前提。

SELECT 敕令可以读取一条或很多条纪录。

你可以运用星号(*)来替代其他字段,SELECT语句会返回表的一切字段数据

你可以运用 WHERE 语句来包括任何前提。

你可以运用 LIMIT 属性来设定返回的纪录数。

你可以经由过程OFFSET指定SELECT语句最先查询的数据偏移量。默许情况下偏移量为0。

17、limit和offset用法

mysql里分页平经常使用limit来完成

1、select* from article LIMIT 1,3

2、select * from article LIMIT 3 OFFSET 1

上面两种写法都示意取2,3,4三条条数据

当limit背面跟两个参数的时刻,第一个数示意要跳过的数目,后一名示意要取的数目,比方

select* from article LIMIT 1,3 就是跳过1条数据,从第2条数据最先取,取3条数据,也就是取2,3,4三条数据

当 limit背面跟一个参数的时刻,该参数示意要取的数据的数目

比方 select* from article LIMIT 3 示意直接取前三条数据,相似sqlserver里的top语法。

当 limit和offset组合运用的时刻,limit背面只能有一个参数,示意要取的的数目,offset示意要跳过的数目 。

比方select * from article LIMIT 3 OFFSET 1 示意跳过1条数据,从第2条数据最先取,取3条数据,也就是取2,3,4三条数据

18、更新数据:

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

你可以同时更新一个或多个字段。

你可以在 WHERE 子句中指定任何前提。

你可以在一个零丁表中同时更新数据。

19、隐约查询:

select c field1,field2,…fieldN
from table_name
where field1 like condition1 [and[or]] field2=‘somevalue’;

通配符的分类:

%百分号通配符: 示意任何字符涌现恣意次数 (可所以0次).

_下划线通配符:示意只能婚配单个字符,不能多也不能少,就是一个字符。

20、排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默许 ASC]], [field2...] [ASC [DESC][默许 ASC]]

可以增加 WHERE…LIKE 子句来设置前提

21、分组

GROUP BY 语句依据一个或多个列对效果集举行分组。在分组的列上我们可以运用 COUNT, SUM, AVG等函数。

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

例子:

SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;

22、null值处置惩罚

MySQL 中处置惩罚 NULL 运用 IS NULL 、 IS NOT NULL 、<=>运算符。

IS NULL: 当列的值是 NULL,此运算符返回 true。
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
<=>: 比较操纵符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

23、in

in经常使用于where表达式中,其作用是查询某个范围内的数据。

用法:select * from table where field in (value1,value2,value3,…);

例子:

查询book表中id为2和4的一切数据:

select * from book where id in(2,4)

24、not in

not in与in作用相反,用法和示比方下:

用法:select * from where field not in (value1,value2,value3,…);

25、exists

本示例所示查询查找由位于以字母 B 开首的都市中的任一出书商出书的书名:

SELECT title
FROM titles
WHERE EXISTS
    (SELECT *
    FROM publishers
    WHERE pub_id = titles.pub_id
    AND city LIKE 'B%')

用IN:

SELECT title
FROM titles
WHERE pub_id IN
    (SELECT pub_id
    FROM publishers
    WHERE city LIKE 'B%')

26、导入数据:

mysql 敕令导入

运用 mysql 敕令导入语法花样为:

mysql -u用户名    -p暗码    <  要导入的数据库数据(runoob.sql)

实例:

# mysql -uroot -p123456 < runoob.sql

以上敕令将将备份的全部数据库 runoob.sql 导入。

source 敕令导入

source 敕令导入数据库须要先登录到数库终端:

mysql> create database abc;      # 竖立数据库
mysql> use abc;                  # 运用已竖立的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库

运用 LOAD DATA 导入数据

MySQL 中供应了LOAD DATA INFILE语句来插进去数据。 以下实例中将从当前目次中读取文件 dump.txt ,将该文件中的数据插进去到当前数据库的 mytbl 表中。

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

假如指定LOCAL关键词,则表明从客户主机上按途径读取文件。假如没有指定,则文件在效劳器上按途径读取文件。

你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,然则默许标记是定位符和换行符。

运用 mysqlimport 导入数据

mysqlimport 客户端供应了 LOAD DATA INFILEQL 语句的一个敕令行接口。mysqlimport 的大多数选项直接对应 LOAD DATA INFILE 子句。

从文件 dump.txt 中将数据导入到 mytbl 数据表中, 可以运用以下敕令:

$ mysqlimport -u root -p --local mytbl dump.txt
password *****

27、导出数据:

运用SELECT…INTO OUTFILE语句来简朴的导出数据到文本文件上。

#将数据表 runoob_tbl 数据导出到 /tmp/runoob.txt 文件中: 
mysql> SELECT * FROM runoob_tbl    
    -> INTO OUTFILE '/tmp/runoob.txt';
    
#经由过程敕令选项来设置数据输出的指定花样,以下实例为导出 CSV 花样:
    mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';
#生成一个文件,各值用逗号离隔。这类花样可以被很多顺序运用。
    SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM test_table;

SELECT … INTO OUTFILE 语句有以下属性:

LOAD DATA INFILE是SELECT … INTO

OUTFILE的逆操纵,SELECT句法。为了将一个数据库的数据写入一个文件,运用SELECT … INTO

OUTFILE,为了将文件读回数据库,运用LOAD DATA INFILE。

SELECT…INTO OUTFILE

'file_name’情势的SELECT可以把被挑选的行写入一个文件中。该文件被竖立到效劳器主机上,因而您必须具有FILE权限,才运用此语法。

输出不能是一个已存在的文件。防备文件数据被改动。

你须要有一个上岸效劳器的账号来检索文件。不然 SELECT … INTO OUTFILE 不会起任何作用。

导出表作为原始数据

mysqldump 是 mysql 用于转存储数据库的实用顺序。它重要发作一个 SQL 剧本,个中包括从新从新竖立数据库所必须的敕令 CREATE TABLE INSERT 等。

运用 mysqldump 导出数据须要运用 --tab 选项来指定导出文件指定的目次,该目的必须是可写的。

以下实例将数据表 runoob_tbl 导出到 /tmp 目次中:

$ mysqldump -u root -p --no-create-info 
–tab=/tmp RUNOOB runoob_tbl
password ******

导出 SQL 花样的数据

导出 SQL 花样的数据到指定文件,以下所示:

$ mysqldump -u root -p RUNOOB runoob_tbl > dump.txt
password ******

假如你须要将数据拷贝至其他的 MySQL 效劳器上, 你可以在 mysqldump 敕令中指定数据库名及数据表。

在源主机上执行以下敕令,将数据备份至 dump.txt 文件中:

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

假如完全备份数据库,则无需运用特定的表称号。

假如你须要将备份的数据库导入到MySQL效劳器中,可以运用以下敕令,运用以下敕令你须要确认数据库已竖立:

$ mysql -u root -p database_name < dump.txt
password *****

你也可以运用以下敕令将导出的数据直接导入到长途的效劳器上,但请确保两台效劳器是相通的,是可以互相接见的:

$ mysqldump -u root -p database_name 
| mysql -h other-host.com database_name

以上敕令中运用了管道来将导出的数据导入到指定的长途主机上。

28、 MySQL 事件

MySQL 事件重要用于处置惩罚操纵量大,复杂度高的数据。比如说,在职员治理体系中,你删除一个职员,你即须要删除职员的基本资料,也要删除和该职员相干的信息,如信箱,文章等等,如许,这些数据库操纵语句就组成一个事件!

在 MySQL 中只要运用了 Innodb 数据库引擎的数据库或表才支撑事件。
事件处置惩罚可以用来保护数据库的完全性,保证成批的 SQL 语句要么悉数执行,要么悉数不执行。
事件用来治理 insert,update,delete 语句

平常来讲,事件是必须满足4个前提(ACID)::原子性(Atomicity,或称不可支解性)、一致性(Consistency)、断绝性(Isolation,又称独立性)、持久性(Durability)。

MYSQL 事件处置惩罚重要有两种要领:

1、用 BEGIN, ROLLBACK, COMMIT来完成

BEGIN 最先一个事件
ROLLBACK 事件回滚
COMMIT 事件确认

2、直接用 SET 来转变 MySQL 的自动提交情势:

SET AUTOCOMMIT=0 制止自动提交
SET AUTOCOMMIT=1 开启自动提交

29、字符集设置:

Ubuntu下设置MySQL字符集为utf8

1.mysql设置文件地点

/etc/mysql/my.cnf

2.在[mysqld]在下方增加以下代码

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

3.重启mysql效劳

sudo service mysql restart

4.检测字符集是不是更新成utf8.

进入mysql,mysql -u root -p,输入show variables like '%character%' 检察字符集

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

注重事项:在修正字符集之前已竖立的数据库,character_set_database值不会发作转变,往数据库中插进去中文数据仍然会显现乱码,所以最幸亏装置完MySQL后就将字符集改成utf8,不然后续修正会较贫苦。

字符集修正:

show character set; #检察当前MySQL效劳实例支撑的字符集、字符序以及字符集占用的最大字节长度等信息

以下图:

show variables like 'character%';#检察当前MySQL会话运用的字符集

效果如图:

character_set_client: 客户端泉源数据运用的字符集

character_set_connection: 数据通信链路的字符集,当MySQL客户机向效劳器发送要求时,数据以该字符集举行编码

character_set_database: 数据库字符集

character_set_filesystem: MySQL效劳器文件体系的字符集,该值是牢固的binary。

character_set_results: 效果集的字符集,MySQL效劳器向MySQL客户机返回执行效果时,执行效果以该字符集举行编码

character_set_server: 内部操纵字符集(MySQL效劳实例字符集) character_set_system: 元数据(字段名、表名、数据库名等)的字符集默许为utf8

修正字符集:

set character_set_results=gbk;

如图:

30、时刻同步:

tzselect设置时区敕令,依据选项选到中国的北京时刻即可。

执行以下敕令:

vi .bash_profile

在末端到场这两行:

TZ='Asia/Shanghai'
export TZ

然后运转敕令革新设置:

source .bash_profile

再次运转date敕令发明时区已胜利修正:

hadoop@Master:~$ date -R
Tue, 30 Jul 2019 19:42:41 +0800

linux时区从新设置后,发明mysql插进去的数据照样本来时区的时刻,下面是从新设置mysql时区的要领:

进入mysql控制台运转以下指令检察mysql时刻。

select CURTIME();

查询后发明和date敕令查询出来的时刻不一样,下面最先修正:

运转暂时处理敕令:

SET time_zone = '+8:00';

革新设置:

flush privileges;

修正设置文件使得下次重启mysql效劳以后永远见效

vi /etc/my.cnf

增加以下设置:

[mysqld]
default_time_zone = '+8:00'

31、grep敕令:

1.作用

Linux体系中grep敕令是一种壮大的文本搜刮东西,它能运用正则表达式搜刮文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,示意全局正则表达式版本,它的运用权限是一切用户。

2.花样

grep [options]

简朴实例:

$ grep ‘test’ d* #显现一切以d开首的文件中包括 test的行。
$ grep ‘test’ aa bb cc  #显现在aa,bb,cc文件中婚配test的行。

32、awk敕令:

awk是一个壮大的文本剖析东西,相对于grep的查找,sed的编辑,awk在其对数据剖析并生成报告时,显得尤其壮大。简朴来讲awk就是把文件逐行的读入,以空格为默许分隔符将每行切片,切开的部份再举行种种剖析处置惩罚。

运用要领 : awk '{pattern + action}' {filenames}

以上就是MySQL经常使用操纵及基础知识的细致内容,更多请关注ki4网别的相干文章!

标签:MySQL常用操作基础知识


欢迎 发表评论: