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语言、表库操作、查询及变量精讲相关推荐

  1. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  2. mysql 视图 字典_MySQL深入01-SQL语言-数据字典-服务器变量-数据操作DML-视图

    SQL语言的组成部分 常见分类:DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类:完整性定义语言: DDL的一部分功能约束 约束:包括主键,外键,唯一键,条件,非空, ...

  3. JavaWeb - 数据库,MySQL安装卸载,MySQL服务器存储结构,sql语言,使用sql操作数据库/数据库表/表中记录,聚集函数,分组操作,limit关键字,重置root密码

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72781451 1.数据库的简介 (1)什么是数据库,就是一个文件系统,使用标准sql ...

  4. MySQL,Oracle系统学习,以及SQL语言-----数据库篇学习笔记

    Handouts MySQL和Oracle系统学习 一. 开篇立意(~~~~必看,有说明~~~~) 二. Oracle 篇 数据库存在之意义 基础概念(必须看,后面不会说明!!!) Oracle管理系 ...

  5. mysql 代码执行时间_mysql 显示SQL语句执行时间的代码

    MySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Que ...

  6. mysql解释器_atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  7. mysql 全局锁_Mysql全局锁和表级锁

    以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁. 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数 ...

  8. mysql 中间表的好处_Mysql中使用中间表提高统计查询速度

    对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响.通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介绍 ...

  9. mysql 分区合并_mysql中的合并表和分区表详解(经常使用的概念)

    分区表是mysql5.1之后的新特性,合并表已经存在很长时间了.这篇文章主要介绍这两个概念以及他们基本的操作. 一.合并表 合并表说实话是一种将要被淘汰的技术,但是掌握了合并表的概念再去看分区表就比较 ...

最新文章

  1. Fragment提交transaction导致state loss异常
  2. 从天气项目看Spring Cloud微服务治理
  3. 关于要不要买apple watch 的思考:节俭是一种习惯
  4. 如何把微信文章中的语音/音乐下载下来
  5. Tensorflow入门神经网络代码框架
  6. 深入探讨JavaScript函数
  7. 用正则表达式输出rdf文档的三元组格式数据
  8. 大数据Hadoop学习记录(2)----基于Java语言的HDFS文件数据载入(判断文件是否存在、写入文本文件、上传本次文件到HDFS、读取HDFS文件内容)
  9. 超详细的UI设计软件教程与资料
  10. php 腾讯短信接口api,腾讯云短信发送功能API-PHP接入
  11. 腾讯信鸽海量移动推送服务是如何构建的
  12. 视频教程-程序员的数学:线性代数-Python
  13. 点击换图 秀米的svg_时隔五年再用秀米,我发现了这个超强玩法。
  14. 二次剪辑必备小技能—视频水印去除
  15. 关于蓝桥杯大赛,你应该了解的那些事!
  16. nested exception is java.sql.SQLException: Data truncated for column 'PassWord' at row 72
  17. oracle缓存文件,oracle的缓存
  18. 【Playwright】关于无痕模式与无头模式
  19. Bootstrap- Modal对话框如何在关闭时触发事件
  20. vue2.0 实现tab标签切换效果 内容可以自行定义

热门文章

  1. 华为交换机配置syslog发送_配置华为交换机把日志发送到远程centos syslog服务器上...
  2. python底层源码_大师兄的Python机器学习笔记:统计学基础之底层代码实现(一)...
  3. 关于推送系统设计的一些总结与思考(一)
  4. 三维空间刚体运动4-4:四元数多点连续解析解插值方法:Spicv
  5. 在unity向量空间内绘制几何(4): 利用平面几何知识画像素直线
  6. git只提交一张图片_即使只使用一张静止的图片,也能制作出带有动感天空的视频...
  7. python中for循环缩进_Python基础- 缩进,选择和循环
  8. GLSL Optimizer
  9. Linux 查看盘结构命令
  10. python使得ffmpeg更加强大