zoukankan      html  css  js  c++  java
  • MySQL笔记

    一、MySQL常用基本数据类型

    1.1 数值

    INT(4) ,TINYINT(1),FLOAT(4),DOUBLE(8)   // 括号内是它们所占的字节数

    1.2 日期和时间

    DATE,TIME,DATETIME,YEAR,  TIMESTAMP

      1、当字段定义为timestamp,表示该字段在插入和更新时都不会自动设置为当前时间。

      2、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP,表示该字段仅在插入且未指定值时被赋予当前时间,再更新时且未指定值时不做修改。

      3、当字段定义为timestamp ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入且未指定值时被赋值为"0000-00-00 00:00:00",在更新且未指定值时更新为当前时间。

      4、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入或更新时未指定值,则被赋值为当前时间。

    1.3 字符串

    CHAR(0~255),WARCHAR(0~255),TEXT(0~65535),

    CHAR为定长字符串,WARCHAR为变长字符串

    二、数据定义语言(DLL)

    (语法不区分大小写)

    数据库

    2.1 查看数据库  SHOW  DATABASES;

    2.2 切换至数据库  USE  database_name;       // 这里小写指根据具体情况写具体的数据库名称

    2.3 创建数据库  CREATE  DATABASE  database_name;

    2.4 删除数据库  DROP  DATABASE  database_name;

    创建后的数据库一般都放在MYSQLMySQLServer8.0Data目录。

    数据表

    2.2.1  创建表  CREATE  TABLE table_name(列名  列类型  其他关键词,

                          (列名  列类型  其他关键词,

                          (列名  ....    ....    );

    其他关键此包括:not null(非空),auto_increment(自增),comment' 解释词'(解释),default(默认)

    2.2.2  查看当前数据库所有表  SHOW  TABLES;

    2.2.3  查看表的结构  DESC  table_name;

    2.2.4  查看创建表的语句  SHOW  CREATE  TABLE  table_name;

    2.2.5  删除表  DROP  TABLE  table_name;

    2.2.6  修改类型  ALTER  TABLE  table_name MODIFIY 字段  类型;// not null视情况是否加上

    2.2.7  修改字段  ALTER  TABLE  table_name CHANGE 原字段 新字段 类型;

    2.2.8  添加字段  ALTER  TABLE  table_name ADD 字段 类型 其他关键词;// 默认添加在表尾,可在语句末尾加上AFTER 某字段改变其位置

    2.2.9  删除字段  ALTER  TABLE  table_name DROP 字段;

    三、数据操作语言(DML)

    下面介绍的DML是对表记录的增删改查

    3.1  查看表的内容  SELECT  *  FROM  table_name;

    3.2  插入数据  INSERT  INTO  table_name(列名1,列名2,列名3,.....)VALUES(列值1,列值2,列值3,.....);  // 注意:列名与列值的顺序是一 一对应的;varchar和char类型的列值需要单引号' '

    3.3  修改/更新数据  UPDATE   table_name  SET  列名1=列值1,列名2=列值2……[WHERE 条件];       // WHERE 这部分自由发挥,如WHRER id in(1,2)

    3.4  删除数据  DELETE  FROM  table_name [WHERE 条件];

    四、数据查询语言(DQL)

    无论是哪一种查询语言,对表本身的结构和内容都没有影响,仅作为查询,给用户显示。

    4.1  查看指定列内容  SELECTE  列名1,列名2,……FROM  table_name [WHERE 条件];

    4.2  查看表的所有内容  SELECT  *  FROM  table_name;

    4.3  模糊查询  SELECT  *  FROM  table_name  [WHERE  列名 ] LIKE  "你想搜索的内容“

    4.4  升序排列  SELECT  *  FROM  table_name  ORDER   BY  字段名  ASC;

    4.5  降序排列  SELECT  *  FROM  table_name  ORDER   BY  字段名  DESC;

    4.6  聚合函数  SELECT  function  FROM  FROM  table_name;

    // 这里的function包括count(*)、sum(列名)、avg(列名)、max(列名)、min(列名),分别对应的功能是查看表的记录数、查看此列的和、平均值、最大值、最小值

    4.7  分组查询  SELECT  *  FROM  table_name  GROUD  BY  sex;(这里假设性别分组)

    4.8  内连接查询  SELECT  想要显示的内容  FROM  表1  INNER   JOIN  表2  ON  条件;

    4.9  左连接查询  SELECT  想要显示的内容  FROM  表1  LEFT  JOIN  表2  ON  条件; // 以左边的表1为基准将表1列出,表2再对应列出内容,空白处用NULL填充

    4.10  右连接查询  SELECT  想要显示的内容  FROM  表1  RIGHT   JOIN  表2  ON  条件;

    4.11  子查询  SELECT  内容1  FROM  表1  [WHERE  条件]  IN  (SELECT  内容2  FROM  表2);   //内容1和内容2要对应上

    4.12  限制条数查询  SELECT  列名   FROM  table_name  LIMIT  n;    //n表示想要显示多少条

    4.13  限制条数查询  SELECT  列名   FROM  table_name  LIMIT  m,n;    //在第n+1行开始显示m条

    五、数据控制语言(DCL)

    5.1  创建用户  CREATE  USER  user_name  @  'ip  address'  IDENTIFIED  BY  'password';   //该用户只能在这个ip上登陆,当然如果用%,则所有ip都可以连接

      创建用户后,该用户如何进入数据库:Mysql  -user_name  h ip address  -p;    //ip如果是本地的,ip可用local host代替

    5.2  给用户授权  GRANT  privileges  ON  database_name.table_name  TO  'user_name' @ 'host_name' ;   

    //这里的privileges包括select,insert,update,delect等多种权限,如果想授予全部权限,可用all,如果想要给所有数据库的所有表授予对应权限,可用*.*代替database_name.table_name

    5.3  刷新权限  FLUSH  PRIVILEGES;    //只要执行一次DCL,都应刷新一下权限

    5.3  撤销用户权限  REVOKE  privileges  ON database_name.table_name  FROM  'user__name' @ 'host_name';

    5.4  查看用户  SELECT  USER, HOST  FROM  MYSQL.USER;

    5.5  查看用户权限  SHOW  GRANTS  FOR  'user_name' @ 'ip address';

     六、事务控制语言(DTL) 

    一个sql语句就是一个事务,事务可以保证一组sql语句要么都成功,要么都失败,系统默认自动提交

    事务有以下特性:

    原子性:一个事务中的所有语句,应该做到,要么全做,要么全部不做;

    一致性:让数据保持逻辑上”合理性",比如,一个商品出库时,既要让商品库中该商品数量减小,又让对应用户的购物车中的商品增加相应的数量

    隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样

    持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改,而不仅仅是内存中的变化

    SET  AUTOCOMMIT = 0;    //关闭自动提交事务

    START  TRANSACTION;    //开启事务

    COMMIT;    //提交DML操作

    ROLLBACK;   //取消DML操作,也叫回滚

  • 相关阅读:
    赫夫曼树编码
    根据先序和中序实现后序
    C++语言实现开心消消乐
    C语言风格实现的开心消消乐
    动态规划
    leetcode dp wordbreakII
    欧拉回路
    欧拉通路是否存在
    Python|多任务:线程、进程、协程--你想要的都在这里
    网络通信:socket、udp与tcp
  • 原文地址:https://www.cnblogs.com/main404/p/11192663.html
Copyright © 2011-2022 走看看