mysql基础(1)

3 篇文章 0 订阅

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]>
































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值