mysql基本知识的总结

Mysql基本sql知识

Navicat快捷方式:

选中当前行

在行尾:shift+home

在行首:shift+end

执行当前行:ctrl+shift+R

复制当前行:ctrl+D

显示所有数据库

Show databases;

创建数据库

Cteate database 数据库名;

删除数据库

Drop database 数据库名;

创建表(not null如果加上,添加数据的时候必须不能为空,否则添加数据的时候就会报错  tabname:表名 col:字段名称  type:类型)

Create table tabname(

Col1 type1 ,

Col2 type2 not tull,

Col3 type3 not null

);

根据已有的表创建新的表(table_new:新表名  table_old:旧表名)

Create table table_new like table_old;

删除表(tabname:表名)

Drop table tabname;

增加一个列(tabname:表名  col:字段名称  type:类型)

Alter table tabname add column col type;

单表查询(select)

1.1 查询所有字段

Select * from 表名;

1.2 查询指定字段

Select 字段1,字段2,字段3, from 表名;

1.3 where条件查询语句

Select * from 表名 where 条件表达式;

1.4 带in 关键字查询

Select * from 表名 where 字段 in (元素1,元素2)

Ps:select * from tabname where age in (25,35) 查询年龄22-35之间的数据。同理,还有一个not in 就是查询25-35之外的数据

1.5 带 between and 的范围查询

Select * from 表名where 字段 between 元素1 and 元素2;

Ps:select * from tabname where age between 20 and 30;

同理,还有一个not between and 就是查询不在20-30之外的数据

1.6 带like的模糊查询

Select 字段1,字段2,字段3 from 表名 where 字段 [not]like字符串;

“%”代表任意字符串 “_”代表单个字符串

Ps:

select * from tabname where t_name like ‘张三*’; 张三丰,张三疯小,张三疯大

Select * from tabname where t_name like ‘张三_’;  张三丰,张三疯

Select * from tabname where t_name like ‘张三__’; 张三疯小,张三疯大

Select * from tabname where t_name like ‘%张三%’; 小张三,张三疯,张三疯小大......

1.7 空值查询

Select * from 表名 where 字段 is null;

Select * from 表名 where 字段 is not null;

1.8 带and的多条件查询

Select * from 表名 where 条件表达式1 and 条件表达式2 and......条件表达式n;

1.9 带or的多条件查询

Select * from 表名 where 条件表达式1 and 条件表达式2 and......条件表达式n;

2.0 去重复查询 (distinct)

Select distinct字段 from 表名;

Ps: select distinct t_name from users

2.1 对查询结果进行排序(asc:升序 desc:降序)

Select * from 表名 order by 属性名 asc; (默认是升序);

Select * from 表名 order by 属性名 desc;

2.2 group by 分组查询

  1. 单独使用 (毫无意义)
  2. 与group_concat()函数一起使用;

Ps: select grade group_concat(t_name) from tabname group by grade;

  1. 与聚合函数一起使用(group by);

Ps: select gradename count(t_name) from tabname group by gradename;

  1. Having 筛选

Ps: select gradename count(t_name) from tabname group by gradename having count(t_name)>3;

E. 与with rollup 一起使用(最后加入一个总行数)

Ps:select gradename count(t_name) from tabname group by gradename with rollup;

2.3  limit分页查询

Select * from 表名 limit 初始位置,记录数;

Ps: select * from tabname limit 0,5;

Select * from tabname limit 5,5;

Select * from tabname limit 10,5;

注解:这是一个分页查询的sql语句,其中“,”前面的0,5,10都是每页的起始位置, “,”后面的5是每页分5条数据。

使用聚合函数查询 (聚合函数通常都是和group by一起使用)

3.1 count()函数:用来统计记录的条数

3.2 sum()函数:求和函数

3.3 avg()函数:求平均值的函数

3.4 max()函数:求最大值的函数

3.5 min()函数:求最小值的函数

连接查询

内连接查询:是一种常用的连接查询,内连接查询可以查询两个或两个以上的表

SELECT * FROM t_book,t_bookType where t_book.bookTypeId=t_bookType.id;

左连接

SELECT*FROM t_book tb LEFT JOIN t_bookType tbt ON tb.bookTypeId=tbt.id;

右连接

SELECT * FROM t_book tb RIGHT JOIN t_bookType tbt ON tb.bookTypeId=tbt.id;

多条件查询

SELECT * FROM t_book,t_bookType where t_book.bookTypeId=t_bookType.id and ...and...;   (在后面跟上and+条件)

子查询

带in关键字的子查询

取别名

给表取别名:...表名 表的别名...

给字段取别名:...字段名 as 字段的别名...  (as 不是必须的)

索引

1.普通索引

这类索引可以创建在任意数据类型中;

2.唯一性索引

使用UNIQUE参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的;

3.全文索引

使用FULLTXT参数可以设置,全文索引只能创建在char,varchar,txt类型的字段上,主要作用就是提高查询较大字符串类型的速度,只有MAISAM引擎支持该索引,mysql默认引擎不支持

4.单列索引

在表中给单个字段创建索引,单列索引可以是普通索引,可以是全文索引,也可以是全文索引。

5.多列索引

多列索引是在表的多个字段创建一个索引。

6.空间索引

使用SPATLAL参数可以设置空间索引。空间索引只能创建在空间数据类型上,这样可以提高系统获取空间数据的效率。只有MAISAM引擎支持该索引,mysql默认引擎不支持。

话不多说,创建索引吧!

Create table 表名(

属性名 数据类型 限制性条件(如:not null,primary key...),

属性名 数据类型 限制性条件(如:not null,primary key...),

......

属性名 数据类型 限制性条件(如:not null,primary key...),

index 别名(属性名)

)

总的来说,用语句创建索引,其实就是正常创建表的时候在后面加上 index (表名);  唯一性索引在index前面加UNIQUE,全文索引在index前面加FULLTXT,空间索引在前面加SPATLAL,多列索引是index(属性名1,属性名2)。

Create table 表名(

属性名 数据类型 限制性条件(如:not null,primary key...),

属性名 数据类型 限制性条件(如:not null,primary key...),

......

属性名 数据类型 限制性条件(如:not null,primary key...),

UNIQUE | FULLTXT | SPATLAL index 别名(属性名)

)

别名这个东西看自己需求,不起的话也有默认的。

如果表已经创建好了,如何再用语句给字段加索引呢? 看下面语句,一共是两种方法,实现的效果都是一样的。

第一种:

Create UNIQUE | FULLTXT | SPATL index 索引名 on 表名(属性名);

第二种:

Alter table 表名 add index 别名(属性名);

删除索引

Drop index 索引名 on 表名;

视图

1.视图是一个虚拟的表,是从数据库中一个或多个表导出来的表。

2.数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据都放在原来的表中。

3.使用数据查询数据时,数据库系统会从原来的表中取出相应的数据。

视图的作用:

1.使操作简便化。

2.增加数据的安全性。

3.提高表的逻辑独立性。

创建视图

CREATE [ALGORITHM={UNDEFIEND | MERGE | TEMPTABLE}]

VIEW 视图名[(属性清单)]

AS SELECT语句

[WITH  [ CASCADED | LOCAL] CHECK OPTION ];

ALGORITHM 是可选参数,表示视图所选的算法;

“视图名”参数表示要创建视图的名称;

“属性清单是可选参数,其指定了视图中各个属性的名词,默认情况下,与SELECT 语句参数是一个完整的查询语句,标识从某个表查出某些满足条件的记录,将这些记录导入视图中,WITH CHECK OPTION是可选参数,表示更新视图时要保证在该视图的权限范围内”;

ALGORITHM 包括3个选项  UNDEFIEND 、MERGE、 TEMPTABLE。

其中,UNDEFIEND 选项表示mysql将自动选择所需要使用的算法;MERGE选项表示将使用视图的语句和视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;TEMPTABLE选项表示把视图的结果存入临时表,然后使用临时表执行语句;

CASCADED 是可选参数,表示更新视图时要满足所有所有视图和表的条件,该参数为默认值;LOCAL表示更新视图时,要满足该视图本身定义的条件即可。

当然,上述讲的我也不是特别理解,了解点基础的视图创建吧!

Create view 视图名 as select语句。

Ps:CREATE VIEW v1 AS SELECT * FROM t_book;

CREATE VIEW v1(a,b...) AS SELECT id,name FROM t_book;

这样其实就已经实现视图的创建了,第二个例子中的a,b 其实也是字段重命名,把后面的id和name改成了a,b。(注:多表也可以创建一个视图,后面的select语句不变)

输入:select * from v1;  这样就可以查看你刚才所建的视图了。

其实后面的select语句就是我们正常所需要查询的语句,只不过用视图建了一个虚拟的表,这里面是没有物理数据的,你可以通过如下的方法来查看视图和正常表的区别:

Describe 视图名;       ------查看视图的基本信息

Show table status like ‘视图名’;      ------查看视图的状态

Show table status like ‘表名’;   两者对比,可以发现视图只是个虚表

Show create view 视图名;      ------查看视图详细信息

在数据库中自带的information_schema数据库中有一个VIEWS 也可以查看已经创建视图的信息

修改视图

1.1 create or replace view 视图名(属性名1,属性名2...属性名n) as select ...    ------有则修改,无则创建

Ps:CREATE OR REPLACE VIEW v1(bookName,price) AS SELECT bookName,price FROM t_book;

1.2 alter view 视图名 as select...      ------在已有视图中修改,视图必须存在

Ps:ALTER VIEW v1 AS SELECT * FROM t_book;

更新视图

更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟的表,其中没有数据。通过视图更新时,都是转换基本表来更新。更新视图时,只能更新权限范围以内的数据,超出了范围,就不能更新。

其实更新视图你就把它当做数据库表的更新

Ps:insert into v1 values(属性名1,属性名2...属性名n);

------插入

update v1 set 属性名=’字段1,字段2...字段n’ where id = 1;      ------更新

delete from v1 where id=1;      ------删除

删除视图

drop view v1;       ------删除视图不会影响数据库中表的数据,因为视图本身只是一个虚拟的表

触发器

Mysql常用函数

存储过程和函数

数据备份和还原

原文地址:https://www.cnblogs.com/ITsqh/p/11608663.html

时间: 2024-10-06 18:30:28

mysql基本知识的总结的相关文章

MySQL基本知识及练习(5)

1.求一个班级数学平均分. (1). select sum(math) / count(math) as 数学平均分 from student; (2). select avg(math) as 数学平均分 from student; (3).select avg(name) as 小明平均分 from student;//0 2.求一个班级总分平均分. (1).select (sum(chinese)+sum(math)+sum(english))  /  count(*) from stud

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

Mysql存储过程知识,案例

Mysql存储过程知识,案例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

MySQL的知识回顾

经过一段时间的NodeJs开发经历,选用的数据库是MySQL,一开始以为自己对数据库的基础知识掌握还ok,因为毕竟自己以前用过Apache+PHP+MySQL做数据库课程设计,但是在开发过程中才知道在这方面的基础非常不扎实,下面把项目中用到的MySQL数据库知识作个总结: 首先在Node环境下开发,一开始是选择mysql模块(https://github.com/mysqljs/mysql),后来该用了easymysql模块,原因可以看Node中使用mysql模块遇到的问题,先小总结下数据库的基

Mysql数据库知识总结(看资料总结出来的)

毕业到现在算起来做了3年多服务端开发了,毕业之后很少有时间想在学校一样可以抽出一些空余的时间对知识进行一个总结,到现在也是时候对一些关键的知识一个总结,今天趁着时间比较多,先来对用了3年多的开源关系型数据库mysql进行一下总结,整理了一下知识点可以分为以下几点进行: 一.基础知识 二.SQL优化与索引 三.数据库规范建议 四.数据库设计 五.数据库架构 一.基础知识 知识点主要包括:数据类型 常用函数 字符集 事务隔离级别 锁机制 (1).数据类型 数值类型 -- TINYINT.SMALLI

MySQL高级知识(四)——Explain

前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随笔如无特殊说明都MySQL版本都为5.7.22. 1.explain的作用 通过explain+sql语句可以知道如下内容: ①表的读取顺序.(对应id) ②数据读取操作的操作类型.(对应select_type) ③哪些索引可以使用.(对应possible_keys) ④哪些索引被实际使用.(对应k

MySQL高级知识(五)——索引分析

前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表) 1)tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL,PRIMARY KEY

mysql核心知识要点

1整体知识介绍:mysql基本操作和使用,mysql优化(索引,分表等),mysql部署(读写分离,负载均衡等) 数据库基本介绍:数据库概念,常用数据库,web应用三大软件分工,PHP动态语言特点(处理数据),数据的存放(脚本运行时和执行完毕),数据库系统 关系型数据库:概念(关系+二维表),教学系统实例,常见关系型数据库,关系型数据库特点(所有数据相同结构,没有数据也分配存储空间) 非关系型数据库:键值对型,常见非关系型数据库,非关系型数据库特点(内存运行,硬盘同步) 关系型数据库典型概念:行

第二天 MySQL基础知识

今天开始学MySQL数据库的知识.话说我一直念叨的东西,今天终于看到真面目了,不过刚找了个2012的版本发现有5G大小,而一个2016的版本只有2G...真是略微蛋疼...不管怎么样还是入门了.话又说回来,课程说的是一个星期,但是像我这么聪明估计两个月就搞定了~~~~哈哈~~~唉,说多都是泪啊... 等下把澡洗了,今天学到一点钟,一定要完成数据库的入门.花21天的时间养成一点钟睡觉的习惯到底考不靠谱也可以在这次历练中验证. 老马你能坚持下去么???