转载自  https://www.jianshu.com/p/294502893128

挺基础的mysql的书籍,基本上都是如何操作的语法。

第1章 了解SQL

主键(primary key):能够唯一区分表中每一行。

没有主键,删除更新特定行变的困难,因为没有安全的方法保证只涉及相关的行。虽然并不是必须,但是大多数都需要。

主键通常定义在表的一列上,但这并不是必需的,也可以一起使用 多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主 键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)

第2章 MySQL简介

DBMS可分为两类:一类为基于共享文件系统的DBMS(Office Access),另一类为基 于客户机—服务器的DBMS。

第3章 使用MySQL

# 使用指定的数据库
use database_name; # 显示所有的数据库
show databases; # 显示所有数据库中的所有表
show tables; # 显示指定表的所有列信息
show columns from table_name;
desc table_name;
describe table_name; # 显示指定的数据库或者数据表的创建SQL语句
SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;
# 显示mysql服务状态信息
show status;
# 显示授予用户的安全权限 
SHOW GRANTS; # 显示错误信息
SHOW ERRORS;
# 显示警告信息
SHOW WARNINGs;

第4章 检索数据

# 从指定表中查询所有的列的信息
SELECT prod_name FROM products; # 从指定表中查询指定列的信息
SELECT prod_name FROM products; # 从指定表中查询多个列的信息
SELECT prod_id, prod_name, prod_price FROM products; # 去重(会应用于所有的列, 而不是只有第一列) DISTINCT 参数会只留下不相同的行,查看多个列的话会不同的组合也会留下
SELECT DISTINCT vend_id, prod_price FROM products; # 限制查询返回的行数(LIMIT),
SELECT prod_name FROM products LIMIT ;
# 限制查询返回的行数(二个参数中第一个为起始的行数, 第二个参数为要显示的行数)
SELECT prod_name FROM products LIMIT , ;
# 从第0行开始取5行返回,OFFSET是mysql5中新添加的语法,为的是区分LIMIT后面两个数字。
SELECT prod_name FROM products LIMIT OFFSET ; # 全限定表名和列名
SELECT table_name.field FROM database_name.table_name;

返回数据的顺序可能是数据被添加到表中的顺序,也可能不是,总之没有排序的时候顺序没有什么意义。

SQL语句不区分大小写,但是SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。

Mysql中第一行为行0而不是行1,使用LIMIT进行限制的时候需要注意

第5章 排序检索数据

# 排序(默认正序)
SELECT prod_name FROM products ORDER BY prod_name;
# 正序(A-Z)
SELECT prod_name FROM products ORDER BY prod_name ASC;
# 逆序
SELECT prod_name FROM products ORDER BY prod_name DESC; # 多列排序,会按列的顺序排,先排价格,如果有价格相同的行,这些行再按姓名排
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
# 只对其前面的列名逆序,最后面的prod_name还按照升序
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
# 如果想在多个列进行降序排序,必须对每个列指定DESC关键字
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name DESC;
# 限制和排序结合,找出指定列的最大值和最小值(LIMIT要在ORDER BY子句之后) 
SELECT prod_price FROM products ORDER BY prod_price LIMIT ;
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT ;

如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺 序将会受到MySQL重用回收存储空间的影响。

子句(clause) SQL语句由子句构成,有些子句是必需的,而 有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句。

ORDER BY子句后面可以跟任意字段。

第6章 过滤数据

SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;

# WHERE 子句操作符 =, !=, <>, <, <=, >, >=, BETWEEN a AND b (包含a和b)
# 大小写不区分(字符串要用小括号括起来)
SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses'; # 检测指定列是否包含null值
SELECT prod_name FROM products WHERE prod_price IS NULL;
SELECT cust_id FROM customers WHERE cust_email IS NULL;

第19章 插入数据

# 在指定的表中插入一行数据(INSERT语句一般不会产生输出, 但会返回影响的行数)
# 这种方式不保险, 哪里列的顺序改变了就会出错
INSERT INTO Customers
VALUES
( NULL, 'Pep E.LaPew', '100 Main Street', 'Los Angeles', 'CA', '', 'USA', 'NULL', 'NULL' ); # 指定列名插入, 即使以后列的顺序改变了也不会出错
INSERT INTO customers ( cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email )
VALUES
( 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '', 'USA', NULL, NULL); # 插入一行, 只插入指定的列值, 其它为默认值或者NULL
# 没有默认值或者不能为NULl时会报错,并且插入不成功
INSERT INTO customers (cust_name) VALUES ('Jack song'); # 降低INSERT语句的优先级
INSERT LOW_PRIORITY INTO customers ( cust_name )
VALUES
( 'Jone Li. Main' ); # 一次插入多行数据 方式一(用分号分隔)
INSERT INTO customers ( cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country )
VALUES
( 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '', 'USA' );
INSERT INTO customers ( cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country )
VALUES
( 'M. Martian', '42 Galaxy Way', 'New York', 'Ny', '', 'USA' ); # 一次插入多行数据 方式二(多行数用括号包裹,逗号分隔)
# 此技术可以提高数据库处理的性能,因为MySQL用单条 INSERT 语句处理多个插入比使用多条 INSERT语句快
INSERT INTO customers ( cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country )
VALUES
( 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '', 'USA' ),
( 'M. Martian', '42 Galaxy Way', 'New York', 'NY', '', 'USA' ); # INSERT和SELECT结合插入其它表检索出来的数据
INSERT INTO customers ( cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country ) SELECT
cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM
custnew;

第21章 创建和操纵表

# 使用SQL创建新表
CREATE TABLE customers1 (
cust_id INT NOT NULL AUTO_INCREMENT,
cust_name char() NOT NULL,
cust_address char() NULL,
cust_city char() NULL,
cust_state char() NULL,
cust_zip char() NULL,
cust_country char() NULL,
cust_contact char() NULL,
cust_email char() NULL,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB; # 不允许NULL值
CREATE TABLE orders1 (
order_num int NOT NULL AUTO_INCREMENT,
order_date datetime NOT NULL,
cust_id int NOT NULL,
PRIMARY KEY (order_num)
) ENGINE=InnoDB; # 多列主键
CREATE TABLE orderitems1 (
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char() NOT NULL,
quantity int NOT NULL,
item_price decimal(, ) NOT NULL,
PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB; # 使用函数获得最后自动生成的id
SELECT LAST_INSERT_ID(); # 创建表时给默认值
CREATE TABLE IF NOT EXISTS orderitems2 (
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char() NOT NULL,
quantity int NOT NULL DEFAULT ,
item_price decimal(, ) NOT NULL,
PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB; # 更新表结构(添加列)
ALTER TABLE vendors ADD vend_phone CHAR(); # 更新表结构(删除列)
ALTER TABLE vendors DROP COLUMN vend_phone; # 更新表(添加外键)
ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders (order_num); ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_products FOREIGN KEY (prod_id) REFERENCES products (prod_id); ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers (cust_id); ALTER TABLE products ADD CONSTRAINT fk_products_vendors FOREIGN KEY (vend_id) REFERENCES vendors (vend_id); ##复杂的表结构更改一般需要手动删除过程,它涉及以下步骤:
-- 用新的列布局创建一个新表;
-- 使用 INSERT SELECT 语句(关于这条语句的详细介绍,请参阅第19章)从旧表复制数据到新表。如果有必要,可使用转换函数和计算字段;
-- 检验包含所需数据的新表;
-- 重命名旧表(如果确定,可以删除它);
-- 用旧表原来的名字重命名新表;
-- 根据需要,重新创建触发器、存储过程、索引和外键。 # 删除表
DROP TABLE orderitems2 # 重命名表
RENAME TABLE customers1 TO customer3; # 同时重命名多个表
RENAME TABLE customer3 TO customers1, orderitems1 TO orderitems2;

持续更新中.......

<Mysql必知必会> ---- 笔记的更多相关文章

  1. HTML+CSS笔记 CSS笔记集合

    HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...

  2. CSS笔记--选择器

    CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...

  3. HTML+CSS笔记 CSS中级 一些小技巧

    水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...

  4. HTML+CSS笔记 CSS中级 颜色&长度值

    颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...

  5. HTML+CSS笔记 CSS中级 缩写入门

    盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...

  6. HTML+CSS笔记 CSS进阶再续

    CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...

  7. HTML+CSS笔记 CSS进阶续集

    元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...

  8. HTML+CSS笔记 CSS进阶

    文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...

  9. HTML+CSS笔记 CSS入门续集

    继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...

  10. HTML+CSS笔记 CSS入门

    简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...

随机推荐

  1. 常用web字体的使用指南

    而真正的挑战在于中文字体,由于中文字体组成的特殊性导致其体积过于庞大,除了操作系统内置的字体之外,我们很难在网站上应用其他的字体.在可选性很差的前提之下,如何正确的使用中文字体呢? 首先,以下的字体声 ...

  2. Activity、FragmentActivity和AppCompatActivity的区别

    Activity Activity是最基础的一个,是其它类的直接或间接父类. Activity中只能使用系统自带的host Fragment(API Level 11中加入),对应getFragmen ...

  3. 闲聊CSS之关于clearfix--清除浮动

    一,什么是.clearfix 你只要到Google或者Baidu随便一搜"css清除浮动",就会发现很多网站都讲到"盒子清除内部浮动时可以用到.clearfix" ...

  4. Linux下安装配置git

    参考博客: https://www.cnblogs.com/luhouxiang/p/5801853.html但执行git --version命令会出现 git version 1.8.3.1 不是最 ...

  5. hasLayout是什么

    haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分.在InternetExplorer中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元 ...

  6. css中background背景属性概述

    background:url(背景图片路径) no-repeat;/*不重复默认在左上方*/ background:url(背景图片路径) no-repeat center;/*不重复背景图片中间显示 ...

  7. Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u

    Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\ubuntu\debian等) 1.Oracle Linux(下载地址) (1)OracleLinux ...

  8. from和modelform的用法和介绍

    from和modelform的用法和介绍   一 form 1. form的作用 1. 生成HTML代码 2. 帮我们做数据有效性的校验 3. 保留上次输入内容,显示错误提示 2. form组件校验数 ...

  9. ATM系统和购物车系统 不需要文件支撑

    目录 ATM系统 购物车系统 ATM系统 #coding=utf8 #Version:python 3.6.4 #Tools:Python 2019.9.7 _data_ = '2019/9/7/01 ...

  10. PHPCMS网站迁移过程后,添加内容 报500错误解决方案

    问题出现原因:1.网站迁移过程中,上传下载文件时文件丢失  2.PHPCMS源码更新升级 解决方法 1.可以到官方下载最新版源码,替换过去.如果对源码有改动,需要先保存改动过的文件,替换过去之后,再替 ...