五个知识体系之-SQL学习-第三天

1. sql约束作用

主键约束作用:保证插入数据的有效性。
比如性别列,只能是“男”“女”,
输入“abc”就是无效的,所以你可以添加约束
alter table 表名
add constraint chk_sex check(性别 in ('男','女'))进行约束。

外键约束作用:建立外键的作用就是保证数据的完整性,就如同表A里有主键aa字段,表B里有bb字段,当A为主表,B为从表时,主表的主键就是从表的外键,也就是说B表里的bb字段的取值要来自A表里的aa字段。限制约束,以达到数据上的完整。

eg:
班级和学生是一对多的关系,将班级表(class)中的主键(class_id)作为学生表(student)的外键对学生表进行约束。 
alter table student 
add constraint fk_student_class foreign key(class_id) references class(class_id) 
(注意:学生表中的外键字段必须与班级表中被作为外键的字段数据类型保持一致,但其名称可以不同)

2. 索引

概念:索引,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。

#创建普通索引

CREATE INDEX index_userid ON userbase(userid);

ALTER TABLE userbase ADD INDEX index_username(username);

#创建唯一索引 -- 唯一索引,就是在创建索引的时候,限制索引值必须是唯一值,通过该类型的索引可以更快的查询某条记录。

【注意:创建唯一索引的时候,如果表中该字段有为空值的时候,则唯一索引会创建失败。】

CREATE UNIQUE INDEX index_userid ON userbase(userid);
ALTER TABLE userbase ADD UNIQUE INDEX index_username(username);

#创建全文索引 -- 全文索引主要关联在数据库中数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。

CREATE INDEX index_userid ON userbase(userid);
ALTER TABLE userbase ADD UNIQUE INDEX index_username(username);

3. Mysql 运算符

算数运算符:+、-、*、/、(DIV)、%、(MOD)-- 注意:/和DIV都是除法运算符,/ 结果默认保存四位小数结果,DIV 默认保存整数结果。

EG: select * from table where F1 is null;--F1为null的数据。

比较运算符:

4. 正则表达式  

-- eg:

a. SELECT '/webproxy/src/main/webapp/css/report.css' REGEXP '^/web.*css$';

SELECT '/webproxy/src/main/webapp/css/report.css' REGEXP '^/web|css$';

b. 查询找到所有名称以元音开始和'ok'结束:

SELECT NAME FROM person_tbl WHERE NAME REGEXP '^[aeiou]|ok$'; -- "|" 为或的关系

de|abc

匹配de或abc

^  匹配字符串的开始部分

$ 匹配字符串的结束部分

. 匹配字符串中的任意一个字符

[字符集合] 匹配字符集合中的任意一个字符

[^字符集合] 匹配字符集合外的任意一个字符

str1|str2|str3 匹配str1、str2、str3的任意一个字符串

* 匹配字符,包含0个和1个

+ 匹配字符,包含1个

字符串{N} 字符串N次

字符串{M,N} 字符串至少出现M次,最多出现N次

4.0 正则表达式匹配验证

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测试表达式,并试验它们。

EG:SELECT '/webproxy/src/main/webapp/css/report.css' REGEXP '^/web';

4.1 $可以比较是否是以特定的字符或者是字符串结尾的

EG:SELECT * FROM userbase WHERE username REGEXP '5$' ORDER BY username; -- 可做匹配用途。

原文地址:https://www.cnblogs.com/SH-xuliang/p/5610099.html