MySql教程

MySQL学习笔记(基础篇)

本文主要是介绍MySQL学习笔记(基础篇),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、SQL语言的规则与规范

1.SQL大小写规范 (建议遵守)

        MySQL 在 Windows 环境下是大小写不敏感。推荐采用统一的书写规范:

数据库名、表名、表别名、字段名、字段别名等都小写;

SQL 关键字、函数名、绑定变量等都大写。

2.注释

单行注释:#注释文字(MySQL特有的方式) 
单行注释:-- 注释文字(--后面必须包含一个空格。) 
多行注释:/* 注释文字 */

3.命名规则

        数据库、表名不得超过30个字符,变量名限制为29个;

        必须只能包含 A–Z, a–z, 0–9, _共63个字符;

        数据库名、表名、字段名等对象名中间不要包含空格;

        同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名;

        必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来;

        保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据;

        类型在一个表里是整数,那在另一个表里可就别变成字符型了。

#以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;

#创建表格
#create table student info(...); #表名错误,因为表名有空格
create table student_info(...);

#其中order使用``飘号,因为order和系统关键字或系统函数名等预定义标识符重名了
CREATE TABLE `order`(
);

#起别名时,as都可以省略
select id as "编号", `name` as "姓名" from t_stu; 
#如果字段别名中没有空格,那么可以省略""
select id as 编号, `name` as 姓名 from t_stu; 

#错误,如果字段别名中有空格,那么不能省略""
select id as 编 号, `name` as 姓 名 from t_stu; 

二、基本的SELECT语句

1.SELECT...FROM...

/*语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
*/

#选择全部列
SELECT *
FROM departments;

#选择特定列
SELECT department_id, location_id
FROM departments;

2.列的别名

        重命名一个列,便于计算,紧跟列名,也可以在列名和别名之间加入关键字AS(AS 可以省略),别名使用双引号(也可省略),以便在别名中包含空格或特 殊的字符并区分大小写。

        建议别名简短,见名知意。

#name 为 last_name 的别名
SELECT last_name AS "name"
FROM employees;

#省略AS
SELECT last_name "name"
FROM employees;

#""
SELECT last_name name
FROM employees;

3.去除重复行

        使用关键字DISTINCT去除重复行。

SELECT DISTINCT department_id
FROM employees;

针对于

SELECT DISTINCT department_id,salary
FROM employees;

需要注意:

        ① DISTINCT 需要放到所有列名的前面,如果写成 SELECT salary, DISTINCT department_id FROM employees 会报错。

        ② DISTINCT 其实是对后面所有列名的组合进行去重。如果你想要看都有哪些不同的部门(department_id),只需 要写 DISTINCT department_id 即可,后面不需要再加其他的列名了。

4.空值参与运算 

        所有运算符或列值遇到null值,运算的结果都为null。

        注意:在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。

5. `` 飘号

        我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果相同,请在 SQL语句中使用一对``(飘号)引起来。

6.查询常数

        SELECT 查询可以对常数进行查询,就是在 SELECT 查询结果中增加一列固定的常数列。这列的 取值是我们指定的,而不是从数据表中动态取出的。

        如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。 比如说,对 employees 数据表中的员工姓名进行查询,同时增加一列字段 corporation ,这个字段固定值为“公司”,可以这样写:

SELECT '公司' as corporation, last_name FROM employees;

7. 过滤数据(SELECT...FROM...WHERE...)

/*语法:
SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
*/

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

三、运算符

1.算术运算符

        + - * / %(取模)

2.比较运算符

        比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果 为假则返回0,其他情况则返回NULL。

        比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。

        = <=>(安全等于) <>(不等于) !=(不等于) < <= > >=

(1)= 等于运算符    

比较规则: 

          ①如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的 是每个字符串中字符的ANSI编码是否相等。

        ②如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。

        ③如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。

        ④如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

(2)<=> 安全等于运算符

        与等于运算符的作用是相似的, 唯一区别 是‘’可 以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL 时,其返回值为0,而不为NULL。

3.逻辑运算符

        NOT(或!) AND(或&&) OR(或||) XOR

4.位运算符

        & | ^(按位异或) ~(按位取反) >> <<

5.其他运算符

IS NOT NULL不为空运算符判断值、字符串或表达式是否不为空
ISNULL(或IS NULL)为空运算符判断值、字符串或表达式是否为空
CREATEST最大值运算符返回多个值中的最大值
LEAST最小值运算符返回多个值中的最小值
BETWEEN AND两值之间运算符判断一个值是否在两值之间
IN属于运算符判断一个值是否为列表中的一个值
NOT IN不属于运算符判断一个值是否不为列表中的一个值
LIKE模糊匹配运算符判断一个值是否符合模糊匹配规则
REGEXP正则表达式运算符判断一个值是否符合正则表达式规则
RLIKE

(1)LIKE运算符

        LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回 0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

        LIKE运算符通常使用如下通配符: “%”:匹配0个或多个字符。 “_”:只能匹配一个字符。

(2)ESCAPE转义字符

        回避特殊符号的,例如:将[%]转为[$%]、[]转为[$]。

SELECT last_name
FROM EMPLOYEES
WHERE last_name LIKE 'King';

SELECT last_name
FROM EMPLOYEES
WHERE last_name LIKE 'King' ESCAPE 'K';

(3)REGEXP运算符

        REGEXP运算符用来匹配字符串,语法格式为:

 expr REGEXP 匹配条件 

        如果expr满足匹配条件,返回,返回 1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。

        REGEXP运算符在进行匹配时,常用的有下面几种通配符:

        ①        ‘^’匹配以该字符后面的字符开头的字符串。

        ②        ‘$’匹配以该字符前面的字符结尾的字符串。

        ③        ‘.’匹配任何一个单字符。

        ④        “[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一 个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。

        ⑤        ‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字, 而“*”匹配任何数量的任何字符。

6.运算符优先级

        数字编码越大,优先级越高。

优先级运算符
1:= =
2|| OR XOR
3&&AND
4NOT
5BETWEEN,CASE,WHILE,THEN,ELSE
6=(比较运算符) <=> >= > <= < <> != IS,LIKE,REGEXP,IN
7|
8&
9<< >>
10- +
11* / DIV % MOD
12^
13- ~
14!
15()

7.正则表达式

        正则表达式通常被用来检索或替换那些符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。例如,从一个文本文件中提取电话号码,查找一篇文章中重复的单词或者替换用户输入的某些敏感词语等,这些地方都可以使用正则表达式。正则表达式强大而且灵活,可以应用于非常复杂的查询。

符号说明例子匹配示例
^匹配文本的开始字符'^b'        匹配以字母b开始的字符book,big,banana
$匹配文本的结束字符'st'        匹配以st结束的字符test,resist,persist
.匹配任何单个字符'b.t'        匹配任何b,t之间有一个字符的字符串bit,bat,but
*匹配零个或多个在它前面的字符'f*n'        匹配n前面有任意个f的字符串fn,fan,faan
+匹配前面的字符一次或多次'ba+'        匹配以b开头后面紧跟至少有一个a的字符串ba,bay,bare
<字符串>匹配包含指定字符串的文本'fa'        匹配包含fa的字符串fan,afa,faad
[字符集合]匹配字符集合中的任何一个字符'[xz]'        匹配包含x或z的字符串dizzy,zebra,extra
[^]匹配不在括号中的任何字符'[^abc]'        匹配不包含a,b,c的字符串desk,fox
字符串{n,}匹配前面的字符串至少n次b{2}        匹配2个或多个b的字符串bb,bbb,bbbb,bbbbb
字符串{n,m}匹配前面的字符串至少n次,至多m次b{2,4}        匹配至少2个,至多4个b的字符串bb,bbb,bbbb

这篇关于MySQL学习笔记(基础篇)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!