MySQL学习日志(一)

一.SQL语言组成部门

DDL: database table index view

DML:  Select update insert delete

主键,外键 唯一键,条件,非空,事务,

视图的定义:虚表,存储下来的Select语句

事务控制

动态SQL和嵌入式SQL

DCL 授权

##数据类型

1.为什么会有数据类型

1.存储的值类型

2.占据的樵存储空间

3.定长,变长

4.如何被索引及排序

5.是否能够被索引

二.数据类型的有哪些

1)字符型

char

varchar

binary

varbinary

text

blob

char,varchar和text几种字符型常用的属性修饰

1.  NOT NULL : 非空约束

2.  NULL :允许为空

3.  DEFAULT ‘string‘ :默认值,不适用与Text类型

4.  character set‘字符集‘

mysql> SHOW VARIABLES LIKE ‘%char%‘;  这是服务器上的

mysql> SHOW CHARACTER SET; 全部的字符集

5.  show collation 排序规则

2)数值型

精确数值型

整型

十进制数据:decimal

近似数值型

单精度浮点型

双精度浮点型

整形的常用属性修饰符

1.AUTO_INCREMENT:自动增长

前提:非空,且唯一,支持索引

mysql> select LAST_INSERT_ID();

2.LEST_INSERT_ID():可以查看上次增长的数值,当插入多行时,只记录第一行

3.UNSIGNED:无符号

4.NULL

5.NOT NULL

6.DEFAULT

TRUNCATE 用来清空表中数据

3)日期时间型

日期型

时间型

日期时间型

时间戳

year

4)布尔型

5)内建类型

enum(枚举)

set(集合)

三.数据字典

定义: 可以说为是系统编目,目录(system catalog) ,保存数据库服务器上的元数据库

** 元数据:非数据本身,但是又能够管理数据需要的一些信息  数据与表  表的名字 **

元数据:

关系的名字

每个关系的各字段的名字

各字段的数据类型和长度

约束

每个关系上的视图的名字及视图的定义

授权用户的名字

用户的授权和账户信息

统计类的数据

每个关系字段的个数

每个关系中行数

每个关系的存储方法

保存元数据的数据库

information_schema

mysql

performance_schema

##SQL_MODESQL模型

SQL_MODE定义:用来定义字符超出的操作和模仿别的数据库的类型,通过修改全局变量

常用的模式有:

TRADITIONAL 使用传统模式

STRICT_TRANS_TABLES 仅对支持事务的表的严格模式

STRICT_ALL_TABLES 对所有表使用严格模式

设定服务器变量值得方式(通常仅支持动态的变量)

支持修改服务器变量:

动态变量:可以MySQL运行时修改

静态变量:于配置文件中修改其值,并重启后方能生效;

服务器变量从其生效范围来讲,有两类:

全局变量 : 服务器级别,修改后对新建立的会话有效 GLOBAL

会话变量 : 会话级别,仅对当前会话有效 session

<!--会话建立时,从全局继承各变量-->

查看服务器变量:

***mysql> show {global|session} variables [like ‘(sql_mode)‘];***

***mysql> select @@{globa|session}.variable_name  ;***

**mysql> select * from    GLOBAL_VARIABLES where variable_name=‘sql_Mode‘;**

**select * from  session_VARIABLES where variable_name=‘sql_Mode‘;**

修改变量:

<!-- 前提:仅管理员有权限修改全局变量-->

**mysql> set {global|session} variable_name=‘value‘;**

***注意:无论是全局还是会话级别的动态变量修改,在重启mysql后都会失效,想永久有效,可以定义在配置文件中的响应段中[mysqld]***

##MySQL中字符大小写:

1.SQL关键字及函数不区分大小写

2.数据库、表及视图名称的大小写区分与否取决于底层OS及FS

3.存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分大小写

4.表别名区分大小写

5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写


四.MySQL基本使用

数据库:

创建数据库

create database

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

[[DEFAULT] CHARACTER SET [=] charset_name 字符集

| [DEFAULT] COLLATE [=] collation_name 排序方式]

列如:create database if not exists mydb;

create database if not exists mydb character set utf-8

删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

列如:drop database if not exists mydb;

修改数据库的字符集和排序字符以及数据字典

ALTER {DATABASE | SCHEMA} [db_name]

[[DEFAULT] CHARACTER SET [=] charset_name 字符集

| [DEFAULT] COLLATE [=] collation_name 排序方式]

表:

创建表:第一种方式

CREATE [TEMPORARY(临时表,保存在内存中)] TABLE [IF NOT EXISTS] tbl_name

(create_definition,...)

[table_options]

(create_definition,...)  可以定义:

字段的定义:字段名、类型和类型修饰符

键、索引和约束

primary key,unique key,foreign key,check

{index|key}

表创建:第二种方式(复制表数据)

CREATE [TEMPORARY] TABLE [IF        NOT EXISTS] tbl_name

[(create_definition,...)]

[table_options]

select_statement

表创建:第三种方式(复制表结构)

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

{ LIKE old_tbl_name | (LIKE old_tbl_name) }

查看表的状态信息

show table status like ‘table_name’

MyISAM表:每表有三个文件,都位于数据库目录中

tb_name.frm:表结构定义

tb_name.MYD:数据文件

tb_name.MYI:索引文件

InnoDB表,有两种存储方式

1.默认:每表有一个独立文件和一个多表共享的文件

tb_name.frm:表结构的定义,位于数据库目录中

ibdata#:共享的表空间文件,默认位于数据目录(datadir指向的目录)中

2.独立的表空间文件:

每表有一个表结构文件tb_name.frm

一个独立的表空间文件 tb_name.ibd

应该修改innodb_file_per_table为ON

删除表

DROP [TEMPORARY] TABLE [IF EXISTS]

tbl_name [, tbl_name] ...

[RESTRICT | CASCADE]

修改表:

ALTER TABLE tbl_name

[alter_specification [, alter_specification] ...]

修改字段定义:

插入新字段:

ADD [COLUMN] col_name column_definition

[FIRST | AFTER col_name ]

删除字段

DROP [COLUMN] col_name

修改字段

修改字段名称

CHANGE [COLUMN] old_col_name new_col_name column_definition

[FIRST|AFTER col_name]

修改字段类型及属性等

MODIFY [COLUMN] col_name column_definition

[FIRST | AFTER col_name]

表改名:

rename to|as new tb_name

修改存储引擎

engine =

指定排序标准的字段

ORDER BY col_name [, col_name] ...

5.MySQL的查询分类

1.单表查询:简单查询

2.多表查询:连续查询

3.联合查询

4.选择和投影

投影:挑选要符合的字段

选择:挑选符合条件的行

投影:select 字段1,字段2,... from tb_name

selcet * from tb_name

选择:select 字段1,字段2,.... from tb_name where 子句(布尔条件表达式);

##布尔条件表达式操作符

= 等值比较

<=> 跟空值比较不会产生额外信息

<> 不等值

<   小于

<=  小于等于

>   大于

>=  大于等于

IS NULL: 是否为空

IS NOT NULL:是否不空

LIKE:支持的通配符%(任意长度的任意字符) _(任意单个字符)

RLIKE,REGEXP:支持使用正则表达式作为条件

IN:判断某行的某一字段的值是否在给定的列表中

BETWEEN...AND....:判断指定的值是否位于指定的范围之间

6.单表查询用法   

组合条件测试

NOT |

AND &&

OR ||

排序

order by ‘排序字段’

默认为升序:ASC

降序:DESC

内置的聚合函数

sum():和

AVG():平均值

MAX():最大值

MIN():最小值

COUNT():个数统计

分组

group by

select Gender,sum(age) from student group by Gender;

对分组的条件过滤

having

select ClassID,Count(Name) FRom students GROUP BY CALSSSID HAVING Count(Name) >=2;

只返回有用的行

LIMIT

一个数为显示的行数

两个数字为偏移第一个数字行,显示第二个数字

select * from studnet LIMIT 2,3;

**select语句的执行流程

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

select语句

distinct   重复的只显示一次

SQL_CACHE  缓存查询结果

SQL_NO_CACHE 不缓存查询结果

##MySQL多表查询和子查询

1.联结查询:事先将两张或者多张表join,根

据join的结果进行查询

交叉联结:

(a+b)(c+d+e) 6列

效率低,基本上不用

自然联结

等值联结:把相同的字段进行等值连接

外联结:

左外联接:只保留出现在左外连接元算之前(左边)的关系中的元组(以左表为准,)

left_tb LEFT JOIN right_tb ON 条件

右外联接:只保留出现在右外连接元算之后(右边)的关系中的元组(以右表为准)

left_tb RIGHT JOIN right_tb ON 条件

全联接:

SELECT * FROM table01 JOIN table02

ON 条件

<!--别名:AS

表别名:

字段别名-->

子查询:在查询中嵌套的查询

A) 用于WHERE中的子查询

1.用于比较表达式中的子查询

子查询的返回值只能有一个

2.用于EXISTS中的子查询

判断存在与否

3.用于IN中的子查询

判断存在于指定列表中

B) 用于FROM中子查询

select alias.col,....FROM(SELECT CLUSE) alias WHERE condition

**MYSQL不擅长于子查询,应该避免使用子查询 优化一般**  ??

##MYSQL视图(虚表)

存储下来的select语句当表来玩

创建:

create view 视图名 as select语句

删除:

drop view 视图名

##索引

查看索引   show indexs from tb_name

查看索引   alter table tb_name add index(字段)

时间: 2024-10-09 23:44:21

MySQL学习日志(一)的相关文章

mysql学习日志

Mysql学习日志; 安装:Linux :yum install mysql* -y 验证Mysql是否正常安装:mysqladmin --version 进入 Mysql,要先启动#service mysqld start#mysql 更换Mysql初始密码: 安装完成mysql为空密码,修改密码方式:mysqladmin -u root password newpassword 用户已经有旧密码的更改方式:MYSQLADMIN -u root -p'oldpassword' PASSWORD

MySQL学习日志(三)

#用户管理 查询优化 日志  ##MySQL 用户管理  用户账号: [email protected] 用户账号管理: CREATE USER   创建用户         CREATE USER [email protected]    [        IDENTIFIED BY [PASSWORD] 'password'           ]        主机也可以使用通配符: create user [email protected]'172.16.100.1_ _'  IDENT

MySQL学习日志(二)

# DML 事务 隔离级别 存储引擎对比 ##DML     insert into 第一种: insert into tb_name [(col1,col2,....)]{values|value}(val1,val2,...)[,(val21,val22,....),....] 第二种: insert into tb_name set col_name=val1,col2=val2,.... 第三种(将一个表中的数据插入到另外一张表中): insert into tb_name select

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

Mysql学习之--Mysql二进制日志管理

Mysql学习之--Mysql二进制日志管理 简介:     MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的.      MySQL的二进制日志的作用是显而易见的,可以方便的备份这些日志以便做数据恢复,也可以作为主从复制的同步文件,然而二进制日志的大小可能会根据不同的需求而存在麻烦,所以让日志回滚是必须的,当然MySQL已经为我们提供了二进制回滚的功

我的MYSQL学习心得(十五) 日志

原文:我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

我的MYSQL学习心得 mysql日志

这一篇<我的MYSQL学习心得(十五)>将会讲解MYSQL的日志 MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情. 分别是 1.错误日志:记录mysql服务的启动.运行.停止mysql服务时出现的问题 2.查询日志:记录建立的客户端连接和执行的语句 3.二进制日志:记录所有更改数据的语句,可以用于数据复制 4.慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询 默认情况下,所有日志创建于mysql数据目录中.通过刷新日

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

Mysql学习(一)文件

1.参数文件 2.日志文件 错误日志文件   xxx.err文件(xxx一般代表主机名) 慢查询日志文件  1).一般是设置一个阈值,将执行时间超过该值的sql语句记录到慢查询日志里面 需要设置long_query_time参数(5.1版本后单位微秒),开关为log_slow_queries 2) 如果sql语句不走索引,也可以记录到慢查询日志 开关为log_queries_not_using_indexes 分析指令:mysqldumpslow 5.1版本以后可以放到mysql.show_lo