zoukankan      html  css  js  c++  java
  • 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是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。

  • 相关阅读:
    字符串-串的最大表示-后缀数组-1163. 按字典序排在最后的子串
    动态规划-买卖股票的最佳时机 V
    贪心-到达终点数字
    贪心-优先队列-模拟-任务调度器
    滑动窗口-区间统计
    快速排序-无序数组K小元素
    POJ 2299 Ultra-QuickSort【树状数组 ,逆序数】
    POJ 2976 Dropping tests【二分 最大化平均值】
    POJ 1064 Cable master 【二分答案】
    POJ 3190 Stall Reservations 【贪心 优先队列】
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15707393.html
Copyright © 2011-2022 走看看