经过之前的准备后,我们正式进入学习。

MySQL语言简介

SQL(Structured Query Language),被称为结构化查询语言,是目前主流的关系型数据库上执行数据操作、数据检索以及数据库维护所需要的标准语言。

它将数据查询、数据操纵、事务控制、数据定义和数据控制集于一身。

SQL由很少的词组成,这些词称为关键词,每条语句都是由一个或多个关键词组成。

不是某个特定数据库的专有语言,所有关系型数据库都支持SQL。

不分大小写,习惯上,关键字用大写,表名列命用小写。

数据库语言分三大类

一、数据定义语言(DDL-Data Define Language)。用于执行数据库的任务,对数据库及数据库中的各种对象进行创建、删除、修改等操作。如前所述,数据库对象主要包括:表、默认约束、规则、视图、触发器、存储过程等。DDL包括的主要语句及功能如下表。

语    句

功    能

说    明

创建数据库或数据库对象

不同数据库对象,其CREATE语句的语法形式不同

对数据库或数据库对象进行修改

不同数据库对象,其ALTER语句的语法形式不同

删除数据库或数据库对象

不同数据库对象,其DROP语句的语法形式不同

二、数据操纵语言(DML-Data Manipulation Language)。用于操纵数据库中各种对象,检索和修改数据。DML包括的主要语句及功能如下表。

语    句

功    能

说    明

从表或视图中检索数据

是使用最频繁的SQL语句之一

将数据插入到表或视图中

修改表或视图中的数据

既可修改表或视图的一行数据,也可修改一组或全部数据

从表或视图中删除数据

可根据条件删除指定的数据

三、数据控制语言(DCL-Data Control Language)。用于安全管理,确定哪些用户可以查看或修改数据库中的数据,DCL包括的主要语句及功能如下表。

语    句

授予权限

可把语句许可或对象许可的权限授予其他用户和角色

收回权限

与GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限

1、字符串常量

字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode字符串常量。

ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符号串,例如:‘hello world’

Unicode 字符串常量与ASCII字符串常量相似,但它前面有一个N标志符(N代表 SQL-92标准中的国际语言(National Language))。N前缀必须为大写。只能用单引号括起字符串,例如:N‘hello world’

1、打开mysql控制台(后面的也一样)

输出“hello world”

执行select ‘hello world’;

2、数值常量

数值常量可以分为整数常量和浮点数常量。

整数常量:即不带小数点的十进制数,例如:1894,2,+4,–2147483648。

浮点数常量:是使用小数点的数值常量,例如:5.26,-1.39,101.5E5,0.5E-2。

3、十六进制常量

MySQL支持十六进制值。一个十六进制值通常指定为一个字符串常量,每对十六进制数字被转换为一个字符,其最前面有一个大写字母“X”或小写字“x”。在引号中只可以使用数字“0”到“9”及字母“a”到“f”或“A”到“F”。例如:X'41'表示大写字母A。x'4DC'表示字符串MySQL。

十六进制数值不区分大小写,其前缀“X”或“x”可以被“0x”取代而且不用引号。即X'41'可以替换为0x41,注意:“0x”中x一定要小写。

十六进制值的默认类型是字符串。如果想要确保该值作为数字处理,可以使用CAST(...AS UNSIGNED)。

查看"0x43"的字母和十进制 查看"CAT"的十六进制

执行:select 0x43, cast(0x43 as unsigned)

,hex('CAT');

4、日期时间常量

日期时间常量:用单引号将表示日期时间的字符串括起来构成。日期型常量包括年、月、日,数据类型为DATE,表示为“2014-06-17”这样的值。时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为TIME,表示为“12:30:43.00013”这样的值。MySQL 还支持日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“2014-06-17 12:30:43”。

5、位字段值

可以使用b'value'符号写位字段值。value是一个用0和1写成的二进制值。直接显示b'value'的值可能是一系列特殊的符号。

使用BIN函数可以将位字段常量显示为二进制格式。使用OCT函数可以将位字段常量显示为数值型格式。

查看“”的二进制和十进制

执行:selectBIN(b''+0),OCT(b''+0);

6、布尔值

布尔值只包含两个可能的值:TRUE和FALSE。FALSE的数字值为“0”,TRUE的数字值为“1”。

select TRUE, FALSE;

7、NULL值

NULL值可适用于各种列类型,它通常用来表示“没有值”、“无数据”等意义,并且不同于数字类型的“0”或字符串类型的空字符串。

用户变量

用户变量与连接有关。也就是说,一个客户端定义的变量不能被其他客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

定义和初始化一个变量可以使用SET语句,语法格式为:

SET  @user_variable1=expression1 [,user_variable2= expression2 , …]

其中,user_variable1、user_variable2为用户变量名,变量名可以由当前字符集的文字数字字符、“.”、“_”和“$”组成。

expression1、expression2为要给变量赋的值,可以是常量、变量或表达式。

创建用户变量name并赋值为“123”

执行:set @name='123’;

查看@name

:select @name;

系统变量

MySQL有一些特定的设置,当MySQL数据库服务器启动的时候,这些设置被读取来决定下一步骤。例如,有些设置定义了数据如何被存储,有些设置则影响到处理速度,还有些与日期有关,这些设置就是系统变量。

获得现在使用的MySQL版本

执行:select @@version ;

获得系统当前时间。

执行:selectCURRENT_TIME;