mysql查询表变量_MySQL 之SQL语言、表库操作、查询及变量精讲
SQL语言
1、 SQL语言组成部分
DDL:定义语言 (create、drop、alter)
DML:操作语言 (insert、delete、update、select)
DCL: 控制语言 (grant、revoke)
2、 数据类型
字符型
#char 字符固定的空间 255 字符
#varchar 变化的空间,不区分大小写 65535 字符
#tinytext 255 字符
#text 作为存储对象,不会直接存储在表中,而是存放了指向其他表的指针 65535
#mediumtext 16,777,215 字符
#longtext 4,294,967,295 字符
#binary 二进制数据固定的空间 0-255bytes
#varbinary 变化的空间,区分大小写 0-65532bytes
#tinyblob 最大255bytes
#blob 二进制大对象 最大64Kb
#mediumblob 最大16Mb
#longblob 最大4Gb
数值型
①精确数值型:整型、十进制数据
#tinyint
#smallint
#mediumint
#int
#bigint
#decimal (十进制数据)
②近似数值型
#float 单精度浮点数
#double 双精度浮点数
③日期时间型
#date
#time
#datetime
#timestamp
#year
④布尔型
#0和1
##mysql 实际上没有布尔型
⑤内建类型
#enum 枚举
#set 集合
3、数据常用属性修饰符
字符型常用的属性修饰符
#not_null 非空约束
#null 允许为空
#defaul'string' 默认值,不使用text类型
#character set ‘字符集’
mysql> show character set;
#collation'规则' 排序规则
mysql> show collation;
整数型的常用属性修饰符
#auto_increment 自动增长.(前提:非空,且唯一,支持索引,非负值)
#unsigned 无符号
#null 允许为空
#not null 不为空
#default 默认
浮点型常用修饰符
#not null
#null
#default
#unsigned
日期时间型的修饰符
#not null
#null
#default
内建类型(enum枚举和set集合)的修饰符
#not null
#null
#default 'string'
4、MySQL中字符大小写要求
#1、SQL关键字及函数名不区分字符大小写;
#2、数据库、表及视图名称的大小区分与否取决于低层OS、FS
#3、存储过程、存储函数及时间调度器的名字不区分大小写,但触发器区分大小写
#4、表别名区分大小写;
#5、对字段中的数据,如果字段类型为Binary类型,则区分大小写,非binary不区分大小写;
变量
1、设定服务器变量的值(仅用于支持动态的变量)
支持修改的服务器变量:
动态变量:可以在Mysql运行时修改
静态变量:在配置文件中修改其值,并重启后方能生效;
服务器变量从其生效范围来讲,有两类:
全局变量(global):服务器级别,修改之后仅对新建立的会话有效;
会话变量(session):会话级别,仅对当前回话有效;
## 会话建立时,从全局继承各变量;
2、查看服务器变量
#mysql> show {global|session} variables like/where子句;
#mysql> select @@{global|session}.variables_name;
#mysql> select * from information_schema.global_variables WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
#mysql> select * from information_schema.session_variables WHERE VARIABLE_NAME='SOME_VARIABLE_NAME';
##常用为前两个
举例
3、修改变量
#前提:默认仅管理员有权限修改全局变量
#格式:mysql> SET {GLOBAL|SESSION} VARIABLE_NAME='VALUE';
举例
mysql > set global tx_isolation='read-committed'; 设置服务器的事务隔离级别为读提交
### 注意:无论是全局还是会话级别的动态变量修改,在重启mysqld后都会失效;想永久有效,需定义在配置文件中的相应段中如:[mysqld]服务器段
数据库操作(database)
创建数据库
#格式 CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] [CHARACTER SET=''] [DEFAULT] [COLLATE='']
删除数据库
#格式 DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
修改数据库
#格式 ALTER {DATABASE|SCHEMA} db_name [DEFAULT] [CHARACTER SET=''] [DEFAULT] [COLLATE='']
mysql> create database exam; 创建数据库exam
mysql> drop database exam; 删除数据库exam
表操作(table)
mysql表创建
创建表
格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
# (create_definition,...):
字段的定义:字段名、类型和类型修饰符
键、约束或索引:
PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, CHECK
{INDEX|KEY}
# [table_options]
ENGINE [=] engine_name AUTO_INCREMENT [=] value
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE ;'[=] collation_name
COMMENT [=] 'string'
DELAY_KEY_WRITE [=] {0 | 1}
ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]
创建一个表 (create)
mysql> create table t1 (Name varchar(50) not null,Age tinyint unsigned not null,primary key (Name,Age));
查看该表
Mysql表分类
Mysql表分为两种MyISAM表、InnoDB表
MyISAM表:每表有三个文件,都位于数据库目录中;
#tb_name.frm 表结构定义
#tb_name.MYD 数据文件
#tb_name.MYI 索引文件
InnoDB表
InnoDB表有两种存储方式
#1、默认:每表有一个独立文件和一个共享的文件
innodb_file_per_table=OFF(全局变量默认值)
tb_name.frm 表结构的定义,位于数据库目录中;
ibdata# 共享的表空间文件,默认位于数据目录(datadir指向的目录)
#2、独立的表空间文件
innodb_file_per_table=ON(配置文件中定义)
tb_name.frm 每表有一个表结构文件
tb_name.ibd 一个独有的表空间文件表创建
表删除 (drop)
格式
#drop table tb_name;
表中的数据删除 (delete)
格式:mysql> delete from table_name where 字段名='values'
#例如:mysql> delete from Persons where LastName='Griffin'删除Person表中的LastName字段中的Griffiin
表修改 (alter)--主要用于修改表中字段
当前系统中已有的mydb数据库
修改表中的字段演练,以t6表为例
#添加新字段(add)
①在t6表中添加一个Age字段
mysql> alter table t6 add Age tinyint unsigned not null;
②在t6表中添加一个Gender字段,默认为M,并且Gender字段要放在Name字段后
mysql> alter table t6 add Gender enum('M','F') not null default 'M' after Name;
#删除字段(add)
①在t6表中删除Age字段
mysql> alter table t6 drop Age;
#修改字段名称(change)
①将t6表中的Name字段改名为StuName
mysql> alter table t6 change Name StuName char(30) not null;
#修改字段类型及属性(modify)
mysql> alter table t6 modify Gender enum('M','F') not null after ID;
#字段上添加索引 (add index)
①在Name字段添加索引
mysql> alter table t6 add index(Name);
#查看字段上的索引
mysql> show indexes from t6;
#删除表中特定字段的索引 (drop index)
msyql> alter table t6 drop index Name
修改表名 (rename to)
格式:
mysql> alter table old_name rename to new_name
例如
mysql> alter table t1 rename to t7;
转换字符集及排序规则
格式
mysql> alter table t6 'character set'=
mysql> alter table t6 collation=
MySQL 的查询操作
1、查询分类
单表查询:简单查询
多表查询:连续查询
联合查询:多个查询一起使用(union)
2、选择和投影
投影:挑选要显示的字段
选择:挑选符合条件的行
投影: select 字段1,字段2,... from tb_name
select * from tb_name;
选择: select 字段,...from tb_name where 子句;
where子句:布尔条件表达式-->符合的显示,不符合的不显示;
3、布尔表达式操作符,
= 等于
<=> abc = bde ,abc =NULL
<> 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
IS NULL 为空
IS NOT NULL 不为空
RELIKE 支持正则表达式
LIKE 支持字符通配(模糊查找) %任意长度的任意字符 _任意单个字符
between and 两者之间
IS NULL
like字符通配
rlike 正则表达式
between and 两者之间
4、组合条件查询
(1) and &&
or ||
not !
and
#查找年龄大于25,同时性别为女。
mysql> select Name,Age,Gender from students where age > 25 and Gender='M';
(2) ORDER BY 字段名 [ASC|DESC]
(
ASC 升序显示
)
(DESC 降序显示)
#ASC
mysql> select Name,Age,Gender from students where age > 25 and Gender='M' order by Age asc;
#DESC
mysql> select Name,Age,Gender from students where age > 25 and Gender='M' order by Age desc;
(3)
聚合函数 sum() avg() max() min( ) count() avg()
总和 平均值 最大值 最小值 统计 平均值
(4) group by 分组
(5) having 聚合
例子1
#查询students表以性别分组,查询各个性别的年龄和
mysql> select Gender,sum(Age) from students group by Gender;
例子2
#显示班级大于等于两个人的班级
mysql> select ClassID,count(Name) from students group by ClassID having count(Name) >= 2;
例子3
#显示总年龄小于等于50的班级
mysql> select ClassID from students group by ClassID having sum(Age) <= 50;
(6)limit 显示行
#查找students表的所有信息,偏移前两行,然后再取三行显示
mysql> select * from students limit 2,3;
#select语句的执行流程(先后顺序)
from clause --->where clause ---> group by --->having clause ---> order by 。。。---> select --->limit
SELECT语句选项
distinct:指定结果相同的只显示一次
sql_cache:缓存查询结果于缓存中;
sql_no_cache:不缓存查询结果
ps:水平有限,总结也许不够全面,请补充。后续推出多表查询、子查询及视图详解
mysql查询表变量_MySQL 之SQL语言、表库操作、查询及变量精讲相关推荐
- linux C语言多线程库pthread中条件变量的正确用法逐步详解
linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...
- mysql 视图 字典_MySQL深入01-SQL语言-数据字典-服务器变量-数据操作DML-视图
SQL语言的组成部分 常见分类:DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类:完整性定义语言: DDL的一部分功能约束 约束:包括主键,外键,唯一键,条件,非空, ...
- JavaWeb - 数据库,MySQL安装卸载,MySQL服务器存储结构,sql语言,使用sql操作数据库/数据库表/表中记录,聚集函数,分组操作,limit关键字,重置root密码
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72781451 1.数据库的简介 (1)什么是数据库,就是一个文件系统,使用标准sql ...
- MySQL,Oracle系统学习,以及SQL语言-----数据库篇学习笔记
Handouts MySQL和Oracle系统学习 一. 开篇立意(~~~~必看,有说明~~~~) 二. Oracle 篇 数据库存在之意义 基础概念(必须看,后面不会说明!!!) Oracle管理系 ...
- mysql 代码执行时间_mysql 显示SQL语句执行时间的代码
MySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Que ...
- mysql解释器_atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
- mysql 全局锁_Mysql全局锁和表级锁
以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁. 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数 ...
- mysql 中间表的好处_Mysql中使用中间表提高统计查询速度
对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响.通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介绍 ...
- mysql 分区合并_mysql中的合并表和分区表详解(经常使用的概念)
分区表是mysql5.1之后的新特性,合并表已经存在很长时间了.这篇文章主要介绍这两个概念以及他们基本的操作. 一.合并表 合并表说实话是一种将要被淘汰的技术,但是掌握了合并表的概念再去看分区表就比较 ...
最新文章
- Fragment提交transaction导致state loss异常
- 从天气项目看Spring Cloud微服务治理
- 关于要不要买apple watch 的思考:节俭是一种习惯
- 如何把微信文章中的语音/音乐下载下来
- Tensorflow入门神经网络代码框架
- 深入探讨JavaScript函数
- 用正则表达式输出rdf文档的三元组格式数据
- 大数据Hadoop学习记录(2)----基于Java语言的HDFS文件数据载入(判断文件是否存在、写入文本文件、上传本次文件到HDFS、读取HDFS文件内容)
- 超详细的UI设计软件教程与资料
- php 腾讯短信接口api,腾讯云短信发送功能API-PHP接入
- 腾讯信鸽海量移动推送服务是如何构建的
- 视频教程-程序员的数学:线性代数-Python
- 点击换图 秀米的svg_时隔五年再用秀米,我发现了这个超强玩法。
- 二次剪辑必备小技能—视频水印去除
- 关于蓝桥杯大赛,你应该了解的那些事!
- nested exception is java.sql.SQLException: Data truncated for column 'PassWord' at row 72
- oracle缓存文件,oracle的缓存
- 【Playwright】关于无痕模式与无头模式
- Bootstrap- Modal对话框如何在关闭时触发事件
- vue2.0 实现tab标签切换效果 内容可以自行定义
热门文章
- 华为交换机配置syslog发送_配置华为交换机把日志发送到远程centos syslog服务器上...
- python底层源码_大师兄的Python机器学习笔记:统计学基础之底层代码实现(一)...
- 关于推送系统设计的一些总结与思考(一)
- 三维空间刚体运动4-4:四元数多点连续解析解插值方法:Spicv
- 在unity向量空间内绘制几何(4): 利用平面几何知识画像素直线
- git只提交一张图片_即使只使用一张静止的图片,也能制作出带有动感天空的视频...
- python中for循环缩进_Python基础- 缩进,选择和循环
- GLSL Optimizer
- Linux 查看盘结构命令
- python使得ffmpeg更加强大