文档章节

MySQL 入门基础知识整理

萧萧xxxx
 萧萧xxxx
发布于 2016/10/24 20:56
字数 3120
阅读 11
收藏 1

MySQL笔记整理

1. 数据库语言 SQL (Structured Query Language)。

    SQL 是用于访问和处理数据库的标准的计算机语言,指结构化查询语言。这类数据

库包括MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。

 

2. 基本语法 (如读取一个表的数据)。

    use novel; -- 命令用于选择数据库

    set names utf8; -- 命令用于设置使用的字符集

    SELECT *FROM about_book;  -- 读取数据表的信息

 

3. SELECT语句 用于从数据库中选取数据。结果被存储在一个结果 

   中,称为结果集。

   SELECT author_name,book_name FROM about_book;

SELECT DISTINCT author_name,book_name FROM about_book; 在表中,一个

列可能 会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值

DISTINCT 关键词用返 回唯一不同的值。

SELECT  author_name,book_name FROM about_book WHERE author_name = '嘉';WHERE 

子句用于提取那些满足指定标准的记录。

 

SELECT  author_name,book_name FROM about_book WHERE author_name = '萧萧' AND 

book_name ='神罗天征10';

SELECT  author_name,book_name FROM about_book WHERE author_name = '嘉嘉' OR

book_name ='神罗天征10';

SELECT  author_name,book_name FROM about_book WHERE author_name = '萧萧' AND 

(book_name ='神罗天征10' OR book_name ='神罗天征9');  AND & OR运算符用于基于一个以

上的条件对记录进行过滤。

SELECT  all_section,book_name FROM about_book WHERE author_name = '萧萧' ORDER

BY all_section,book_name  DESC; ORDER BY 关键字默认按照升序对记录进行排序。如果需要

按照降序对记录进行排序,您可以使用 DESC 关键字。

 

4. INSERT INTO 语句用于向表中插入新记录。

INSERT INTO about_book (author_name,book_name,all_section,update_section)VALUES('欣

欣','火影忍者',666,640); NSERT INTO 语句用于向表中插入新记录。

 

5. UPDATE 语句用于更新表中的记录。

   UPDATE about_book SET author_name = '静静' WHERE book_name = '神罗天征

    6'; 在更新记录时要格外小心!如果我们省略了 WHERE 子句,表格所有数据

    都会改变。

 

6. DELETE 语句用于删除表中的记录。

   DELETE FROM about_book WHERE book_name = '神罗天征9'; WHERE 子句规  

   定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记

   录都将被删除!

   DELETE FROM about_book在不删除表的情况下,删除表中所有的行。这意

   味着表结构、属性、索引将保持不变:

 

7. SELECT LIMIT 语句用于规定要返回的记录开始行数与总数目。

SELECT * from about_book WHERE author_name ='萧萧' LIMIT 2,5 ;如果只给定一个参数,  

它表示返回最大的记录行数目;如果给定两个参数,第一个参数指定第一个返回记录行

的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是

1)为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。

 

8.  SELECT LIKE 语句LIKE操作符用于在WHERE 子句中搜索列

    中的指定模式。

  SELECT * from about_book WHERE author_name LIKE '%萧%'; 其中%后表示前后

  可能包含其他文字

 

9. 通配符 通配符可用于替代字符串中的任何其他字符。

 

  SELECT * from about_book WHERE author_name LIKE '萧%';

  SELECT * from about_book WHERE author_name LIKE '萧_';

  SELECT * from about_book WHERE author_name REGEXP '^[萧]';MySQL 中使 

  用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

 

10. SELECT IN 操作符允许您在WHERE子句中规定多个值。

SELECT * from about_book WHERE author_name IN ('萧萧','嘉嘉');

 

11. SELECT BETWEEN  操作符用于选取介于两个值之间的数据范围

    内值。

    SELECT * from about_book WHERE all_section NOT BETWEEN 90 AND 100;

    SELECT * from about_book WHERE update_section BETWEEN 10 and 150 and all_section   

     NOT BETWEEN 90 AND 100;

     SELECT * from about_book WHERE (update_section BETWEEN 10 and 150) and NOT

     all_section in (13);

 

12. SQL 别名 通过使用 SQL,可以为表名称或列名称指定别名。基 

本上,创建别名是为了让列名称的可读性更强。

SELECT author_name AS an,book_name AS bn FROM about_book;

SELECT author_name AS an,CONCAT(book_name,'-',all_section,'-',update_section) AS alls

FROM about_book;

SELECT a.author_name,a.book_name FROM about_book AS a;

 

13. SQL JOIN 用于把来自两个或多个表的行结合起来,基于这些表之 

   间的共同字段。

INNER JOIN : 关键字在表中存在至少一个匹配时返回行。

SELECT about_book.about_book,about_book.book_name,xiao_book.lastlogintime

FROM about_book INNER JOIN xiao_book

ON about_book.about_book = xiao_book.userid;

 

LEFT JOIN :  从左表(about_book)返回所有的行,即使右表(xiao_book)中

没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT about_book.about_book,about_book.book_name,xiao_book.lastlogintime

FROM about_book LEFT JOIN xiao_book

ON about_book.about_book = xiao_book.userid;

 

RIGHT JOIN :  从右表(about_book)返回所有的行,即使左表(xiao_book)

中没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT about_book.about_book,about_book.book_name,xiao_book.lastlogintime

FROM about_book RIGHT JOIN xiao_book

ON about_book.about_book = xiao_book.userid ORDER BY book_name DESC;

 

FULL JOIN :  只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行 .

SELECT about_book.about_book,about_book.book_name,xiao_book.lastlogintime

FROM about_book FULL OUTER JOIN xiao_book

ON about_book.about_book = xiao_book.userid ORDER BY book_name DESC;

 

14. SQL UNION  操作符用于合并两个或多个 SELECT 语句的结果集。

SELECT book_name

FROM about_book

UNION

SELECT bookname

FROM xiao_book

UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,

每个 SELECT 语句中的列的顺序必须相同。

 

15. INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。

INSERT INTO beifen_book SELECT * FROM xiao_book ;

INSERT INTO beifen_book(bookname,authorname) SELECT bookname,authorname FROM

xiao_book ;

 

16.  CREATE DATABASE 语句 创建一个名为 "my_db" 的数据库:

CREATE DATABASE my_db;

17. CREATE TABLE 语句  用于创建数据库中的表。

     CREATE TABLE mytable

   (

   id INT PRIMARY KEY NOT NULL auto_increment,

   author_name VARCHAR(8) NOT NULL

   );

 其中自增字段起始值默认为1,每次递增1,可通过以下语句修改递增数:

   ALTER TABLE about_book AUTO_INCREMENT=100;

 

18. SQL 约束 用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

 

在创建表时设置主键

CREATE TABLE mytable2

(

id INT NOT NULL auto_increment PRIMARY KEY,

author_name VARCHAR(8) NOT NULL,

book_name VARCHAR(8) NOT NULL

);

在创建表时设置主键(在该例子中只有唯一的主键pkey,是有

author_name,book_name两个值组成)。

CREATE TABLE mytable3

(

id INT NOT NULL,

author_name VARCHAR(8) NOT NULL,

book_name VARCHAR(8) NOT NULL,

CONSTRAINT pkey PRIMARY key(author_name,book_name)

);

      在表已创建,ALTER TABLE语句设置主键

        ALTER TABLE mytable3 ADD PRIMARY KEY(author_name);

 

     在表已创建,ALTER TABLE语句撤销主键约束

        ALTER TABLE mytable3 DROP PRIMARY KEY(author_name);

 

       外键约束:一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY  

      KEY,FOREIGN KEY 约束用于预防破坏表之间连接的行为,也能防止非法数

      据插入外键列,因为它必须是它指向的那个表中的值之一,该例子中新建

      表为其设置外键使其userid关联 。

        xiao_book(userid)。

          CREATE TABLE forxiao_book(

           id INT NOT NULL auto_increment PRIMARY KEY,

           all_section INT(10) NOT NULL,

           date_section INT(10) NOT NULL,

           userid INT,

           FOREIGN KEY (userid) REFERENCES xiao_book(userid)

           );

       当表已创建,添加外键约束 (下面的例子先给表创建了userid列)。

           ALTER TABLE novel_book ADD COLUMN userid INT;

           ALTER TABLE novel_book ADD FOREIGN KEY (userid) REFERENCES 

           xiao_book(userid)

       撤销外键约束 (例子先创建了一个表,并给外键命名forkey且作用后面的

      撤销值)。

CREATE TABLE xiaoxiao

(

id INT NOT NULL PRIMARY KEY,

userid int,

CONSTRAINT forkey

FOREIGN KEY(userid)

REFERENCES xiao_book(userid)

);

ALTER TABLE xiaoxiao

DROP FOREIGN KEY forkey;

 

       CHECK约束(暂不支持)

ALTER TABLE novel_book

ADD CONSTRAINT chekey CHECK(novelid > 0);

       撤销CHECK约束(暂不支持)

            ALTER TABLE novel_book

            DROP CHECK chekey;

 

      DEFALUT 约束

           CREATE TABLE defaluttb(

 id INT NOT NULL PRIMARY KEY,

 author VARCHAR(10) DEFAULT '萧萧'

 );

      当表已创建,增加DEFALUT约束

            ALTER TABLE mytable3

           ALTER book_name SET DEFAULT '嘉嘉';

 

 撤销DEFALUT约束

ALTER TABLE mytable3

ALTER book_name DROP DEFAULT;

 

19. CREATE INDEX 语句 用于在表中创建索引,在不读取整个表的情况下,使数据库程序可以更快的查找数据。

注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

   创建索引

    CREATE INDEX xiao_index

     on mytable2(book_name);

   撤销索引

ALTER TABLE mytable2

DROP INDEX xiao_index;

 

20. DROP 语句 可以轻松地删除索引、表和数据库。

删除一个表

DROP TABLE mytable3;

删除一个数据库

DROP DATABASE my_db;

删除一个表的数据

TRUNCATE TABLE mytable2;

 

21. ALTER 语句 用于在已有的表中添加、删除或修改列。

      修改某一列数据类型

       ALTER TABLE mytable2

        MODIFY COLUMN book_name VARCHAR(100);

      删除某一列

        ALTER TABLE mytable2

        DROP COLUMN book_name;

 

22. 可视化视图 视图是基于 SQL 语句的结果集的可视化的表。

     详解:视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库

     中的真实的表中的字段,您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也

可以呈现数据,就像这些数据来自于某个单一的表一样。

创建视图

CREATE VIEW view_xiaoba AS

SELECT bookname,authorname

FROM xiao_book;

     查询视图

       SELECT * FROM view_xiaoba;

     更新视图

       CREATE OR REPLACE VIEW view_xiaoba AS

SELECT bookname,authorname

FROM xiao_book;

     撤销视图

       DROP VIEW view_xiaoba;

 

DATE 函数

注释:当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式  

相匹配,只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情

况就有点复杂了。

为表添加时间列及约束

ALTER TABLE xiao_book

ADD uptime DATE;

     依据时间查询表数据

       SELECT * from xiao_book WHERE uptime = '2012-02-02';

        时间为2012-02-02 08:20 的列没有显示出来,这是由于该查询的日期不含有时间部分。

          提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!

 

NULL 函数

如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记  

录。这意味着该字段将以 NULL 值保存。

无法比较 NULL 和 0;它们是不等价的。

无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。

我们必须使用 IS NULL 和 IS NOT NULL 操作符。

SELECT * from xiao_book WHERE uptime IS NULL;

SELECT bookname,authorname*(novelid+IFNULL(uptime,1))

from xiao_book;

 

AVG() 函数 函数返回数值列的平均值。

     SELECT AVG(novelid) FROM xiao_book;

 

COUNT() 函数 函数返回匹配指定条件的行数。

    COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

       SELECT COUNT(uptime) FROM xiao_book;

     表中总记录数:

        SELECT COUNT(*) FROM xiao_book;

      表中不同 uptime 的记录数:

         SELECT COUNT(DISTINCT uptime) FROM xiao_book;

 

MAX() 函数 函数返回指定列的最大值。

SELECT max(userid) FROM xiao_book;

 

MIN() 函数 函数返回指定列的最小值。

SELECT min(userid) FROM xiao_book;

 

SUM() 函数 函数返回数值列的总数(和)。

SELECT sum(userid) FROM xiao_book;

GROUP BY 语句 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

   统计相同的uptime列,把其相同时间的novelid加一起组合成一个新表供

    查询

   SELECT uptime,SUM(novelid) AS nums FROM xiao_book GROUP BY(uptime);

 

   

 

通过聚合函数统计每个不同的author_name总数,进行分组查询

SELECT about_book.author_name, SUM(xiao_book.novelid) AS cn

FROM about_book

LEFT JOIN

xiao_book

ON xiao_book.userid = about_book.about_book

GROUP BY about_book.author_name;

 

HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。

SELECT about_book.author_name, SUM(xiao_book.novelid) AS cn

FROM about_book

LEFT JOIN

xiao_book

ON xiao_book.userid = about_book.about_book

GROUP BY about_book.author_name

HAVING SUM(xiao_book.novelid>10);

 

UCASE() 函数  函数把字段的值转换为大写。

    SELECT UCASE(author_name) AS an ,book_name

     FROM about_book;

LCASE() 函数  函数把字段的值转换为小写。

    SELECT LCASE(author_name) AS an ,book_name

     FROM about_book;

 

MID() 函数  函数用于从文本字段中提取字符。

注释:SELECT MID(column_name,start[,length]) FROM table_name;

SELECT MID(book_name,2,2) AS an

FROM about_book;

 

LEN() 函数 函数返回文本字段中值的长度。

SELECT LENGTH(update_section) AS BOOKLENGTH

FROM about_book;

ROUND() 函数 函数用于把数值字段舍入为指定的小数位数。

   注释:SELECT ROUND(column_name,decimals) FROM table_name;

      SELECT ROUND(1.33);  --  输出1

     SELECT ROUND(1.36,1);  --  输出1.4

 

 NOW() 函数  函数返回当前系统的日期和时间。

 SELECT about_book,author_name,book_name,NOW() as nowtime

 FROM about_book;

 

FORMAT() 函数 函数用于对字段的显示进行格式化。

SELECT about_book,author_name,book_name,DATE_FORMAT(NOW(),'%y-%m-%d') as  

Nowtime FROM about_book;  --  输出时间格式为 06-10-25

 

SQL 通用数据类型

 

 

 

 

 

 

 

 

 

 

 

 

 

     

        

 

 

 

 

 

 

 

 

 

 

   

 

     

 

 

 

 

 

 

© 著作权归作者所有

萧萧xxxx
粉丝 0
博文 4
码字总数 23919
作品 0
常德
程序员
私信 提问
MySQL入门教程系列-1.5 如何学习MySQL

在这里持续更新 MySQL入门教程系列-1.5 如何学习MySQL 如何学习 MySQL 这是一个伪命题,每个人都有适合自己的一套学习方法,各

同一种调调
2016/09/28
38
0
linux从小白到linux资深专家之路

linux从小白到linux资深专家之路 为什么学Linux,理由如下: Linux是免费; Linux是开源的,你可以修改源代码; Linux是开放的,有广泛的社区; 学习Linux可以更好的掌握计算机技术; Linux是...

lxm111111
2016/07/16
0
0
《Linux云计算从入门到精通》系列实战笔记全放送

为了方便Linux云计算爱好者的学习查看,马哥Linx云计算团队特别整理了《Linux云计算从入门到精通》年度重磅大放送,囊括了整个学习过程的学习精华,内容全部由马哥Linux云计算学员撰写,欢迎...

898009427
2017/11/21
0
0
做程序员的日子

Android 我还可以相信你多少系列文章三之通知栏 说起通知栏,是一块各个应用的必争之地,不显示通知栏就意味着没有存在感,通知栏显示得不靠前还得想方设法提前。加上 OnGoing 的通知还能提升...

掘金官方
2017/12/11
0
0
关于前端 - 收藏集 - 掘金

十分钟-Nginx入门到上线 - 掘金 前言 新书Java并发编程系统与模型已上线,欢迎拜读。   由于微信小程序要使用Https,但是又不能修改已有线上的配置。所以最简单的方法就是使用nginx转发,在...

掘金官方
2017/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
37分钟前
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
39分钟前
7
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
42分钟前
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
47分钟前
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部