1.创建表:create table 表名(属性名 数据类型[约束条件],…);

Paimary key 主键 auto_increment自增 foreign key 外键 references 另一表名(字段名).–>外键这个表连接着另外一个表的哪个键.

删除表: drop table 表名;–>表结构也删除了(也即是这个表没了)
Truncate table 表名 --> 只删除表中数据,表结构不会删除.
2.In 与 not in 在或不在这个(1,3)里面,单个查询,只会查询(1或者3)
3.Between and 与 not … 和上面差不多,Between 1 and 3 但是这个是范围查询(1,3) 1-3 之间(包含1,3)
4.Like,模糊查询 “%” 代表任意字符,”_”代表单个字符.
5.Is Not null 与 is null 是否为空
6.And 与 or 一个是所有条件都要完成,or则是任何一个条件完成即可
7.Distinct 去重
8.Order by age asc 与 desc 排序,假如根据age排序,asc正序(升序默认),desc倒叙(降序)
9.Gruop by 分组查询,单独使用无意义,group_concat(字段),拼接,若是根据age group by 则会发现age一样的会出现在同一字段内 例如:
:
最后要注意group by 后面的字段与所查字段的关系(一对一),当然还有having,having和where基本一样,只不过跟在group by后面.
10.Limit 分页查询 limit 0,5 .查询前5条数据,从0开始,5结束,但是5取不到,也即是取头不取尾.
11.聚合函数:count() 查询数据的总数据量 经常使用别名 例如:as total sum(字段)函数:求和…若字段为成绩,where条件或gruop by 为个人的id,那么查出的就是个人的成绩总分.
AVG(字段),但是查的是平均分,min(字段)与max(字段) 查出最小或最大. 三者都类似sum(),当然max()与min()若是在最前面使用,就会当条件查询只会出来这一笔数据.例如:

12.Sql多表查询,内连接不只是inner join,平时写的from a表,b表 where 条件这也是内连接,意思就是两张表中数据都有才可以查询出来
13.而外连接分为左连接和右连接,意思是以左表或右表为主,假如两张表,左表数据多,右表数据少,且条件符合,则左连接的时候左表数据全部出来,右表没有的为null,反之也是一样.
14.Exist() 与 not exist() …()内的数据是否为空,若是为空则代表false,返回数据为空,若不为空,则代表true,正常查询.
15.Any 与 all 例如 age > any(age1,age2) 大于两者中的一个就可以,但是all的情况下则是全部大于.也就是相当于,any为大于最小的,all则是大于最大的就行了,当然若是小于号那就是另外一种情况了,另外分析.
16.Union,(也就是联合的意思,自带distinct,重复的去除)用法,例如两张表的id要全部查出来,则:select id from A union select id from B ,若Aid为1,2,3,Bid为1,2,4.则查出来的数据为1.2.3.4,若是union all,则不带distinct,用法一样,查出来以后为1.2.3.1.2.4.
17.给表取别名,表名 空格 别名 给字段取别名 字段名 as 别名.
18.Insert插入数据时若是使用insert into 表名 values();主键必须到写进去,当然与其他数据不相同即可,若是自增,可以写null.若是insert into 表名(字段)values(值),这时插入数据,字段不用写主键字段,写入其他数据字段名与值就可以完成数据的添加.(主键自己生成为前提,UUID,auto_increament都可以).
19.Insert into 插入多条数据时,其他与18一样,只不过由values()变成了values(),(),();
20.索引是由数据库表中一列或多列组合而成,其作用提高对表数据的查询速度.像图书目录.
优缺点:优:提高了查询数据的效率.缺:创建和维护索引的时间增加了(内容改了,目录也要改).
21.索引分类:普通索引,唯一性索引UNIQUE(unique修饰,例如主键),全文索引FULLTEXT(创建在文本上,例如:char,varchar,varchar2等,mysql默认引擎不支持,),单列索引:单个字段建立索引,多列索引:多个字段创建一个索引,空间索引SPATIAL:不常用(mysql默认引擎不支持)
22.创建索引: index为关键字,或者key
(1)可以index(字段名)–>普通索引
(2)Unique index(字段名)–>唯一索引
(3)Unique index 别名(字段名)–>取别名的唯一索引
(4)index 别名(字段名1,字段名2)–>取别名的多列索引
1.创建表的时候创建索引,

前三个为参数修饰,唯一性,全文,空间索引;
2.在已存在的表上创建索引,或者用ALTER TABLE 表名 ADD 索引,也就是用修改表的形式来创建索引

Create index 索引别名 on 表名(字段名) -->普通单列索引
Create index 索引别名 on 表名(字段名1,字段名2) -->多列索引
Create unique index 索引别名 on 表名(字段名) -->唯一单列索引

Alter table 表名 add +(1)|(2)|(3)|(4)即可.
23.删除索引: drop index 索引名 on 表名.
24.NOW(); mysql的函数,表示当前时间
25.视图:是一个虚拟的表,没有物理数据,是从其他表中导出的数据,当原表数据发生改变时,视图数据也会发生改变,反之也一样.
(1)作用:操作简单化;增加数据安全性:不直接对表进行操作;提高表的逻辑性:原表修改字段对视图无影响.
(2)创建视图:语法:create view 视图名 as 查询语句.
例如:create view vi as select id,name from user;–>这是把user中id,name字段的数据写入到vi视图中.
若是想自己定义字段名不用查出的字段名,可以如下面这样写.
例如:create view vi(vi_id,vi_name) as select id,name from user;–>这样的话id对应vi_id,name对应vi_name;
上面的都是单表的视图,多表的视图也是一样的,只不过后面的单表查询变成多表查询了.
建议创建视图后自己定义字段名,也即是定义别名.
(3)查看视图:
Describe(desc) 视图名–>查看视图基本信息
Show table status like ‘视图名’ --> 查看视图基本信息
Show create view 视图名 --> 视图详细信息,建表具体信息.
在view表中查看视图详细信息–>view 系统表 自带的.
(4)修改视图:修改使徒的定义
Create or replace view 没有的话就创建,有的话就替换
例如:Create or replace view vi(id,name) as select语句.
Alter view 只修改不能创建(也就是说视图必须存在的情况下才可修改)
Alter view vi as select语句
(5)更新视图:视图是虚拟的,对视图进行的crud操作都会对原表的数据产生影响.
也就是说对视图的操作最后都会转换为对视图所连接那个表的操作.
(6)删除视图:删除数据库中已存在的视图,视图为虚表,因此只会删除结构,不会删除数据.
Drop view if exist 视图名.
26.触发器:由事件来触发某个操作,这些事件包括insert语句,update语句和delete语句.当数据库系统执行这些事件时,就会激活触发器执行相应的方法.
创建触发器:create trigger 触发器名 (before/after) 触发事件 on 表名 for each row sql语句.


这里的new是指代新插入的拿一条数据(更新的也算),若是old的话,指的是删除的那一条数据(更新之前的数据).(new和old属于过渡变量)
这条触发器的意思时:当t_book有插入数据时,就会根据新插入数据的id找到t_bookType的id,并试该条数据的bookNum加1.

Begin与end写sql语句,中间可以写多条sql语句用分号;分隔开…也即是说语句要写完成,不能少分号.

Delimiter | 设置分隔符,要不然好像只会执行begin与and之间的第一条sql语句.
查看触发器:
1.show triggers; 语句查看触发器信息.(查询所有的触发器)
2.在triggers表中查看触发器信息.(在数据库原始表triggers中可以查看)
删除触发器:
Drop trigger 触发器名称 ;
27.函数:
(1)日期函数: CURDATE()当前日期,CURTIME()当前时间,MONTH(d):返回日期d中的月份值,范围试1-12
(2)字符串函数:CHAR_LENGTH(s) 计算字段s值->字符串的长度.UPPER(s) 把该字段的值中所有英文都变成大写,LOWER(s) 和相面相反->把英文都变成小写.
(3)数学函数:sum():求和,ABS(s) 求绝对值,SQRT(s):求平方根,mod(x,y),求余x/y
(4)加密函数:PASSWORD(STR) 一般对密码加密 不可逆… MD5(STR) 普通加密 ,不可逆. ENCODE(str,pswd_str) 加密函数,结果是一个二进制文件,用blob类型的字段保存,pswd_str类似一个加密的钥匙,可以随便写. DECODE(被加密的值,pswd_str)–>对encode进行解密.
28.存储过程:
(1)存储过程和函数:两者是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免重复的写一些sql语句,而且存储过程是在mysql服务器中存储和执行的,减少客户端和服务器端的数据传输.(类似于java代码写的工具类.)
(2)创建存储过程和函数:


Create procedure 关键字 pro_book 存储过程名称, in 输入 bT 输入参数名称 int 输入参数类型 out 输出 count_num 输出参数名称 int 输入参数类型
Begin 过程开始 end过程结束 中间是sql语句,
Delimiter 默认是分号,而他的作用就是若是遇见分号时就开始执行该过程(语句),但是一个存储过程可能有很多sql语句且以分号结束,若这样的情况下当第一条sql语句结束后就会开始执行该过程,产生的后果是创建过程时,执行到第一个分号就会开始创建,导致存储过程创建错误.(若是有多个参数,在多条sql中均有参数,第一条设置完执行了,而这时第二条的参数有可能还么有设置完成,导致sql执行失败.)因此,需要把默认执行过程的demiliter关键字的默认值改为其他的字符,例如上面的就是改为&&,(当然我认为上面就一条sql语句,改不改默认的demiliter的默认值都一样.) . 使用navicat的话不使用delimiter好像也是可以的.
Reads sql data则是上面图片所提到的参数指定存储过程的特性.(这个是指读数据,当然还有写输入与读写数据专用的参数类型.)看下图

经常用contains sql (应该是可以读,)
这个是调用上面的存储过程,1为入参,@total相当于全局变量,为出参.

这是一个存储函数,create function 为关键字,fun_book为函数名称, 括号里面为传入的参数名(值)以及入参的类型.RETURNS 为返回的关键字,后面接返回的类型.
BEGIN函数开始,END函数结束.中间是return 以及查询数据的sql语句,
这里是指把bookId 传进去,通过存储函数返回对应的书本名字,
---------存储函数的调用和调用系统函数一样 例如:select 存储函数名称(入参值)
Select 为查询 func_book 为存储函数名 2为入参值.
(3)变量的使用:declaer:声明变量的值
Delimiter &&
Create procedure user()
Begin
Declare a,b varchar2(20) ; — a,b有默认的值,为空
Insert into user values(a,b);
End
&&
Delimiter ;

Set 可以用来赋值,例如:

可以从其他表中查询出对应的值插入到另一个表中.例如:

从t_user2中查询出username2与password2放入到变量a,b中,然后再插入到t_user表中.(当然这只是创建存储过程),创建完以后,需要用CALL 存储过程名(根据过程参数描写.)来调用存储过程.注意:这一种的写法只可以插入单笔数据,若是select查询出多笔数据,因为无循环故而会插入不进去语句,会导致倒致存储过程时出错.下面的游标也是如此.
(4)游标的使用.查询语句可能查询出多条记录,在存储过程和函数中使用游标逐条读取查询结果集中的记录.游标的使用包括声明游标,打开游标,使用游标和关闭游标.游标必须声明到处理程序之前,并且声明在变量和条件之后.
声明:declare 游标名 curson for 查询sql语句.
打开:open 游标名
使用:fetch 游标名 into x,
关闭:close 游标名
----- 游标只能保存单笔数据.

类似于这一个,意思就是先查询出来username2,与password2的值放入到cur_t_user2的游标中(声明,类似于赋值),然后开启->使用.使用的意思就是把游标中存储的值分别赋值到a,b中,然后执行sql语句插入到t_user表中.最后关闭游标.
(5)流程控制的使用:mysql可以使用:IF 语句 CASE语句 LOOP语句 LEAVE语句 ITERATE 语句 REPEAT语句与WHILE语句.

这个过程的意思是,查询t_user表中是否存在id等于我们入参时所写的id,若有的情况下查出有几笔这样的数据并且把数值给到全局变量@num中,if判断是否这样的数据是否存在,若是存在执行THEN后面的语句,即使更新该id对应的username,若没有则插入一条新的数据,最后注意END IF.

相当于java中的switch case.例如:


这里想当然于,while(ture){ break; }

这里的意思是,参数一个int类型的参数,loop aaa循环,把参数当做主键id插入到t_user表中,每循环一次参入的参数值减一,直到参数值为0,跳出循环(if判断,leave实现.)

相当于java的continue.

比上面的多了一个当totalNum = 3时,结束本次循环,下面的语句不在执行,直接执行下一次循环,也即是说插入的数据没有主键为3的数据.



和上面的差不多,只不过当执行到UNTIL时满足条件时,就跳出循环.就如上面那一个意思就是当执行到totalNum = 1时,跳出循环,也就是说不会插入主键为0的那一笔数据


当while条件判断为true时,执行do后面的语句,否则就不再执行.

(6)调用存储过程和函数
CALL 存储过程名字(参数值1,参数值2,…)
存储函数名称(参数值1,参数值2,…)
(7)查看存储过程和函数.

Show procedure status like ‘存储过程名’ --只能查看状态
Show create procedure ‘存储过程名’ – 查看定义(使用频率高).
存储函数查看也和上面的一样.
当然还可以从information_schema.Routines中(系统数据库表)查看存储过程与函数.
(8)修改存储过程与函数:

修改存储过程comment属性的值
ALTER procedure 存储过程名 comment ‘新值’;
(9)删除存储过程与函数:
DROP PROCEDURE 存储过程名;
DROP function 存储函数名;
29.数据备份与还原:
(1)数据备份:数据备份可以保证数据库表的安全性,数据库管理员需要定期的进行数据库备份.
命令:使用mysqldump(下图),或者使用图形工具

Mysqldump在msql文件夹+bin+mysqldump.exe中,相当于一个小软件.执行的话是在dos命令窗操作的.
其实就是导出数据库数据,在navacat中可以如下图导出

(2)数据还原:

若是从navacat中就是把外部的.sql文件数据导入到数据库中去.如下图

关于mysql的一些小知识相关推荐

  1. MySql数据库相关小知识

    场景:再次复习MySql数据库相关知识,记录下 创建数据库时,推荐用下列建表语句(这样就可以存储 emjoi 表情符号了): CREATE DATABASE IF NOT EXISTS dbname ...

  2. cmd mysql 数据分析_小白学数据分析--与MySQL有关的小知识

    放在这个专题下,是因为有时候我们数据分析师的确是懂得一点数据库的操作知识或者会一些SQL,平时我用的比较多的就是MySQL,如果说我们一般就是要学一些SQL操作的话,可能就足以应付平时的工作,至于对象 ...

  3. mysql 与sybase小知识

    MySQL与Sybase不同点 MySQL没有if exists() ,Sybase有if exists() MySQL中无select into语句,sybase中可用select into MyS ...

  4. 机构数据分析培训之关于Mysql定义及数据库相关小知识

    机构数据分析培训之关于Mysql定义及数据库相关小知识 一.关于Mysql定义 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度 ...

  5. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  7. 38个MySQL数据库的小技巧

    1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外. 夯实基础 计算机领域的技术非常强调基础,刚开始学习可能还 ...

  8. 常见堡垒机小知识汇总-行云管家

    为了保障企业IT资产安全,越来越多的企业选择购买堡垒机,但他们对于堡垒机相关知识不清楚,今天我们小编就给大家汇总了部分,希望可以帮到大家. 常见堡垒机小知识汇总 堡垒机是硬件还是软件? 目前市面上堡垒 ...

  9. 不定期更新,记录一些小知识

    作者:东北大胖子 原文来源: https://tidb.net/blog/c6e3a445 不定期更新,记录一些小知识,欢迎指正,本帖尽量使用文字描述,相关图片尽量粘贴,方便大家搜索~ Mysql向T ...

最新文章

  1. 室外电磁赛道铺设补充说明
  2. mysql 主从 怎么 升级_MySQL详解主从(主库升级).doc
  3. MATLAB从入门到精通-新增返回数组高、宽数字特征的全新方式
  4. 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
  5. Java Stack栈类详解
  6. tomcat修改端口号与eclipse中的tomcat保持一致
  7. JAVA WEB框架的错误体系
  8. filter过滤器_web容器的过滤器Filter和拦截器Inteceptor的区别
  9. 计算机应用基础复制3,计算机应用基础3(答案)
  10. gitlab之主要目录介绍
  11. 给对象添加属性和给对象原型添加属性的区别
  12. 电子白板无法触摸怎么办?
  13. 双模sa_买5G手机一定要选5G双模手机,SA/NSA你都了解吗?
  14. mmse评估量表_简易精神状态评价量表(MMSE)
  15. i7 12700H i7 1260p和i7 1255u选哪个
  16. 7-20 寻找250 (10分)
  17. 关于 xx客 的词的解释
  18. Dr.Elephant开发者指南
  19. 平时收集的一些有关UED的团队和个人博客(转)
  20. 山东教师教育网博客空间--我的空间

热门文章

  1. 插件化实现原理(学习笔记六)
  2. layui后台管理登录
  3. JdbcTemplate造成数据库连接数过多
  4. 破壁,宝藏艺术家登场!(一)
  5. 基于单片机的教室人数检测系统
  6. 云南省2021年高考成绩查询时间,2021年云南高考成绩查询时间安排 什么时候出分...
  7. 在腾讯和网易快吃光游戏下,区块链游戏是较好的机会
  8. lammps教程:推荐一个不同单位下压强自动转换网站
  9. js把html转换成word,js实现word转换为html
  10. c语言画猪程序,数学思维+C语言画小猪佩奇,来试试?