一篇基础语法相关的笔记

// 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京

建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/mysql/
我一开始练习都是使用 root 账户登录了

  1. mysql -u root -pPASSWORD
  2. // 注意 PASSWORD就是你的密码了,应该紧贴 -p之后,中间没有空格
  1. SHOW DATABASES; // 显示所有数据库
  2. USE DATABASES; // 指定使用某个数据库
  3. CREATE DATABASE databaseName; // 创建一个以databaseName为名的数据库
  4. DROP DATABASE databaseName; // 删除一个指定名数据库
  5. SHOW ENGINES; // 显示数据库引擎相关信息
  6. SHOW TABLES; // 显示数据库所含有的表
  7. SHOW CREATE TABLE tableName; // 显示表名为 tableName 的表的相关信息
  1. mysql修改密码
  2. update mysql.user set authentication_string=password('you_password') where User='root' and Host='localhost';
  3. 赋予远程连接自己这个数据的权限
  4. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'a_password' WITH GRANT OPTION;
  5. 最后别忘记刷新权限
  6. FLUSH PRIVILEGES;
  1. DESCRIBE tableName; // 查看指定表的结构 可以简化为
  2. DESC tableName; // 效果相同
    SELECT * FROM tableName;    // 显示表内所有数据
  3. CREATE TABLE tableName (字段名 数据类型[完整性约束条件],字段名 数据类型[完整性约束条件], ...);
                      // 建立表的操作
  4. DROP TABLE tableName; // 删除无其他关联的 简单表的 操作
  5. ALTER TABLE 旧表名 RENAME 新表名 // 表改名
  6. ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型
                      // 修改属性的名或数据类型
  7. ALTER TABLE 表名 MODIFY 属性名1 新数据类型 [FIRST | AFTER 属性名2]
  8.                   // 修改字段的数据类型或排列位置
  1. ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束] [FIRST | AFTER 属性名2]; // 增加字段
  2. ALTER TABLE 表名 DROP 属性名; // 删除字段
  3. ALTER TABLE 表名 DROP FOREIGN KEY 外键别名; // 删除表的外键约束
  4. ALTER TABLE 表名 ENGINE = 存储引擎名; // 更改存储引擎
  5. INSERT INTO 表名 VALUES (值1,值2,值...),
  6. (值m,值m+1,...),
  7. (值k,值k+1,...); //插入单位 INSERT语句中不指定具体的字段名
  8. INSERT INTO 表名 VALUES (属性1,属性2,...) VALUES (值1,值2,...); // 插入单位 指定具体字段名 较为灵活
  9. INSERT INTO 表名1 (属性列表1SELECT 属性列表2 FROM 表名2 WHERE 条件表达式; // 将表2中的查询结果插入表1中
  10. UPDATE 表名 SET 属性名1 = 取值1,
  11. 属性名2 = 取值2,
  12. 属性名n = 取值n WHERE 条件表达式;     //UPDATE 修改
  13. DELETE FROM 表名 [ WHERE 条件表达式 ];    //若无 WHERE 删除表中所有数据
  14. 若要设立单个字段为 主键 primary key 字段名 数据类型 PRIMARY KEY
  15. 若是要设置多个字段为主键 在设置完字段名之后在 , 后面加一句 PRIMARY KEY(字段1,字段2,字段3,...) 即可4
  16. 对于完整性约束条件 类似还有 UNIQUE 表的唯一性约束 NOT NULL 非空约束
  17. AUTO_INCREMENT 表的字段自增

外键的作用:  建立该表与其父表的关联关系
若有字段 mbA 是表A的属性,且依赖于表 B 的主键。则称表 B 为父表 表A为子表  mbA 是表A 的外键。  
// 要特别留意 子表的外键必须为 父表的主键,类型必须一致, 外键可以为空值
// 比如    ID 是  student表的primary key ,关于学生这个对象,有一些相关的资料 比如 姓名 健康状况等 存储在 表2,那么当删除某一个指定ID的学生时
// 表2中的关于这个ID的学生的资料也应该同步删除/更新
创建表时可以加入这样一个声明:

  1. CONSTRAINT 外键别名 FOREIGN KEY(字段名1,字段名2,...)
  2. REFERENCES 表名(字段名1,字段名2,...) ON DELETE CASCADE ON UPDATE CASCADE

例子:

  1. CREATE TABLE myTable1 ( mb2 INT, mb3 INT, PRIMARY KEY( mb2 , mb3) );
  2. CREATE TABLE myTable2 (
  3. mb1 INT PRIMARY KEY, mb2 INT ,mb3 INT,
  4. CONSTRAINT mb23 FOREIGN KEY mb2,mb3 )
  5. REFERENCES myTable1 mb2,mb3 ON DELETE CASCADE ON UPDATE CASCADE
  6. );

// 则mb2,mb3为 myTable2 的外键 且 mb23为这两个外键的别名。

触发器
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件 ON 表名 FOR EACH ROW 执行语句;
若多语句时

  1. DELIMITER &&
  2. CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件 ON 表名 FOR EACH ROW
  3. BEGIN
  4. 执行语句;
  5. 执行语句;
  6. ...
  7. END&&
  8. DELIMITER ;

// 一般情况下 MySQL 默认是以 ; 作为结束执行语句 在创建触发器过程中要用到 ; 为了解决这个问题
可以用 DELIMITER 语句如 DELIMITER && 将结束符变成&& 当触发器创建完成后 可以再用命令 DELIMITER ;
来恢复结束符号为 ;

  1. 查看触发器 SHOW TRIGGERS;
  2. 删除触发器 DROP TRIGGER 触发器名;

基本查询语句

  1. SELECT 属性列表 FROM 表名和视图列表
  2. [WHERE 条件表达式1]
  3. [GROUP BY 属性名1 [ HAVING 条件表达式2] ]
  4. [ORDER BY 属性名2 [ASC | DESC] ];
  5. SELECT * FROM 表名; // 查询表的所有字段

/*-------------------------------------
查询条件各种符号:
比较: = < <= > >= != !> !< <>
指定范围 BETWEEN AND   NOT BETWEEN AND
指定集合 IN   NOT IN
匹配字符 LIKE NOT LIKE
是否为空值 IS NULL    IS NOT NULL
多个查询条件 AND   OR
......................................*/

  1. SELECT DISTINCT 属性名; //消除重复记录
  2. SELECT * FROM newTableName WHERE语句 ; //将表名以 newTableName 展示出来(实际不改变) 方便阅读
  3. 属性名 REGEXP '匹配方式'; //使用 REGEXP 关键字来匹配查询正则表达式
  1. IF expr ,v1, v2 ) //函数 若expr成立返回v1 否则返回v2
  2. SELECT 属性 , IF(属性相关的expr, v1, v2 ); //节选 注意属性之后要有逗号
  3. CASE WHEN expr1 THEN v1 [ WHEN expr2 THEN v2 ...] [ELSE vn] END;
  1. //加密函数 留坑
  2. FORMAT x ,n); //格式化函数 将x保留到小数点后n位
  3. BENCHMARK count,expr); //函数将表达式 expr 重复执行count此
  4. CONVERT s USING cs); //将字符串s的字符集变成 cs
  5.  
  6. CREATE PROCEDURE sp_name ( [proc_parameter [...] ] ) [characteristic ...] routine_body;//创建存储过程
  7. //sp_name 存储过程名称
  8. //proc_parameter 存储过程参数列表 [ IN | OUT | INOUT ] param_name type
  9. //characteristic 存储过程特性
  10. LANGUAGE SQL //routine_body 部分由 SQL语句组成
  11. { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }//指明子程序使用SQL语句的限制
  12. SQL SECURITY { DEFINER | INVOKER }//指明谁由权限来执行 前者仅定义设计者自己可执行 后者则调用者可 默认前者
  13. //routine_body 部分由 SQL语句组成 SQL 代码内容 可以用 BEGIN..END 来标志SQL 代码的开始和结束

  14. 例子:
  15. DELIMITER &&
  16. CREATE PROCEDURE numFromEmployee ( IN empID INT , OUT countNum INT)//proc_parameter 部分
  17. READS SQL DATA//characteristic 部分
  18. BEGIN
  19. SELECT COUNT(*) INTO countNum FROM tableEmployee
  20. WHERE employeeID=empID;
  21. END&&
  22. ELIMITER ;

MySQL语法相关其一的更多相关文章

  1. 学习mysql语法--基础篇(一)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分:    一.创建用户,创建数据库,给 ...

  2. MySQL库相关操作

    ========MySQL库相关操作====== 一.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信 ...

  3. 对MYSQL注入相关内容及部分Trick的归类小结

    前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇 ...

  4. RDS MySQL 全文检索相关问题的处理

    RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 ...

  5. Mysql优化相关总结

    Mysql优化相关总结 2016-05-31 数据库集中营 优化顺序: 选择适当的引擎和表结构和数据类型 建立索引,优化sql. 增加缓存,redis.memcache. 主从.主主,读写分离. my ...

  6. MYSQL 语法大全自己总结的

    mysql语法大全 --------数据链接---------------------数据库服务启动net start mysql --关闭服务net stop mysql --登录 -u,-p后面不 ...

  7. 学习mysql语法--基础篇(二)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成]   DML ...

  8. mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  9. MySQL 权限相关

    # ============================= mysql 权限相关 =====================================================gran ...

随机推荐

  1. 关于docker的理解随记

    1.容器其实不是什么新技术,说白了就是namespace对资源进行隔离,再加UFS实现分层镜像,以及cgroup实现资源限制.这些技术,都是linux中已有的技术,而且有些技术很早之前就有了. 2.上 ...

  2. 企业如何选择最佳的SSL

    如果你的企业有意采购SSL,那么本文可以给一个很好的方向.在本文中,我们将先简要介绍SSL定义及其工作原理,并探讨目前各种可用的SSL证书类型以及企业如何选择最佳的SSL. SSL定义 SSL及传输层 ...

  3. [转]Web API OData V4 Keys, Composite Keys and Functions Part 11

    本文转自:https://damienbod.com/2014/09/12/web-api-odata-v4-keys-composite-keys-and-functions-part-11/ We ...

  4. MySQL---6、可视化工具工具之SQLYog安装配置

    一.安装文件包下载 https://pan.baidu.com/share/link?shareid=4149265923&uk=724365661&fid=2642450782 二. ...

  5. SQLServer 触发器入门

    阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器 概念:   触发器(trigger)是SQL server 提供给程序员和数据分析 ...

  6. 二、hdfs单节点安装

    一.准备环境 在配置hdfs之前,我们需要先安装好hadoop的配置,本文主要讲述hdfs单节点的安装配置. hadoop的单节点安装配置请参考:https://www.cnblogs.com/lay ...

  7. Z_Tree的使用案例(出差地点的演示)

    1.准备工作(下载zTree并添加到项目JS中) 2.HTML代码 <link rel="stylesheet" href="./js/zTree_v3-3.5.2 ...

  8. LeetCode 第二天后续(两数相加 python3)

    # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # sel ...

  9. spring中AOP的AspectJ的Execution表达式

    AspectJ的Execution表达式: 使用springAOP定义pointcut里面的execution表达式: execution()函数是常用的切点函数 "execution(* ...

  10. LOJ572: Misaka Network 与求和

    传送门 假设 \(f^k(i)\) 就是 \(f(i)\) 莫比乌斯反演得到 \[ans=\sum_{i=1}^{N}\lfloor\frac{N}{i}\rfloor^2\sum_{d|i}f(d) ...