zoukankan      html  css  js  c++  java
  • mySQL 黑窗口运行命令

    ‘mysql’不是内部或外部命令,也不是可运行的程序或批处理文件。

    解决:

    1.     配置坏境变量,指定mysqlin目录
    2.     第次进入到mysqlin目录,再运行mysql

     如何链接服务器

    服务器地址(可用IP域名):端口(3306) 用户名   密码

    Mysql -h localhost -u UserName -p password

        如: mysql -h localhost -u root -p 

               mysql -h localhost -u root -p 123456

               mysql -hlocalhost -uroot -p123456

    -h如果不写,则默认连localhost

        如:mysql  -u root -p

     


     显示数据库 :show databases

    information_schema 数据库的一些基本信息;mysql 关于用户的一些信息;performace_schema 性能优化的一些基本信息。

    新建数据库:create database myDatabase chartset utf8

    选中某个数据库:use myDatabase

    •  删除一个数据库:drop database test;  mysql的数据库名字不能修改
    • 显示表:show tables;
    • 新建一个表:create table class (ID int,name varchar(20),age tinyint(M),area varchar(20));
    • 删除一个表:drop database table1;
    • 修改一个表的名字:rename table oldName to newName; 
    • 显示表的所有字段:desc tableName;

    c退出当前语句

    解决字符集问题:默认建表一般用utf-8,而我们在windows下窗口是GBK的,因些需要声音字符集:set names gbk

     给表插入一条数据:如 insert into msg (id,title,content) values (1,'标题","内容“);


     整型 

    • tinyint:默认是带符号位的(-128 到127);
    • tinyint unsigned: 不带符号位(0到255);
    • tinyint(M): 在0填充的时候才有意义, 只有在zerofill设置时才有意义,不影响数据泛微;
    • tinyint zerofill:0填充,默认无符号;
    • defalut:默认值;
    • not null:不能为空;

    如:alert table msg add ages     tinyint(5)    zerofill    not null    default 0;

          creat table  msg (id tinyint(4) zerofill not null default 0,title varchar(20),content varchar(20)) charset utf8;


     浮点数

    • float(M,D):M代到总位数,D 代表小数位;
    • decimal(M,D):M代到总位数,D 代表小数位;decimal的精确度更高

    如:float(4,2) 表示(99.99到 -99.99),float(4,2)unsigned 表示(0 到99.99);


     字符型 char、vachar、text

    • char(M):指定长M,
    • varchar(M):是变长M,最长为M;速度上char更快些;
    • text:文本类型,可以存比较大的文本段,搜索速度稍慢。text不用加时默认值,加了也没用。

     日期时间类型

    • year 年;(1901-2155年),如果输入2位,‘00-69’表示2000-2069,‘70-99’表示1970-1999
    • data类型:日期类型1000-01-01 到9999-12-31
    • time类型:典型格式 hh:mm:ss,日期类型范围:“-838:59:59”到“+838:59:59”
    • datatime类型:yyyy-MM-DD hh:mm:ss,范围:1000-01-01 00:00:00到9999-12-31 23:59:59
    • 时间戳:是1970-01-01:00:00:00到当前的秒数。一般存注册时间,商品发布时间等,羡慕不是用datetime存储,而是用时间戳。

    注意:

    在开发中,很少用日期时间类型来表示一个需要的精确到秒的列

    原因:日期时间类型能精确到秒,而且 方便查看,但是不方便计算。用int存时间戳更方便计算

    枚举类型enum(’男‘,’女‘);

    id primary key auto_increment :主键、自动增长;


     左链接

    select * from tba left join tbb on tba.catId=tbb.catId;左链接以左边表为主表,当不能在tbb表里面匹配到相关信息时,显示NULL.


     UNION

    将两个表连接起来,要求连接的两个表列数一样,每列的类型一致。

    select * from ta union select * from tb 


     视图

    视图是表的查询结果,自然表的数据改变了,影响视图结果;

    视图改变了,影响表,但是视图并不总是能增删改,只有当视图的数据与表的数据一一对应时才可以更改

    注:插入视图时,视图必须包含表中没有默认值的列

    • 创建:create  algorithm= temptable view 视图名 as select 语句;
    • 使用: select * from 视图名;
    • 删除:drop view 视图名

    视图的 algorithm=merge/temptable/undefined

    •  merge:当引用视图时,引用视图的语句与定义视图的语句合并。merge意味着视图只是一个规则,语句规则,当查询视图时,把查询视图的语句与创建时的语句where子句等合并,分析形成一条select语句。
    • templtable:当引用视图时,根据视图的创建语句建立一个临时表
    • undefined:未定义,自动、让系统帮你选。

    字符集和校对集

    某一个级别没有指定字符集则集成上一级的字符集。

    • 服务器,我给你发送的数据是什么编码的:set character_set_client=gbk;
    • 转换器,转换成什么编码:set character_set_connection=gbk;
    • 查询的结果是用什么编码:set character_set_results=gbk;

    注:如果以上3者都为字符集N,则可以简写为set names N
    出现乱码的情况:client声明与事实不符,results与客户端字符集不符的时候

    校对集 collation 

    create table tem(name varchar(10) ) charset utf8 collate utf8_bin;  指字符集的排序规则,一种字符集可以有一个或者多个排序规则。

    注:声明的校对集必须是字符集合法的校对集

     


     触发器

    四要素:监视地点、监视事件、触发时间、触发事件。

    创建:create trigger triggerName after|before  insert|update|delete on 表名

               for each row       #行触发器,mysql里面是固定的

               begin   sql语句    end

    注:    delimiter $      将结束符由‘;’改成‘$’符,修改语句不用加结束符

    删除: drop trigger  triggerName;

    查看: show triggers ;

    •  对于insert而言,新增的行用 new来表示,行中每一列的值用new.列名来表示。
    •  对于delete而言,删除的行用old来表示,行中的每一列的值用old.列名来表示。
    •  对于update而言,修改的行,修改前的用old来表示,修改后的值用new来表示。
    delimiter $    //更改结束符为$,不用加结束符
    
    create trigger tg1 after insert on goods      for each row
    
    begin
    
    update tb2 set num=num-1 where tb2.id=new.id;
    
    end $
    
    before例子:
    
    create trigger tg2 befor insert on goods for each row
    
    begin 
    
         if new.num >5  then
    
         set  new.much=5
    
         end if ;
    
         update g set num =num-new.muchh where id=new.gid;
    
    end$
    

      


    事务

    事务指:一组操作,要么都成功执行,要么都不执行

    事物的ACID特性:

    • 原子性(atomicity):原子意为最小的粒子,或者说不能再分的事物。数据库事务的不可再分的原则即为原子性;组成事务的所有查询必须:要么全部执行,要么全部取消(就像上面的银行例子)。
    • 一致性(consistency):指数据的规则,在事务前/后应保持一致。
    • 隔离性(Isolation):简单点说,某个事务的操作对其他事务不可见的。
    • 持久性(Durability):当事务完成后,其影响应该保留下来,不能撤消。

    存储引擎的种类和特点

    显示所有的存储引擎:show engines;

    指定存储引擎:create table tb (id int primary key auto_increment ) engine=innodb|myisam charset utf8;

     

     支持事务案例的数据库引擎才有事务

    开启事务:start transaction ;  注意:两个start transaction,前面的那个就隐式的提交了

    sql语句......

    commit提交、 rollback回滚   //当一个事务commit ollback就结束 了


     备份与恢复

    增量备份、整体备份

    系统自带的备份工具:mysqldump.exe,可以导出库也可以导出表

    • 导出一个库下面的所有表:mysqldump -u 用户名 -p 密码  库名> 地址/备份的文件名称 
    • 备份多个库的方法:mysqldump -u 用户名 -p 密码  库名1 库名2  库名3 > 地址/备份的文件名称 

    如:mysqldump -uroot -p111111 mydatabase goods > D:\goods.sql    // 导出mydatabase数据库下的goods表,会在D盘下生成一个SQL文件

    •  执行恢复:source    D:\mydatabase.sql;
    • 对于表级的备份:use 库名  --------source 备份的文件地址

    索引

    • 好处:加快了查询速度;
    • 坏处:降低了增、删、改的速度,增大了表的文件大小(索引文件甚至可能比数据文件还大)。

    注意:大数据处理办法:先去掉索引,再导入,最后再统一加索引。

    1. 不能过度索引;
    2. 索引条件列(where 后面最频繁的条件比较适宜索引)
    3. 索引散列值,过于集中的值不要索引;如性别加索引,意义不大;

    索引的类型:

    • 普通索引(index):仅仅是加快查询速度;
    • 主键索引(primary key):不能重复;主键必唯一,唯一索引不一定是主键,一张表只能有一个主键,可以有一个或多个唯一索引
    • 唯一索引(unique):行上的值不能重复;
    • 全文索引(fulltext)

    查看索引:

            show index from 表名;

            show index from 表名 G         //用另一种格式显示

    建立索引:

            alter table 表名   add index|unique|fulltext【索引名】(列名);

             alter table 表名   add primary key   (列名);   //添加主键索引

     删除索引:

            alter table  表名  drop index 索引名;

            alter table 表名 drop primary  key; //删除主键

    查询索引:

            select * from member where match (pro) against ("china");

            

            查询匹配度  select  id,email,   match (pro ) against ("china") from member;

            

            注:全文索引不针对非常频繁的词做索引,全文索引对中文意义不大


    存储过程

         概念类似于函数,就是把一段代码封装起来,在封装语句里面,可以用if/else,case,while等控制结构,可以进行sql编程。

    • 查看:show procedure status 或 show procedure status G;
    • 删除:drop procedure 存储过程名字 ;
    • 使用:call 存储过程名字;
    delimiter $
    create procedure p(n int)
        begin
    declare i int;
    declare s int;
    set i=1;
    set s=0;
    while i<=n do
    set s=s+i;
    set i=i+i;
    end while;
    select s;
    end$
    call p(5)$ //调用

     

  • 相关阅读:
    nodejs-supervisor
    javascript数组操作(创建、元素删除、数组的拷贝)
    mysql索引优化-order/group
    php-kafka
    大流量高并发解决方案
    MySQL数据类型和常用字段属性总结
    php一致性hash算法
    面试中的排序算法总结
    PHP的运行机制与原理(底层)
    Mysql中的锁机制
  • 原文地址:https://www.cnblogs.com/guanguan-/p/10334365.html
Copyright © 2011-2022 走看看