mysql查询表变量_MySQL 之SQL语言、表库操作、查询及变量精讲

本文详细介绍了 MySQL 中的数据类型,包括字符型、数值型、日期时间型、布尔型等,以及各种属性修饰符。此外,还讲解了 SQL 语言的组成部分、变量的设定与查看、数据库和表的操作,如创建、删除、修改。重点讨论了查询操作,包括选择、投影、布尔表达式和聚合函数的使用,以及 ORDER BY、GROUP BY、HAVING 和 LIMIT 子句。
摘要由CSDN通过智能技术生成

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';

##常用为前两个

举例

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

mysql> drop database exam; 删除数据库exam

0818b9ca8b590ca3270a3433284dd417.png

表操作(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));

查看该表

0818b9ca8b590ca3270a3433284dd417.png

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;

0818b9ca8b590ca3270a3433284dd417.png

表中的数据删除 (delete)

格式:mysql> delete from table_name where 字段名='values'

#例如:mysql> delete from Persons where LastName='Griffin'删除Person表中的LastName字段中的Griffiin

表修改 (alter)--主要用于修改表中字段

当前系统中已有的mydb数据库

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

修改表中的字段演练,以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;

0818b9ca8b590ca3270a3433284dd417.png

转换字符集及排序规则

格式

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

0818b9ca8b590ca3270a3433284dd417.png

like字符通配

0818b9ca8b590ca3270a3433284dd417.png

rlike 正则表达式

0818b9ca8b590ca3270a3433284dd417.png

between and 两者之间

0818b9ca8b590ca3270a3433284dd417.png

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;

0818b9ca8b590ca3270a3433284dd417.png

#DESC

mysql> select Name,Age,Gender from students where age > 25 and Gender='M' order by Age desc;

0818b9ca8b590ca3270a3433284dd417.png

(3)

聚合函数  sum()   avg()   max()    min( )      count()     avg()

总和           平均值     最大值       最小值      统计         平均值

(4) group by   分组

(5)      having      聚合

例子1

#查询students表以性别分组,查询各个性别的年龄和

mysql> select Gender,sum(Age) from students group by Gender;

0818b9ca8b590ca3270a3433284dd417.png

例子2

#显示班级大于等于两个人的班级

mysql> select ClassID,count(Name) from students group by ClassID having count(Name) >= 2;

0818b9ca8b590ca3270a3433284dd417.png

例子3

#显示总年龄小于等于50的班级

mysql> select ClassID from students group by ClassID having sum(Age) <= 50;

0818b9ca8b590ca3270a3433284dd417.png

(6)limit 显示行

#查找students表的所有信息,偏移前两行,然后再取三行显示

mysql> select * from students limit 2,3;

0818b9ca8b590ca3270a3433284dd417.png

#select语句的执行流程(先后顺序)

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

SELECT语句选项

distinct:指定结果相同的只显示一次

sql_cache:缓存查询结果于缓存中;

sql_no_cache:不缓存查询结果

ps:水平有限,总结也许不够全面,请补充。后续推出多表查询、子查询及视图详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值