一篇基础语法相关的笔记

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

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

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

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

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

例子:

CREATE TABLE myTable1 ( mb2 INT, mb3 INT, PRIMARY KEY( mb2 , mb3) );
CREATE TABLE myTable2 (
mb1 INT PRIMARY KEY, mb2 INT ,mb3 INT,
CONSTRAINT mb23 FOREIGN KEY( mb2,mb3 )
REFERENCES myTable1( mb2,mb3 ) ON DELETE CASCADE ON UPDATE CASCADE
);

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

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

DELIMITER &&
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件 ON 表名 FOR EACH ROW
BEGIN
执行语句;
执行语句;
...
END&&
DELIMITER ;

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

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

基本查询语句

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

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

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

例子:
DELIMITER &&
CREATE PROCEDURE numFromEmployee ( IN empID INT , OUT countNum INT)//proc_parameter 部分
READS SQL DATA//characteristic 部分
BEGIN
SELECT COUNT(*) INTO countNum FROM tableEmployee
WHERE employeeID=empID;
END&&
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. HDU 6187 Destroy Walls

    Destroy Walls Long times ago, there are beautiful historic walls in the city. These walls divide the ...

  2. JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  3. 【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯

    本次实验利用UDP协议, 语言环境为 C/C++ 利用套接字Socket编程,实现Server/CLient 之间简单的通讯. 结果应为类似所示: 下面贴上代码(参考参考...) Server 部分: ...

  4. 转载:BIO | NIO | AIO

    http://my.oschina.net/bluesky0leon/blog/132361 也谈BIO | NIO | AIO (Java版)   转载自:zheng-lee博客 发布时间: 201 ...

  5. Java常用的排序算法三

    Merge Sort :归并排序:用递归的思想,分解成单个元素的排序,在归并 代码: import java.util.*; public class MergeSort { public stati ...

  6. Restful的优势

    1. 轻量,直接基于http,不在需要任何别的诸如消息协议.get/post/put/delete为CRUD操作2. 面向资源,一目了然,具有自解释性.3. 数据描述简单,一般以xml,json做数据 ...

  7. jenkins学习之centos6.9下安装

    以下为centos6.9下测试安装: docker下安装jenkins: 更新yum源: yum -y update 安装docker: yum -y install docker-io 启动dock ...

  8. oracle锁表问题解决

    select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l ...

  9. [LeetCode]Maximum Length of Repeated Subarray

    Maximum Length of Repeated Subarray: Given two integer arrays A and B, return the maximum length of ...

  10. mysql 中显示 table 的基本信息

    mysql> show table status like 'j_position' \G . row *************************** Name: j_position ...