mysql笔记手抄本

设计一个项目数据库的流程

了解需求
根据功能制定功能模块,设计出方案图表
然后在是设计数据表
设计索引
设计视图
设计触发器

删除带有外键约束的字段时

SET foreign_key_checks = 0; # 取消外键关联
这里使用delete 字段名 from 表名;
SET foreign_key_checks = 1; # 设置外键关联

浅谈关键字

where 指定的字段是什么
select 选择的字段是什么
from 是来自那个表
set 设定字段值的类型

通常是在创建表时候就做好了,或者使用alter table table_name add 方法添加

创建索引(index 索引名(字段名)),主键(primary key 字段 ),外键

delete和drop

delete 删除通常需要加from (from后通常接表名)
drop删除直接加表名(字段名,视图名) (但一般要root的权限),目前已知只有索引需要加on tablename(无论是创建还是删除)

约束

相关资料
主键:插入主键的两种形式,主键的类型
外键:通常关联什么,一个表中能有几个,关联的字段有什么讲究
非空:如果用户再添加数据时没指定值,就报错
唯一:该列唯一,运行为空;Unique
默认:指定某列的默认值

alter的使用常见

修改表名(rename),字段的数据类型(modify),字段名添加(change);
xxx代表括号中的()值

alter table tablename xxx

alter语句是DDL语句,还可添加数据字段(add),删除字段(drop),修改排列顺序使用的是modify再加 字段1 字段2.总之他
还可以做到更改表的存储引擎(ENGINE=)、删除表的外键约束( DROP FOREIGN KEY <外键约束名>)。

insert的使用注意点

https://www.cnblogs.com/wkhzwmr/p/15312479.html
insert声明向表中插入记录的方法,并不是sql的标准语法,这种语法不一定被其他数据库支持,只能再mysql中使用。

删除数据表的注意事项

删除关联子表的父表时,需先删除关联的外键

删除数据

用delete;

DELETE FROM table_name、
		[WHERE condition>] ;

计算列采用Generated always

索引

相关资料
创建索引可以找出某一列中特定的行
找出某个列中的特定的值;索引存储类型:BTREE和HASH

四种索引类型

普通和唯一索引,单列和组合索引,全文索引,空间索引

创建索引的3种方法

在创建表的定义语句create table种指定索引列,使用alter table 语句在存在的表上创建索引,使用create index语句在已存在的表上添加索引
使用explain语句查看索引是否正在使用,在创建数据表中使用Index(前面定义的字段名)<==这是普通用法,唯一:unique index

单列索引

index singleindex(xxx) # xxx表示索引长度

组合索引

index multidx(xxx) xx表示字段名 # index后可自行命名

全文索引

fulltext index 索引名(字段名) #只有MyISAM存储引擎支持,而mysql8.0默认存储引擎为Inn0db.

空间索引

必须在MyISAM存储引擎上创建,且空间索引的字段必须为非空。

查看表中创建的索引

show index from 表名 \G

在创建好的数据库中添加索引

alter table 表名 add 创建索引的语法

查看索引是否正在使用

explain 查询 语句

使用create index语句在存在的表上添加索引

create 创建索引语法 on 数据表名(字段名)

删除索引

使用alter table;drop index

alter删除语法

alter table table_name drop index index_name
注意:添加了auto-incvement约束字段的唯一索引不能删除

drop删除所有语法

drop删除索引注意后面是加on table_name表名,不能直接空白删除
drop index index_name on table_name

删除索引注意点

删除表中的列时,如果该列是索引的组成部分,则该列也会从索引中删除。(列指的是字段名,当然也包括字段名携带的参数)

视图

相关资料

什么是视图

视图就是一个虚拟表,建立在数据表基础上的虚拟表,对视图的操作,表也会跟着操作,对表的操作,也会同步到视图中去。

视图的规则

视图的作用

创建视图

语法1:
create view 视图名 as 跟sql语法从数据库中选择字段
create view 视图名 as select 字段名,xxx from 表名
语法2:
通过指定视图名(xx字段来创建视图) # 没看懂

在多表中创建视图

记得在不同表的字段上添加数据表名

查看视图

describe(describe)、show table status和show create view

查看数据库下的所有视图信息

select * from 数据库名.views \g

修改视图

就是重新创建了一遍视图,但这个是覆盖;并不是,他是有相关语法的

更新视图

注意无法更新的情况

删除视图

mysql函数

相关资料

为什么mysql中也会有函数

函数的操作大大简便了人们对基础语句的依赖,提高了效率

函数的作用

函数的类型

处理计算数字,字符串,日期函数

条件判断函数对变量的结果进行判断并返回相应的值

系统信息函数

返回系统的多个信息

加密函数

对数据进行加密

存储过程与函数

相关资料

1.存储过程的过程具体是什么,为什么要使用存储过程

存储过程就是一条或多条sql语句,这样说插入很多条数据使用的就是存储过程了

2.存储过程的相关操作,这里的操作就是创建存储过程

调用,查看,修改,删除等等,存储过程与函数是一个东西

3.创建存储过程

存储过程有点函数的意思了,存储程序分为存储过程和函数,它们分别使用的语句是create procedure和create function。
存储过程需要使用begin和end包括在存储过程的函数体内
delimiter // 语句作用是将mysql的结束符设置为//,存储函数中还可以定义变量,还可以传入参数
无论是创建函数还是创建存储过程都要使用delimiter来更改sql语句的结束符号(原符号为;)

存储过程需要使用begin和end包括,在存储过程的函数体内

4.调用存储过程和函数

使用call语句调用存储过程和函数。

call sp_name(xx,xxx) # sp_name代表存储过程,xx表示输入的值,xxx表示返回的变量

调用存储函数

存储函数的使用方式与mysql内部函数的使用方法是一样的,但我不知道这里为啥还加了个select
还可以从语句外调用(通过引用函数名);存储过程中也可调用其他存储过程。

5.存储过程的语法

create function fanc_name([func_parameter])
      returns type # 表示返回的数据类型
      主体内容
declare 语句定义变量 ==> 在存储函数中
set 语句为函数赋值
select xx into 为一个或多个变量赋值,这是直接把选定的列的值赋值到变量中
## 例如
select f_name,f_price into fruitname,fruitprice # f_name,f_price为字段名(包含字段名的数据)

查看存储过程和函数

show status 查看存储过程和函数的状态

show [procedure|function] status like '%C' \G

使用show create查看定义

show create function 数据库名.proceduce_name # proceduce_name代表存储过程

查看存储过程和函数的信息

在information_schema.Routines表中查看存储过程和函数的信息

修改存储过程和函数

alter语句

删除存储过程和函数

drop语句

定义条件使用declare语句

定义条件指的是事先定义程序执行过程中遇到的问题,处理程序定义了遇到这些问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。

光标的使用

光标可以在数据量非常大的时候查看数据,用光标移动逐条读取数据

存储函数的条件判断语句

与其他编程语言的条件判断语句类似,特别是C语言的,有if,case,loop(循环语句重复执行某些语句),leave(用来退出任何被标注的流程控制标准),ITERATE(将执行顺序转到语句段开头处),repeat语句(带条件判断的语句),while(带条件判断的语句)

触发器

相关资料
1.为什么需要触发器?
2.触发器的原理是什么?
触发器的概念是:触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发激活,从而实现执行

答1

有些事件是与要一连串的语句执行的,而这些语句的执行是某些特定的事件所触发。
如:学生毕业后,学校删除该学生的记录,同时也希望能删除该同学借书的记录。
若要执行上述事件,就需要用到delete语句,insert语句和update语句。

答2

触发器的原理就是创建的触发器对象可以包含多个事件所需的sql语句。

事务和锁

什么是事务:事务就是具有4种特性,原子性,一致性,隔离性和持久性来保证一件事件或程序的合理执行。
锁的产生一般都是在对数据有并发处理的时候,我们需要对并发操作进行控制。

权限与安全管理

相关资料
mysql是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。

原文地址:https://www.cnblogs.com/wkhzwmr/p/15707393.html