子查询,mysql索引,权限,搜索引擎,范式(036)

一.子查询

       1. 可以将子查询放在许多的 SQL 子句中,包括:

           WHERE 子句• HAVING 子句

            FROM 子句

        2使用子查询的原则

            子查询放在圆括号中。

            将子查询放在比较条件的右边。

             在单行子查询中用单行运算符,在多行子查询中用多行运算符。

                示例

                    谁的薪水比 Oldlu 高

            select em.last_name,em.salary from employees em where em.salary > (select e.salary from employees e where e.last_name = 'Oldlu')

            单行子查询

            示例

            查询 Oldlu 的同事,但是不包含他自己。

            select empl.last_name from employees empl where empl.department_id = (select

e.department_id from employees e where e.last_name = 'Oldlu') and empl.last_name <>   'Oldlu'

          多行子查询

        示例

        查找各部门收入为部门最低的那些雇员。显示他们的名字,薪水以及部门 ID。

        select em.last_name,em.salary,em.department_id from employees em where em.salary

        in(select min(e.salary) from employees e group by e.department_id) 

二.正则表达式

        1.规则

• MySQL 中允许使用正则表达式定义字符串的搜索条件,性能要高于 like。

• MySQL 中的正则表达式可以对整数类型或者字符类型检索。

• 使用 REGEXP 关键字表示正则匹配。

• 默认忽略大小写,如果要区分大小写,使用 BINARY 关键字

        2“^”符号

            ^在正则表达式中表示开

             查询以 x 开头的数据(忽略大小写)

            SELECT 列名 FROM 表名 WHERE 列名 REGEXP '^x';

            示例

            查询雇员表中名字是以 k 开头的雇员名字与薪水。

            select last_name,salary from employees where last_name REGEXP binary '^K'

        3“$”符号

            查询以 x 结尾的数据(忽略大小写)

            SELECT 列名 FROM 表名 WHERE 列名 REGEXP 'x$';

             示例

            查询雇员表中名字是以 n 结尾的雇员名字与薪水。

            select last_name,salary from employees where last_name REGEXP binary 'n$'

       4. “.”符号 

            英文的点,它匹配任何一个字符,包括回车、换行等。

            SELECT 列名 FROM 表名 WHERE 列名 REGEXP 'x.';

             示例

            查询雇员表中名字含有 o 的雇员的姓名与薪水。

            select last_name,salary from employees where last_name REGEXP 'o.'

    5.  “*”符号 

        “*”:星号匹配 0 个或多个字符,在它之前必须有内容。10.6“+”符号 

    6. "+":加号匹配 1 个或多个字符,在它之前也必须有内容。

        SELECT 列名 FROM 表名 WHERE 列名 REGEXP 'x+';-匹配大于 1 个的任意字符

    .7“?”符号 

        “?”:问号匹配 0 次或 1 次。

        SELECT 列名 FROM 表名 WHERE 列名 REGEXP 'x?';-匹配 0 个或 1 个字符

     8.“|”符号 

            “|”:表示或者含义

            SELECT 列名 FROM 表名 WHERE 列名 REGEXP 'abc|bcd';-匹配包含 abc 或 bcd


            查询雇员表中名字含有 ke 或者 lu 的雇员的名字与薪水。

            select last_name,salary from employees where last_name REGEXP 'ke|lu'

            9“[a-z]” 

            “[a-z]”:字符范围

            “^[....]”:以什么字符开头的

            “[^....]”:匹配不包含在[]的字符

            SELECT 列名 FROM 表名 WHERE 列名 REGEXP '[a-z]';-匹配内容包含 a-z 范围的数 

        10 “{n}”


            “{n}”:固定次数。

            select * from student where name REGEXP 's{2}';--匹配以 s 连续出现 2 次的所有数据 

            查询雇员名字含有连续两个 e 的雇员的姓名与薪水

            select last_name,salary from employees where last_name REGEXP 'e{2}'

三.MySQL 数据库存储引擎

1.查看数据库引擎

    SHOW ENGINES

2.innodb 与 myisam 区别

1. InnoDB 支持事务,MyISAM 不支持,对于 InnoDB 每一条 SQL 语言都默认封装成事

务,自动提交,这样会影响速度,所以最好把多条 SQL 语言放在 begin 和 commit 之间,组

成一个事务;

2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM

会失败;

3. InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引

效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,

主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据

文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而

MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度

很快;

5. Innodb 不支持全文索引,而 MyISAM 支持全文索引,查询效率上 MyISAM 要高;(在

MySQL5.7 版本中已经支持全文索引)

----------------------------------------------------------------------------------------------------------------------

一.索引的类型

普通索引,唯一索引,主键索引,组合索

引,全文索引。

二.普通索引

1.是基本的索引,没有任何限制

2.创建索引是,可以指定索引的长度。length为可选参数,表示所有的长度,只有字符串类型的字段才能指定索引的长度,如果是 BLOB 和 TEXT 类型,必须指定 length。

3.直接创建索引

create index 索引名 on 表名(列名

[长度])

4.修改表添加索引

alter table 索引名 add index 表名

(列名[长度])

5.创建表时指定索引列

create table 表名(

列名 类型,

index 索引名 (列名[长度])

6.删除索引

drop index 索引名 on 表名

三.唯一索引

1.唯一索引与普通索引类似,不同的就

是:索引列的值必须唯一,但允许有空

值。

2.直接创建唯一索引

create unique index 索引名 on 表名

(列名[长度])

3.修改表是添加唯一索引

alter table 表名 add unique index

索引名(列名[长度])

4.创建表时指定索引列

create table 表名(

列名 类型,

unique index 索引名 (列名[长度])

四.主键索引

创建一个主键

五.组合索引

1.组合索引是指使用多个字段创建的索

引,只有在查询条件中使用了创建索引

时的第一个字段,索引才会被使用(最左

前缀原则)。

2.最左前缀原则

最左边的优先。如果跳过最左边的,直

接进行第二个就无效。

3.修改添加组合索引

alter table 表名 add index 索引名

(列1[长度],列2[长度])

4.创建时创建组合索引

create table 表名(

列名 类型,

index 索引名(列1[长度],列2[长度])

六.全文索引

1.查找文本中的关键字,不是直接与索引

的值相比较,想是一个搜索引擎,配合

match,against使用。

2.修改添加全文索引

alter table 表名 add fulltext 索引

名(列名)

3.创建时创建全文检索

create table 表名(

列名 类型,

fulltext 索引名(列))

4.删除全文检索

drop index 索引名 on 表名

或者

alter table 表名 drop index 索引名

5.使用全文索引

select 列名 from 表名 where

match(全文索引列名) against('搜

索内容')

实列:

(1)创建全文索引

修改 emp8 表,为 content 列创建名

为 emp8_content_full 的全文索引

alter table emp8 add fulltext

emp8_content_full(content)

(2)插入数据

向 emp8 表中插入一条数据 content

的值为”hello,bjsxt”

insert into emp8 values(default ,

'hello bjsxt')

(3)查询

查询 emp8 表中内容包含 bjsxt 的数

据。

select * from emp8 where match

(content) against('bjsxt')

6.全文解析器

全文索引中基本单位是”词”。分词,

全文索引是以词为基础的,MySQL 默认

的分词是所有非字母和数字的特殊符号

都是分词符。在检索数据时我们给定的

检索条件也是词。

MySQL 中默认的全文解析器不支持中文

分词。如果数据含有中文需要更换全文

解析器NGRAM。

7.更换全文解析器

创建指定ngram解析器,此解析器不用分

词,搜索时可以匹配内容中的任何内容

alter table 表名 add fulltext 索

引名(列) with parser ngram

实列:

向 emp8 表中添加一条数据 content 值

为”你好,北京尚学堂”:

insert into emp8 values(default ,

'你好,北京尚学堂')

查询 emp8 表中内容包含”北京尚学

堂”的数据

select * from emp8 where match

(content) AGAINST('北京尚学堂')

------------------------------------------------------------------------------------------------------

一.mysql用户

root是超级管理员,由root创建的是普通用

户。

二用户管理

1.创建用户

create user 用户名 identified by '密

码'

2.查看用户

select user,host from mysql.用户名

3.分配权限

GRANT 权限 ON 数据库.表 TO 用户名@登

录主机 IDENTIFIED BY "密码"

GRANT ALL PRIVILEGES ON *.* TO

'username'@'localhost' IDENTIFIED BY

'password'

登陆主机:% 匹配所有主机

localhost localhost 不会被解析成 IP

地址,直接通过 UNIXsocket 连接

127.0.0.1 会通过 TCP/IP 协议连接,并

且只能在本机访问;

::1 ::1 就是兼容支持 ipv6 的,表示同

ipv4 的 127.0.0.1

3.权限列表

ALTER: 修改表和索引。

CREATE: 创建数据库和表。

DELETE: 删除表中已有的记录。

DROP: 删除数据库和表。

INDEX: 创建或删除索引。

INSERT: 向表中插入新行。

SELECT: 检索表中的记录。

UPDATE: 修改现存表记录。

FILE: 读或写服务器上的文件。

PROCESS: 查看服务器中执行的线程信息或杀死线程。

RELOAD: 重载授权表或清空日志、主机缓存或表缓存。

SHUTDOWN: 关闭服务器。

ALL: 所有权限,ALL PRIVILEGES 同义词。

USAGE: 特殊的 "无权限" 权限

6.刷新权限

每当调整权限后,通常需要执行以下语句

刷新权限

FLUSH PRIVILEGES

7.删除权限

DROP USER username@localhost

三.limit

1.语法格式

select 列 from 表名 where 条件 order

by limit 起始位置,查询数量。

实列:

查询雇员表中所有数据按 id 排序,实现

分页查询,每次返回两条结果。

select * from employees order by

employees_id limit 0,2

2.limit offset

select 列 from 表名 where 条件 order

by limit 查询数量 offset 起始位置。

实列:

查询雇员表中所有数据按 id 排序,使用

LIMIT OFFSET 实现分页查询,每次返回两

条结果。

select * from employees order by

employees_id limit 2 offset 4

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容