mysql send-q_MYSQL---初识

相关概念说明数据库(Database):按照数据结构来组织、存储和管理数据的仓库,它以一定的组织形式存于存储介质上。数据库本身不真正存储数据,真正的数据是放在数据库中的表(table)中的。

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。我们熟悉的mysql、mariaDB、oracle、DB2属于DBMS

数据库管理员(Database administrator):负责数据库的规划、设计、协调、维护和管理等工作的

数据库存储方式:

1.网状数据库

2.层次型数据库:存在数据冗余的现象

3.关系性数据库 :目前主流 mysql、Oracle

关系性数据库:关系 :关系就是二维表。并满足如下性质:(表中的行、列次序并不重要)行row:表中的每一行,又称为一条记录

列column:表中的每一列,称为属性,字段

主键(Primary key):用于惟一确定一个记录的字段 ###是一种属性,在表格中,关联到某个字段上,这样这个字段就不能有重复数据,用于唯一数据

域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值 ###在表格中,限制某一字段的取值范围

主流RDBMS(relational DBMS)MySQL: MySQL, MariaDB, Percona Server

PostgreSQL: 简称为pgsql, EnterpriseDB

Oracle

MSSQL

DB2

数据库热度排名:

MYSQL的特性

1.插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MYSQL默认引擎 ###存储引擎怎么把数据存放在磁盘上,在磁盘上保存数据格式MyISAM ==> Aria

InnoDB ==> XtraDB

2.单进程,多线程

3.诸多扩展和新特性

4.提供了较多测试组件

5.开源

RPM包安装MySQL

CentOS 7:安装光盘直接提供 ###光盘默认提供的数据库包默认的是mariadb;mariabd和mysql创始人是同一个人,用法基本相同,后续相关文章都是以Centos7中的mariadb示例mariadb-server 服务器包

mariadb 客户端工具包

CentOS 6 ###光盘默认提供的数据库包时mysql

提高mysql安全性

运行mysql_secure_installation ###安装时自带脚本,已经放在/usr/bin/下设置数据库管理员root口令

禁止root远程登录

删除anonymous用户帐号

删除test数据库

[root@centos7 ~]#yum -y install mariadb-server

Installed:

mariadb-server.x86_64 1:5.5.56-2.el7

Dependency Installed:

mariadb.x86_64 1:5.5.56-2.el7 ####由于依赖性,会自动的把客户端的工具给装上

perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7

perl-DBD-MySQL.x86_64 0:4.023-6.el7

Complete!

[root@centos7 ~]#systemctl start mariadb.service ###启动服务

[root@centos7 ~]#ss -ntl ###其监听的端口是tcp的3306

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:41192 *:*

LISTEN 0 50 *:3306 *:*

LISTEN 0 128 *:111 *:*

LISTEN 0 5 192.168.122.1:53 *:*

LISTEN 0 128 *:22 *:*

LISTEN 0 128 127.0.0.1:631 *:*

[root@centos7 ~]#mysql

MariaDB [(none)]> help ###查看帮助,获取的客户端命令的帮助

General information about MariaDB can be found at

http://mariadb.org

List of all MySQL commands:

Note that all text commands must be first on line and end with ';'

? (\?) Synonym for `help'.

clear (\c) Clear the current input statement.

connect (\r) Reconnect to the server. Optional arguments are db and host.

delimiter (\d) Set statement delimiter.

edit (\e) Edit command with $EDITOR.

ent.

客户端程序:mysql: 交互式的CLI工具 ###上述演示的是客户端的用户,不过是本机的客户端连接的是本地的服务器

mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中

mysqladmin:基于mysql协议管理mysqld

mysqlimport:数据导入工具

MyISAM存储引擎的管理工具:myisamchk:检查MyISAM库

myisampack:打包MyISAM表,只读

服务器端程序mysqld_safe

mysqld

mysqld_multi:多实例 ,示例: mysqld_multi --example ###多实例就是在一个服务器上安装多个相同应用;mysql默认不可以多实例,要使用多实例,就必须改配置该默认的端口号,否则冲突

用户账号

mysql用户账号由两部分组成:'USERNAME'@'HOST‘ ###限定了用户名和主机,必须同时符合要求才可以连接服务器端

说明:HOST限制此用户可通过哪些远程主机连接mysql服务器支持使用通配符: ###可以限制默认网段的主机可以连接% 匹配任意长度的任意字符

172.16.0.0/255.255.0.0 或 172.16.%.%

_ 匹配任意单个字符

Mysql 客户端

mysql使用模式(客户端工具):

1.交互式模式:

可运行命令有两类:服务器端命令 和 客户端命令客户端命令:###通过help可以查询,命令比较少\h, help

\u, use

\s, status

\!, system

服务器端命令:###这部分命令相对较多注意必须以;结束SQL, 需要语句结束符;

2.脚本模式:mysql –uUSERNAME -pPASSWORD < /path/somefile.sql ###mysql等待标准输入,可以使用重定向的方式来输入命令

MariaDB [(none)]> source /path/from/somefile.sql ###可以先连上mysql,通过source 执行命令文件也可以;有点像shell脚本的执行方式source和\.等价

mysql命令可用选项:-A, --no-auto-rehash 禁止补全

-u, --user= 用户名,默认为root

-h, --host= 服务器主机,默认为localhost

-p, --passowrd= 用户密码,建议使用-p,默认为空密码

-P, --port= 服务器端口

-S, --socket= 指定连接socket文件路径

-D, --database= 指定默认数据库

-C, --compress 启用压缩

-e “SQL“ 执行SQL命令 ###可以非交互

-V, --version 显示版本

-v --verbose 显示详细信息

--print-defaults 获取程序默认使用的配置

[root@centos7 ~]#mysql -u root -pcentos -e "show databases"

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

修改mysql提示符:

1.[root@centos7 ~]# mysql --prompt="(\u@\h) [\d]> "

2.[root@centos7 ~]#vim /etc/profile.d/mysql.sh

export MYSQL_PS1="(\u@\h) [\d]> "

3.[root@centos7 ~]#vim /etc/my.cnf.d/mysql-clients.cnf

[mysql]

prompt=(\\u@\\h) [\\d]>\\_

[root@centos7 ~]#man mysql ###搜索prompt

socket地址

服务器监听的两种socket地址:ip socket: 监听在tcp的3306端口,支持远程通信 ###网络走的是端口号3306

unix sock: 监听在sock文件上, 仅支持本机通信 ###本机之间客户端和服务端是通过sock通信的/var/lib/mysql/mysql.sock:mysqld---socket---mysql

说明: host为localhost,127.0.0.1时自动使用unix sock

执行命令

运行mysql命令:默认空密码登录mysql>use mysql

mysql>select user();查看当前用户

mysql>SELECT User,Host,Password FROM user;

登录系统: mysql –uroot –p

客户端命令:本地执行mysql> help ###每个命令都完整形式和简写格式

mysql> status 或 \s

服务端命令:通过mysql协议发往服务器执行并取回结果每个命令都必须命令结束符号;默认为分号

SELECT VERSION();

mysql命令历史:~/.mysql_history

服务器端配置

服务器端(mysqld):工作特性有多种配置方式

1、命令行选项:

2、配置文件: 类ini格式

集中式的配置,能够为mysql的各应用程序提供配置信息[mysqld]

[mysqld_safe]

[mysqld_multi]

[mysql]

[mysqldump]

[server]

[client]

格式: parameter = value

说明: _和- 相同; ON, TRUE意义相同; 0, OFF, FALSE意义相同

配置文件:

后面覆盖前面的配置文件,顺序如下:/etc/my.cnf Global选项

/etc/mysql/my.cnf Global选项

SYSCONFDIR/my.cnf Global选项 ###源码配置的家目录

$MYSQL_HOME/my.cnf Server-specific 选项

--defaults-extra-file=path ###命令指定的配置文件

~/.my.cnf User-specific 选项

vim /etc/my.cnf

[mysqld]

skip-networking=1 ###维护使用,只能本机使用,网络连接不了

注:关闭网络连接,只侦听本地客户端, 所有和服务器的交互都通过一个socket实现, socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改

[root@centos7s ~]#ps aux|grep mysql

mysql 3185 0.1 5.3 1766432 82488 ? Ssl 16:13 0:00 /usr/sbin/mysqld ###mysql是mysql用户运行的

root 3258 0.0 0.0 112704 972 pts/0 R+ 16:17 0:00 grep --color=auto mysql

[root@centos7s ~]#pstree -p | grep mysql ###单进程多线程的方式

|-mysqld(3185)-+-{mysqld}(3187)

| |-{mysqld}(3188)

| |-{mysqld}(3189)

| |-{mysqld}(3190)

| |-{mysqld}(3191)

| |-{mysqld}(3192)

[root@centos7 ~]# cat /etc/my.cnf ###服务器端的配置文件

[mysqld] ###带d是服务端 不带d的是客户端

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

关系型数据库的常见组件数据库: database

表: table(行: row 列: column)

索引: index

视图: view

用户: user

权限: privilege

存储过程: procedure,无返回值

存储函数: function,有返回值

触发器: trigger

事件调度器: event scheduler,任务计划

SQL语言规范在数据库系统中, SQL语句不区分大小写(建议用大写)

SQL语句可单行或多行书写,以“;” 结尾

关键词不能跨多行或简写

用空格和缩进来提高语句的可读性

子句通常位于独立行,便于编辑,提高可读性

注释:

SQL标准:/*注释内容*/ 多行注释

-- 注释内容 单行注释,注意有空格

MySQL注释:#

数据库的组件(对象):数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等

命名规则:必须以字母开头

可包括数字和三个特殊字符(# _ $)

不要使用MySQL的保留字 如select

同一database(Schema)下的对象不能同名

SQL语句分类###对应的服务器端命令

DDL: Data Defination Language 数据定义语言CREATE, DROP, ALTER

DML: Data Manipulation Language 数据操纵语言INSERT, DELETE, UPDATE

DCL: Data Control Language 数据控制语言GRANT, REVOKE, COMMIT, ROLLBACK

DQL: Data Query Language 数据查询语言SELECT

数据库操作

创建数据库:CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';

CHARACTER SET 'character set name'

COLLATE 'collate name'

删除数据库DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

查看支持所有字符集: SHOW CHARACTER SET;

查看支持所有排序规则: SHOW COLLATION;

获取命令使用帮助:mysql> HELP KEYWORD;

查看数据库列表:mysql> SHOW DATABASES; ###一般一个项目对应一个数据库

创建数据库示例:注:创建数据库就自动创建了文件夹;数据库本身是不存放任何数据的,只是一个容器,真正存放数据的是表

MariaDB [(none)]> help create database

Name: 'CREATE DATABASE'

Description:

Syntax:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name ###[IF NOT EXISTS]可选项,用来判断此数据库是否存在,若不存在才创建,防止报错

[create_specification] ...

create_specification:

[DEFAULT] CHARACTER SET [=] charset_name ###创建字符集 如utf-8,适合中文,其他的编码可能导致数据库乱码

| [DEFAULT] COLLATE [=] collation_name ###定义排序规则;字母顺序,大小写是否敏感,ASCII等等;字符集会有自己的排序规则,所以这一项不建议更改,默认就好

CREATE DATABASE creates a database with the given name. To use this

statement, you need the CREATE privilege for the database. CREATE

SCHEMA is a synonym for CREATE DATABASE.

URL: http://dev.mysql.com/doc/refman/5.5/en/create-database.html

MariaDB [(none)]> show CHARACTER SET; ###查看数据库的字符集

+----------+-----------------------------+---------------------+--------+

| Charset | Description | Default collation | Maxlen |

+----------+-----------------------------+---------------------+--------+

| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |

| dec8 | DEC West European | dec8_swedish_ci | 1 |

| cp850 | DOS West European | cp850_general_ci | 1 |

| hp8 | HP West European | hp8_english_ci | 1 |

| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |

| latin1 | cp1252 West European | latin1_swedish_ci | 1 | ###默认创建的就是latin编码;所以创建数据库时一定要修改字符集模式

| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |

| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |

| ascii | US ASCII | ascii_general_ci | 1 |

| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |

| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |

| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |

| tis620 | TIS620 Thai | tis620_thai_ci | 1 |

| euckr | EUC-KR Korean | euckr_korean_ci | 2 |

| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |

| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |

| greek | ISO 8859-7 Greek | greek_general_ci | 1 |

| cp1250 | Windows Central European | cp1250_general_ci | 1 |

| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |

| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |

| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |

| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |

| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |

| cp866 | DOS Russian | cp866_general_ci | 1 |

| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |

| macce | Mac Central European | macce_general_ci | 1 |

| macroman | Mac West European | macroman_general_ci | 1 |

| cp852 | DOS Central European | cp852_general_ci | 1 |

| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | ###加强版 utf8还支持表情包,兼容性更好

| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |

| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |

| cp1256 | Windows Arabic | cp1256_general_ci | 1 |

| cp1257 | Windows Baltic | cp1257_general_ci | 1 |

| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |

| binary | Binary pseudo charset | binary | 1 |

| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |

| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |

| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |

+----------+-----------------------------+---------------------+--------+

39 rows in set (0.00 sec)

MariaDB [(none)]> create database wu CHARACTER SET utf8mb4; ###指定字符集来创建database;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show create database wu; ####可以看到创建时的字符集

+----------+----------------------------------------------------------------+

| Database | Create Database |

+----------+----------------------------------------------------------------+

| wu | CREATE DATABASE `wu` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |

+----------+----------------------------------------------------------------+

1 row in set (0.00 sec)

[root@centos7s ~]#cd /var/lib/mysql/ ###创建数据库就自动创建了文件夹;数据库本身是不存放任何数据的,只是一个容器,真正存放数据的是表

[root@centos7s mysql]#ls

aria_log.00000001 ibdata1 ib_logfile1 mysql.sock test

aria_log_control ib_logfile0 mysql performance_schema wu

[root@centos7s mysql]#cd wu

[root@centos7s wu]#ls

db.opt

[root@centos7s wu]#cat db.opt ###通过查看opt文件也可以得知当前数据库的默认字符集以及默认排序规则

default-character-set=utf8mb4

default-collation=utf8mb4_general_ci

MariaDB [(none)]> show databases; 查看所有的数据库

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

| wu |

+--------------------+

5 rows in set (0.00 sec)

MariaDB [(none)]> use wu 切换数据库

Database changed

MariaDB [wu]> show tables; 查看数据库的里面的表;由于还没有创建表格,所以是空的

Empty set (0.00 sec)

MariaDB [wu]>

###########################################通过创建文件夹的方式来创建数据库################################

[root@centos7s mysql]#pwd

/var/lib/mysql

[root@centos7s mysql]#ll

total 28700

-rw-rw---- 1 mysql mysql 16384 Oct 8 09:43 aria_log.00000001

-rw-rw---- 1 mysql mysql 52 Oct 8 09:43 aria_log_control

-rw-rw---- 1 mysql mysql 18874368 Oct 8 09:43 ibdata1

-rw-rw---- 1 mysql mysql 5242880 Oct 8 09:43 ib_logfile0

-rw-rw---- 1 mysql mysql 5242880 Oct 8 09:43 ib_logfile1

drwx------ 2 mysql mysql 4096 Oct 8 09:43 mysql

srwxrwxrwx 1 mysql mysql 0 Oct 8 09:43 mysql.sock

drwx------ 2 mysql mysql 4096 Oct 8 09:43 performance_schema

drwx------ 2 mysql mysql 6 Oct 8 09:43 test

[root@centos7s mysql]#cp -a test jeff

[root@centos7s mysql]#mkdir wu1

[root@centos7s mysql]#ll

total 28700

-rw-rw---- 1 mysql mysql 16384 Oct 8 09:43 aria_log.00000001

-rw-rw---- 1 mysql mysql 52 Oct 8 09:43 aria_log_control

-rw-rw---- 1 mysql mysql 18874368 Oct 8 09:43 ibdata1

-rw-rw---- 1 mysql mysql 5242880 Oct 8 09:43 ib_logfile0

-rw-rw---- 1 mysql mysql 5242880 Oct 8 09:43 ib_logfile1

drwx------ 2 mysql mysql 6 Oct 8 09:43 jeff

drwx------ 2 mysql mysql 4096 Oct 8 09:43 mysql

srwxrwxrwx 1 mysql mysql 0 Oct 8 09:43 mysql.sock

drwx------ 2 mysql mysql 4096 Oct 8 09:43 performance_schema

drwx------ 2 mysql mysql 6 Oct 8 09:43 test

drwxr-xr-x 2 root root 6 Oct 8 10:16 wu1

MariaDB [(none)]> show databases; ###创建文件夹的方式也可以达到创建数据库的目的

+--------------------+

| Database |

+--------------------+

| information_schema |

| jeff |

| mysql |

| performance_schema |

| test |

| wu1 |

+--------------------+

6 rows in set (0.00 sec)

MariaDB [(none)]> show create database wu1; ###当然直接创建空文件,会采用默认的latin字符集

+----------+----------------------------------------------------------------+

| Database | Create Database |

+----------+----------------------------------------------------------------+

| wu1 | CREATE DATABASE `wu1` /*!40100 DEFAULT CHARACTER SET latin1 */ |

+----------+----------------------------------------------------------------+

1 row in set (0.00 sec)

MariaDB [(none)]>

删除数据库示例:

MariaDB [wu]> drop database wu; ###在sql中基本都是用drop来删除;用create来创建

Query OK, 0 rows affected (0.00 sec)

[root@centos7s wu]#cd /var/lib/mysql/ ###相应的数据库目录也会被删除;其实直接删除数据库目录也可以到达删除数据库的目的

[root@centos7s mysql]#ls

aria_log.00000001 ibdata1 ib_logfile1 mysql.sock test

aria_log_control ib_logfile0 mysql performance_schema

[root@centos7s mysql]#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值