要使用MariaDB/Mysql,先要利用yum安装
[root@localhost ~]# yum install -y mariadb-* //利用这条命令能把所有关于MariaDB的软件工具安装上
若本来Linux(CentOS)已经安装,可用
[root@localhost ~]# ss -tnl //查看3306是否被监听,有就已开启服务
若没有开启则启动服务
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> //已经进入mysql/MariaDB的交互界面
在Mysql/MariaDB的交互界面就可以用MariaDB/Mysql的语句来进行数据库的操作。
也可以在Bash界面有条件对应使用:
mysql [options] [db_name]来进入Mysql界面;
-p[password]
用于指定连接mysql服务器时,为对应用户指定身份验证所需密码;如果密码部分省略不写,执行命令后需要在新行中给出密码,这种方式相对更安全;
-D db_name
用于指定使用mysql客户端程序连接到mysql服务器之后,默认使用哪个数据库;如果不给定该选项,默认为NULL;
-e statement
连接至mysql服务器并将后面的SQL语句交给服务器运行之后返回执行结果并直接退出交互式登录模式,返回bash命令提示符;
-h host_name
用于指定此次mysql程序所连接的mysql服务器的主机名称或主机IP地址;默认是localhost(127.0.0.1);
-u user_name
用于指定连接mysql服务器时使用的用户名;默认的用户名为:'root'@'localhost'
mysql的用户名:USERNAME@HOSTNAME
USERNAME表示登录的用户名称;
HOSTNAME表示用户通过哪个特定的客户端主机连接到mysql服务器;
如:'root'@'172.16.0.1'用户
表示只有172.16.0.1主机可以通过root用户连接至myslq服务器;
HOSTNAME中可以使用通配符:
_:任意单个字符;
%:任意长度的任意字符;
如:'root'@'172.16.%.%'
表示172.16.0.0/16网段中的所有主机都可以使用root用户连接至mysql服务器;
如:'root'@'172.16._.%'
表示172.16.0.0~172.16.9.255地址的主机都可以使用root用户连接至mysql服务器;
注意:默认情况下,所有用户均为空密码,并且还有匿名用户存在,因此,为了增强安全性,可以使用mysql_secure_installation命令完成账户安全初始化;是的mysql服务器仅能让root用户在本地登录,并且移除匿名用 户和test数据库;
进入mysql/MariaDB的交互界面后,可以用mysql命令了;
Mysql命令分为:客户端命令和服务器端命令
客户端命令:mysql程序自身完成或执行的命令,在客户端所在地运行
clear (\c)
停止发送当前正在键入的命令或语句并直接返回提示符;
delimiter (\d)
设置语句结束标记;默认的语句结束标记为";";
ego (\G)
将其前面的语句送往mysql服务器运行,并将返回的结果纵线显示;
go (\g)
无需输入语句结束标记,直接将其前面的语句送往服务器执行;
exit,quit (\q)
退出mysql程序的交互式模式;
status (\s)
获取mysql服务器的状态信息;
use (\u)
将指定的数据库作为当前正在使用的数据库;
source (\.)
可以在mysql交互式模式中执行SQL脚本文件;
?或help (\?)
获取客户端命令的帮助信息;
服务端命令:mysql客户端程序通过mysql协议向mysql服务器端发送的SQL语句;每个SQL语句都必须以指定的结束标记结尾,默认是";"
服务器端命令代表的SQL语句,可以分为三类:DDL,DML,DCL
DDL:数据定义语言,主要用于管理数据库及数据库的各组件;
例如:数据库,表,视图,索引,用户,存储过程,存储函数,触发器,事件等;
常用的SQL语句:CREATE,DROP,ALTER,SHOW
DML:数据操纵语言,主要用于管理表中的数据,实现数据的增,删,改,查等操作;
常用的SQL语句:INSERT,DELETE,UPDATE,SELECT
DCL:数据控制语言,主要用于管理数据访问的授权;
常用的SQL语句:GRANT,REVOKE
获取指定的SQL语句的帮助信息;
mysql> help SQL_STATEMENT_KEYWORK
MariaDB [(none)]> help SQL_STATEMENT_KEYWORK
所有的SQL语句本身,不区分字符大小写;建议使用小写字母书写SQL语句;
DDL中的数据库
创建数据库、修改数据库的属性、删除数据库
创建数据库:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [ create_specification ]
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
DATABASE | SCHEMA:
表示要创建的对象的类型为"数据库"或"方案";
IF NOT EXISTS:
如果指定要创建的数据库已经存在,则不报错也不执行创建操作;
db_name:
要创建的数据库的名称;
CHARACTER SET [=] charset_name:
为新创建的数据库指定其默认的字符集;
mysql> show character set
查看mysql服务器所支持的所有字符集及默认排序规则;
COLLATE [=] collation_name:
为新创建的数据库指定字符集的排序规则;
mysql> show collation
查看mysql服务器上每种字符集所支持的所有的排序规则;
修改数据库的属性:
ALTER {DATABASE | SCHEMA} db_name alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
注意:如果数据库中已经有表,且表中已经插入数据时,更改数据库的字符集和排序规则可能会导致已存数据的乱码;
删除数据库:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
DDL中的表:
数据类型、创建表、修改表、删除表
数据类型:
定义数据类型的意义:
1.决定数据的存储格式;
2.决定数据所能参与的运算;
3.决定数据可以表示的有效范围;
对于mysql来说,支持的数据类型:
数值型:
精确数值型:
TINYINT(3):8bits,0~255,-128~+127
SMALLINT(5):16bits,0~65535,-32768~+32767
MEDIUMINT(8):24bits,0~16777735
INT(10):32bits,
INTEGER:48bits,
BIGINT:64bits
近似数值型:
REAL
DOUBLE
FLOAT
字符串型:
变长字符型:
VARCHAR(length):字符不区分大小写;65536个字符;
VARCHAR(30)
qhdlink$ -- 8字节存储空间;
VARBINARY(length):字符区分大小写;65536个字符;
定长字符型
CHAR(length):字符不区分大小写;256个字符;
CHAR(30)
qhdlink -- 30字节空间;
BINARY(length):字符区分大小写;256个字符;
对象存储类型:
TEXT:存储大量的纯文本信息;
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BLOB:存储非纯文本信息经过流式化处理之后的二进制数据;
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
日期时间型:
DATE:日期型,3字节;
TIME:时间型,3字节;
TIMESTAMP:时间戳类型,4字节;
DATETIME:日期时间型,8字节;
YEAR:年份,YEAR(2),YEAR(4)
内置特殊类型:
集合类型:
SET:集合,插入的数据可以是集合中各个元素的任意组合;
SET('a','b','c','d')
a
aa
aab
abdc
枚举类型:
ENUM:枚举,只能存放列举出来的固定的字符或字符串;
ENUM('F','M')
F
M
数据类型相关的修饰符:
与整数类型相关的:
UNSIGNED,无符号整数;
注意:UNSIGNED修饰符必须紧跟在精确数值类型标识符之后;
AUTO_INCREMENT [=] Value:
整型数据的递增或递减;
通用修饰符:
NOT NULL:非空约束;一般是为主键做约束;
DEFAULT Value:为字段设置默认值;
创建表:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options]
create_definition:
col_name data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
table_options:
ENGINE [=] engine_name | AUTO_INCREMENT [=] value
显示表的结构:
mysql> desc stu_info;
显示创建表的SQL语句:
mysql> show create table stu_info;
修改表:
ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]
增加表的字段:
ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
示例:
mysql> alter table stu_info add Stel_num varchar(20) not null after SAge;
修改表的字段属性
CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
示例:
mysql> alter table stu_info change column Stel_num SMobile char(11) not null after Gender;
mysql> alter table stu_info modify SAge tinyint unsigned after Gender;
删除表的字段:
DROP [COLUMN] col_name
删除表:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
DDL中的视图:
创建视图、删除视图
创建视图:
CREATE VIEW view_name [(column_list)] AS SELECT clause;
删除视图:
DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE]
DDL中的索引
索引类型、创建索引、查看索引、删除索引、
索引的类型:
聚集索引、非聚集索引:
聚集索引:索引和数据存放在一起,找到索引即找到数据;
非聚集索引:索引和数据不存放在一起,索引通过索引指针指向数据所在位置;
稠密索引、稀疏索引:是否索引了每一条数据记录;
稠密索引:每条数据记录都有一条索引与之对应;
稀疏索引:并不是每条数据记录都有一条索引与之对应,而是一条索引对应某个或某些数据块;
主键索引、辅助索引:
BTree:Balance Tree,B- Tree,BTree,B+Tree
左前缀索引:
注意:在使用BTree索引进行检索时,给出的PATTERN的最左侧字符不要出现通配符,否则,无法使用索引进行检索;只能全文遍历;
Hash索引:
R Tree:Spacial,空间索引;
FULLTEXT:全文索引;
覆盖索引:索引中的内容就是要检索的内容,通过检索索引内容即可立即找到数据,并直接返回检索结果;
创建索引:
1.在创建表时,通过指定主键或唯一键,可以自动创建索引;
2.如果在创建表时,没有指定主键或唯一键,则可以在表成功创建之后添加索引;
CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option] ...
示例:
MariaDB [hellodb]> create index name_index on students(Name);
查看索引:
SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]
删除索引:
DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name
DML中的INSERT/REPLACE、
DML中的DELETE
DML中的UPDATE
DML中的SELECE