mysql基础(1)

xiaoxiao2021-02-28  3

mariadb or mysql:

         DBMS

         RDBMS:关系型数据库管理系统

         C/S:通过专有协议

         关系模型:表(行、列),二维关系

         范式:第一范式、第二范式、第三范式

         关系运算:

                   选择

                   投影

         数据库:表,索引,视图(虚表)

                   SQL:structurequery language

                            DDL,DML

                            编程接口:

                                     存储过程

                                     存储函数

                                     触发器

                                     事件调度器

                                     过程式编程:选择,循环

         三层模型:

                   物理层

                   逻辑层

                   视图层

         解决方案:

                   oracle,sybase,infomix,DB2

                   mysql,mariadb,postgreSQL

         mariaDB

                   插件式多线程

                   连接线程

                   守护线程

         配置文件:集中式的配置,能够为msql的个应用程序提供配置信息

[mysqld] [mysqld_safe] [mysqld_multi] [server] [mysql] [mysqldump] parameter=value skip-name-resolve skip_name=resolve 查找路径/etc/my.cnf-->/etc/mysql/my.cnf-->$MYSQL_HOME/my.cnf-->--default-extra-file=/path/to/somedir/my.cnf-->~/.my.cnf

安装方法:

           osvendor:rpm

           MYSQL:

                    rpm

                    展开即用

                     源码

centos7安装mariadb:

yum -y install mariadb-server mariadb mysql_secure_installation

安装后的设定:

    (1)为所有root用户设定密码

mysql>SET PASSWORD mysql>update mysql.user SET password=PASSWORD(‘your password’) WHERE clause;

    (2)删除所有匿名用户

mysql>DROP USER ‘’@’localhost’;

上述两步骤可运行命令:mysql_sercure_installation替换

授权主机:

GRANT ALL PRIVILEGES ON *.* to ‘root’@'%' IDENTIFIED BY '密码';

*.*:所有数据库所有表

‘root@%’:所有主机可通过root用户登录

    (3)建议关闭主机名反解功能

    元数据数据库:mysql

           user,host等

    mysql-->mysqld

客户端程序: mysqld:交互式的CLI工具: mysqldump:备份工具,基于mysql发起查询请求,并将查到的所有数据转换成insert等语句保存在文本文件中 mysqladmin:基于mysql协议管理mysqld mysqlimport:数据导入工具 非客户端工具: mysqlsamchk,myisampack

    如何获取程序默认使用的配置:

mysql --print-defaults mysqld --print-defaults

    客户端类应用程序的可用选项:

-u,--user= -h,--host= -p,--password= -P,--port= --protocol= -S,--socket= -D,--database= -C,--compress mysql –e “SQL”

    mysql的使用模式:

            交互式模式:

                   可运行命令有两类:

                           \h,help

                           服务端命令:

                           SQL,需要语句结束符

    脚本模式:

#mysql –uUSERNAME –pPASSWORD < /path/from/somefile.sql #mysql> soure /path/from/somefile.sql

服务端(mysqld):工作特性有多重定义方式

        命令行选项

        配置文件参数

        获取可用参数列表

mysqld –help –verbose

        获取运行中的mysql进程使用各服务器参数及其值

mysql> SHOW GLOBAL VARIABLES; mysql> SHOW [SESSION] VARIABLES;

        注意:其中有些参数支持运行时修改,会立即生效,有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效。

        修改服务器变量的值:

mysql> help SET 全局: mysql> SET GLOBAL system_var_name=value; mysql> SET @@global.system_var_name=value; 会话: mysql>SET [SESSION] system_var_name=value; mysql>SET @@[session.] system_var_name=value; 状态变量:用于保存mysqld运行中的统计数据的变量 mysql>SHOW GLOBAL STATUS; mysql>SHOW [SESSION] STATUS;

MySQL数据类型:

字符型 数值型 日期时间型 内建类型 字符型: CHAR,BINARY:定长数据类型 VARCHAR,VARBINARY:变长数据类型,需要结束符 TEXT:TINTEXT,TEXT,MEDIUMTEXT,LONGTEXT BLOB:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB ENUM,SET 数值型: 精确数值型: 整型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 十进制型:DECIMAL 近似数值型: 浮点型: FLOAT DOUBLE BIT 日期时间型: DATE TIME DATETIME TIMESTAMP YEAR(2),YEAR(4) 字符类型修饰符: NOT NULL:非空约束 NULL: DEFAULT ‘STRING’:指明默认值 CHARACTER SET ‘’:使用的字符集 COLLATION:使用的排序规则 mysql>SHOW CHARACTER SET; mysql>SHOW COLLECTION; 整型数据修饰 NOT NULL NULL DEFAULT NUMBER AUTO_INCREAMENT: UNSIGNED PRIMARY KEY|UNIQUE KEY NOT NULL mysql>SELECT LAST_INSERT_ID(); 日期时间类型修饰符; NOT NULL NULL DEFAULT

    SQL MODE:定义mysqld对约束等的响应行为:

修改方式: mysql>SET GLOBAL sql_mode=’MODE’; mysql>SET @@global.sql_mode=’MODE’; 需要修改权限:进队修改后新创建的会话有效,对已经建立的会话无效 mysql>SET SESSION sql_mode=’MODE’; mysql>SET @@session.sql_mode=’MODE; 常用MODE:TRADTTIONAL,STRICT_TRANS_TABLES,OR STRICT_ALL_TABLES;

SQL:DDL,DML

        DDL:数据定义语言

            CREATE,ALTER,DROP

            DB组件:数据库、表、索引、视图、用户、存储过程、触发器、事件调度器等

            CREATE的常用命令:

CREATE DATABSE CREATE EVENT CREATE FUNCTION CREATE FUNCTION UDF CREATE INDEX CREATE PROCEDURE CREATE SERVER CREATE TABLE CREATE TABLESPACE CREATE TRIGGER CREATE USER CREATE VIEW

        DML:数据操作语言

INSERT,DELETE,UPDATE,SELECT

        数据库:

CREATE,ALTER,DROP {DATABASE|SCHEMA} [IF EXISTS] [IF NOT EXISTS]

        表:二维关系

              设计表:遵循规范

                      定义:字段,索引

                          字段L字段名,字段数据类型,修饰符

                          约束,索引:应该创建在经常用作查询条件的字段上

                              索引:实现级别在存储引擎

                                  B+索引,hash索引,R树索引,全文索引

                                  聚焦索引,非聚焦索引

                       创建表:CREATE,TABLE

                         获取帮助:

                         在mysql交互环境中

                                MariaDB [(none)]>help create table

                            (1)直接创建

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options]

                            (2)通过查询现存的表创建,新表会直接插入查询到的数据

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] select_statement

                            (3)通过复制现存的表结构创建,不复制数据

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }

                        注意:storageengine实质表类型,也即在表创建时指明其使用的存储引擎

                                     同一个库中标要使用同一种存储引擎类型

                                     查看表结构

describe tablename;

                                    查看表状态信息     

show tables; SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

                                    修改表:alter table

                                    删除表:drop table

MYSQL基础

         单进程多线程

                   用户连接:连接线程

                   MYSQL数据文件类型

                   数据文件、索引文件

重做日志、撤销日志、二进制日志、错误日志、查询日志。慢查询日志、(中继日志)

         DDL & DML:

                   按特定数据结构存储的数据

                   索引类型:

                            聚焦索引、费聚焦索引:数据是否与索引存储在一起

                            主键索引、辅助索引

                            稠密索、稀疏索引:是否索引了每一个数据项

                            B+ TREE、HASH、R TREE

                            简单索引、组合索引

                            左前缀索引

                            覆盖索引

                   管理索引的途径

                            创建索引:创建表时指定:create  index

                            创建或删除索引:修改表的命令

                            删除索引:drop  index                          

                            查看表上的索引:

show {index | indexes | keys} {from | in } tab_name [from | in] db_name] [where expr] explain

                    视图:VIEW

                            虚表:

                            创建方法:

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

                            删除视图:

DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE]

    DML:insert,delete,update,select

    insert:一次插入一行或多行

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] Or: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] Or: INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]

    update:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

    注意:一定要有限制条件,否则将修改所有行的指定字段

         where

         limit

 

    delete:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

    注意:一定要有限制条件,否则将清空表中的所有数据

         where

         limit

    查询:

    查询执行路径中的组件:查询花村、解析器、预处理器、优化器、查询执行引擎、存储引擎        

    select语句的执行流程

from clause-->where clause-->group by -->having clause-->order by-->select-->limit

    单表查询:

SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]

    distinct:数据去重

SQL_CACHE:显式指定存储查询结果与缓存之中 SQL_NO_CACHE:显式指定查询结果不予缓存 show global variables like ‘query%’; query_cache_type的值为’ON’时,查询缓存功能打开 select的结果符合缓存条件即会缓存,否则,不予缓存 显式指定SQL_NO_cache,不予缓存 quer_cache_type的值为’DEMAND’时,查询缓存功能按需进行 显式指定SQL_CACHE的select语句才会缓存,其他均不会缓存

    字段显示可以使用别名:

         col1 as name1,col1 name1

    where字句:指明过滤条件实现“选择”功能

过滤条件:布尔型表达式 算术操作符:+,-,*,/,% 比较操作符:=,!=,>,<,<>,>=,<=,<=> begin min_num and max_num in (element1,element2,…) is null is not null like: %:任意长度的任意字符 _:任意单个字符 rlike: regepx:匹配字符串可用正则表达式书写模式 逻辑操作符: not and or xor group:根据指定的条件吧查询结果进行“分组”以用于做“聚合” avg(),max(),min(),count(),sum() order by:根据指定字段对查询结果进行排序 升序:ASC,默认 降序:AESC limit[[offset,]row_count]:对查询的结果进行输出行行数限制 对查询结果中的数据请求施加“锁”。 for update:写锁 lock in share mode:读锁,共享锁

多表查询:

        交叉连接:笛卡尔积

        内连接:

        等值连接:让表之间的字段以“等值”建立连接关系

        不等值连接

              自然连接

              外连接:

                    左外连接       

from tb1 left join tb2 on tb1.col=tb2.col

                    右外连接

from tb1 right join tb2 on tb1.col=tb2.col

子查询:在查询语句嵌套者查询语句

     基于某语句的查询结果再次进行的查询

     用在where字句中的子查询:

        (1)用于比较表达式中的子查询:子查询仅能返回单个值

select name,age from students where age>(selsct avg(age) from students);

        (2)用于in中的子查询:

select name ,age from students where age in (select age from teachers);

        (3)用于exists

用于from子句中的子查询:

使用格式:select tb_alias.col,… from (select clause) as tb_alias where clause; 示例:select s.aage,s,classid from select avg(age) as aage,classid from students shere classid is not null group by classid) as s shere s.aage>30;

联合查询:union,合并结果

select name,age from students union select name,age from teachers;

执行语句时前面加上explain,后面加上\G会显示语句的详细信息。

       explain select* from wp_users\G

注意后面没有分号。

MariaDB [worldpress]> explain select * from wp_users\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: wp_users type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 1 Extra: 1 row in set (0.00 sec) MariaDB [worldpress]>
转载请注明原文地址: https://www.6miu.com/read-2050076.html

最新回复(0)