百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL常用操纵及根基见识
分享文章到:

MySQL常用操纵及根基见识

发布时间:09/01 来源:未知 浏览: 关键词:

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

service mysql start
service mysql stop

2、重新启动MySQL效劳:

service mysql restart

3、确定可否启动成功,mysql节点处于LISTEN状态表示启动成功:

sudo netstat -tap | grep mysql

1567243537(1).png

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效劳实例支撑的字符集、字符序乃至字符集占用的最大字节长度等信息

如下图:

1567243564(1).png

show variables like 'character%';#查看当前MySQL会话使用的字符集

结果如图:

1567243574(1).png

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;

如图:

1567243584(1).png

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常用操纵及根基知识的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板