>  기사  >  데이터 베이스  >  MySQL 일반 작업 및 기본 지식

MySQL 일반 작업 및 기본 지식

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼앞으로
2019-08-31 17:36:513563검색

MySQL 일반 작업 및 기본 지식

1. mysql 서버를 시작하고 종료합니다.

service mysql start
service mysql stop

2. MySQL 서비스를 다시 시작합니다.

service mysql restart

3. mysql 노드가 LISTEN 상태인지 확인합니다. 성공적인 시작 표시:

sudo netstat -tap | grep mysql

MySQL 일반 작업 및 기본 지식

4. mysql 셸 인터페이스 입력:

mysql -u root -p

5. MYSQL에 연결:

형식: mysql -h 호스트 주소 -u 사용자 이름 -p 사용자 비밀번호(참고) : u와 root는 공백이 필요하지 않습니다. 기타 사항)

1. 이 머신에서 MYSQL에 연결합니다.

mysql의 설치 디렉터리를 찾습니다. 일반적으로 Enter 키를 누른 후 명령을 직접 입력할 수 있습니다. MYSQL이 방금 설치된 경우 슈퍼유저 루트 비밀번호가 없으므로 Enter 키를 눌러 MYSQL을 입력하세요.

2. 원격 호스트의 MYSQL에 연결하세요

원격 호스트는 10.0.0.1, 사용자 이름은 루트, 비밀번호는 123입니다. 그런 다음 다음 명령을 입력합니다.

mysql -h10.0.0.1 -uroot -p123

6. MYSQL 명령을 종료합니다.

exit (回车)

7. mysql이 실행 중인 프로세스를 쿼리합니다.

show processlist;

8. 새 사용자:

use mysql;
select * from user;

user_name: 생성할 사용자의 이름입니다. host: 새로 생성된 사용자가 로그인할 수 있는 컴퓨터를 나타냅니다. 로컬 컴퓨터에서만 로그인이 허용되는 경우 'localhost'를 입력합니다.

password: 새로 생성된 사용자 로그인 데이터베이스 비밀번호입니다. 비밀번호가 없으면 작성할 필요가 없습니다.

예:

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

10. 승인된 사용자:

CREATE USER  ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; //表示创建的新用户,名为aaa,这个新用户密码为123456,
只允许本机登陆
CREATE USER  'bbb'@'%' IDENTIFED BY '123456';//表示新创建的用户,名为bbb,这个用户密码为123456,
可以从其他电脑远程登陆mysql所在服务器
CREATE USER  ‘ccc’@‘%’ ;//表示新创建的用户ccc,没有密码,可以从其他电脑远程登陆mysql服务器

privileges: 선택, 삽입, 삭제, 업데이트 등 부여할 권한을 나타냅니다. 모든 권한을 부여하려면 모두 입력하세요. tablename: 사용자의 권한을 어떤 데이터베이스의 어떤 테이블에서 사용할 수 있는지 나타냅니다. 사용자의 권한을 모든 데이터베이스의 모든 테이블에 적용하려면 *를 입력하세요. .

'username'@'host': 인증된 사용자를 나타냅니다.

예:

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

참고:

위 명령으로 인증된 사용자는 다른 사용자를 인증할 수 없습니다. 이 사용자가 다른 사용자를 인증할 수 있도록 하려면 끝에 WITH GRANT OPTION을 추가해야 합니다.

예를 들어 : GRANT ALL ON * .* TO 'aaa'@'%' WITH GRANT OPTION;

관련 권장사항: "

mysql tutorial

"

11. IP 로그인 제한:

예를 들어, mysql을 172.29로만 설정하세요. .8.72 및 192.168.3.39는

grant all on *.* to 'test'@'localhost'; #给test用户授权,让test用户能给所有库所有表实行所有的权力
GRANT  select,insert  ON  zje.zje  TO ‘aaa’@‘%’;//表示给用户aaa授权,让aaa能给zje库中的zje表 实行 insert 
和 select。

12에 연결할 수 있습니다. 사용자 삭제:

명령: DROP USER 'user_name'@'host'예:

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;

13.

데이터베이스 이름 사용;

14.mysql 데이터 유형:

MySQL은 대략 숫자, 날짜/시간 및 문자열(문자) 유형의 세 가지 범주로 나눌 수 있는 여러 유형을 지원합니다.

MySQL은 모든 표준 SQL 숫자 데이터 유형을 지원합니다. SQL 표준의 확장으로 MySQL은 정수 유형 TINYINT, MEDIUMINT 및 BIGINT

15도 지원합니다. 데이터 삽입:

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

데이터가 문자 유형인 경우 다음과 같이 작은따옴표나 큰따옴표를 사용해야 합니다. 값".

16. 쿼리 데이터:

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
쿼리 문에 하나 이상의 테이블을 사용할 수 있습니다. 쉼표(,)를 사용하여 테이블을 구분하고 WHERE 문을 사용하여 쿼리 조건을 설정합니다.

SELECT 명령은 하나 이상의 레코드를 읽을 수 있습니다.

별표(*)를 사용하여 다른 필드를 바꿀 수 있으며 SELECT 문은 테이블의 모든 필드 데이터를 반환합니다.WHERE 문을 사용하여 모든 조건을 포함할 수 있습니다.

LIMIT 속성을 사용하여 반환되는 레코드 수를 설정할 수 있습니다.

OFFSET을 사용하여 SELECT 문이 쿼리를 시작하는 데이터 오프셋을 지정할 수 있습니다. 기본적으로 오프셋은 0입니다.

17. 제한 및 오프셋 사용

mysql의 페이징은 일반적으로 제한

1로 구현됩니다. LIMIT 1,3

2에서 선택* LIMIT 3 OFFSET 1위의 두 가지 쓰기입니다. 방법 이는 모두 2, 3, 4의 세 가지 데이터 조각을 가져오는 것을 의미합니다.

limit 뒤에 두 개의 매개변수가 오면 첫 번째 숫자는 건너뛸 숫자를 나타내고 마지막 숫자는 가져올 숫자를 나타냅니다. 예를 들어

LIMIT 1,3 기사의 select*는 2번째 데이터부터 1개의 데이터를 건너뛰고 3개의 데이터, 즉 2, 3, 4개의 데이터를 가져오는 것을 의미합니다

limit 다음에 오는 경우 매개변수, 이 매개변수는 데이터 수

를 가져오려는 것을 나타냅니다. 예를 들어 LIMIT 3 기사에서 select*는 sqlserver의 최상위 구문과 유사하게 처음 세 개의 데이터를 직접 가져오는 것을 의미합니다.

limit와 offset을 조합하여 사용하는 경우 Limit 뒤에는 가져올 수량을 나타내는 매개변수와 건너뛸 수량을 나타내는 offset이 하나만 있을 수 있습니다.

예를 들어 LIMIT 3 OFFSET 1 기사에서 *를 선택하면 1개의 데이터를 건너뛰고 두 번째 데이터부터 시작하여 3개의 데이터, 즉 2, 3, 4개의 데이터를 가져오는 것을 의미합니다

18. 데이터 업데이트:

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

하나 또는 여러 필드를 동시에 업데이트할 수 있습니다.

你可以在 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 &#39;B%&#39;)

用IN:

SELECT title
FROM titles
WHERE pub_id IN
    (SELECT pub_id
    FROM publishers
    WHERE city LIKE &#39;B%&#39;)

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 &#39;dump.txt&#39; 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 &#39;/tmp/runoob.txt&#39;;
    
#通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式:
    mysql> SELECT * FROM passwd INTO OUTFILE &#39;/tmp/runoob.txt&#39;
    -> FIELDS TERMINATED BY &#39;,&#39; ENCLOSED BY &#39;"&#39;
    -> LINES TERMINATED BY &#39;\r\n&#39;;
#生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用。
    SELECT a,b,a+b INTO OUTFILE &#39;/tmp/result.text&#39;
    FIELDS TERMINATED BY &#39;,&#39; OPTIONALLY ENCLOSED BY &#39;"&#39;
    LINES TERMINATED BY &#39;\n&#39;
    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=&#39;SET collation_connection = utf8_unicode_ci&#39;
init_connect=&#39;SET NAMES utf8&#39;
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服务实例支持的字符集、字符序以及字符集占用的最大字节长度等信息

如下图:

MySQL 일반 작업 및 기본 지식

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

结果如图:

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;

如图:

MySQL 일반 작업 및 기본 지식

30、时间同步:

tzselect设置时区命令,根据选项选到中国的北京时间即可。

执行如下命令:

vi .bash_profile

在末尾加入这两行:

TZ=&#39;Asia/Shanghai&#39;
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 = &#39;+8:00&#39;;

刷新配置:

flush privileges;

修改配置文件使得下次重启mysql服务之后永久生效

vi /etc/my.cnf

添加如下配置:

[mysqld]
default_time_zone = &#39;+8:00&#39;

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 일반 작업 및 기본 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제