1、什么是MySQL

数据库:

  • 数据库(Database,简称 DB)是用来组织、存储和管理数据的仓库。数据库支持增删改查,可以支持存储数字,文字、图像、声音等等。
  • 关系型数据库管理系统(Relational Database Management System,简称RDBMS)将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。
  • MySQL 就是关系型数据库之一。数据库由数据表构成,数据表有行和列,每行是一组相关的数据,每列是相同类型的数据。冗余指存储两倍的数据提高安全型。
  • 主键:每张表仅有一个主键,可以是某列或多列的组合。 主键值必须不为空且不重复,能够代表唯一的一行。
    外键:外键用于关联两个表。
    复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    索引:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,类似于书籍的目录

MySQL数据库:

  • MySQL 是开源的,使用标准的 SQL 数据语言形式。可以运行于多个系统上,并且支持多种语言。
  • MySQL与SQL Server的区别:目前使用最流行的两种后台数据库即为MySQL and SQL Server。 MySQL短小精悍,容易上手,操作简单,免费供用的。SQL Server价格贵,使用起来比MySQL要难一些,大数据跑的比MySQL快。
  • MySQL 与 SQL 的关系:SQL 是数据库查询语言,用于操作数据库,被作为关系型数据库的标准语言。MySQL 则是一种关系型数据库管理系统,采用的是 SQL 标准语言形式。

MySQL的安装和配置

  • window下直接下载并运行 setup.exe 一路YES即可, 之后可以在cmd命令中执行c:/mysql/bin中的mysql语句 (如果添加了环境变量的话)。
  • 启动服务:★★★
    启动:net start mysql81
    关闭:net stop mysql81
    断开:mysql -uroot -proot
    连接:mysql -uroot -p
  • 基本显示命令(所有命令都需要以;结束):★★★
    列出所有数据库:SHOW DATABASES;
    使用某个数据库:USE 数据库名;
    显示指定数据库的所有表 SHOW TABLES;
    显示数据表的属性(属性类型等等):SHOW COLUMNS FROM 数据表;
    显示数据表的详细索引信息(具体内容):SHOW INDEX FROM 数据表;
  • mysql可以使用navicat进行图形化的管理
    打开后左上角有一个连接,填入数据库的用户名(一般是root)和密码(自己记住)就可以添加了,添加后右键打开连接即可连入

2、SQL语法基础

注意事项:

  • 数据库名、表名对大小写不敏感,大写字母会自动转换为小写,所以使用 “_” 进行拼接,不要使用驼峰命名。
  • 语句中的关键字推荐全大写,避免关键字与自定义的数据库名表名字段名等重复。

创建数据库和数据表:★★★

  • 创建数据库:CREATE DATABASE 数据库名;
    删除数据库:DROP DATABASE 数据库名;
  • 创建数据表:
CREATE TABLE IF NOT EXISTS  table_name (column_name1 column_type1,... ...column_nameN column_typeN
);
---------------------------------------------
CREATE TABLE Student(Sno CHAR(9) NOT NULL, Sname CHAR(20) NOT NULL, Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno)
);
---------------------------------------------
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
UNSIGNED 用于设置数据的值不重复。
VARCHAR(100) 设置字段类型为 VARCHAR,并且字节长度不能超过100。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,DEFAULT CHARSET 设置编码。
IF NOT EXISTS  表不存在则创建
  • 数据库的表操作
    查询数据库中存在的所有表:SHOW TABLES;
    查询数据库中某张表的设计信息:SHOW COLUMNS FROM table_name;
    删除数据表:DROP TABLE table_name;
  • 数据库的子段操作
    添加子段:ALTER TABLE table_name ADD field_name field_type;
    修改原字段名称及类型:ALTER TABLE table_name CHANGE old_field_name new_field_name new_field_type;
    删除字段:ALTER TABLE table_name DROP field_name;

MySQL数据类型:

  • 分为三类:数值、日期/时间、字符串类型
  • 数值
    严格数值数据类型:INTEGER,SMALLINT,DECIMAL,NUMERIC
    近似数值数据类型:FLOAT,REAL,DOUBLE ,PRECISION
    INT是INTEGER的同义词,DEC是DECIMAL的同义词。MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。
  • 日期/时间
    表示时间值的日期和时间类型为DATETIME,DATE,TIMESTAMP,TIME和YEAR。
    每个时间类型有一个有效值范围和一个“零”值,当指定不合法的、MySQL不能表示的值时将使用“零”值
  • 字符串
    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
    CHAR 和 VARCHAR 类型类似:但它们保存和检索的方式不同。
    BINARY 和 VARBINARY:类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。
    有 4 种 BLOB 类型:BLOB 是一个二进制大对象,可以容纳可变数量的数据。
    有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同

数据内容的增删改查(单表查询):★★★

  • 查询 & 条件查询(SELECT * FROM table_name WHERE xxx)
    查询语句中你可以使用若干个表,表之间使用逗号分割。:SELECT field1, …, fieldN FROM table_name1, …, table_nameN;
    查询语句中你可以查询指定的若干个字段(field),也可使用星号(*)查询出所有字段。:SELECT * FROM table_name1, …, table_nameN;
    当想限制查询条件时,可以使用 WHERE 子句指定任何条件(可以使用 AND 或者 OR 指定一个或多个条件):SELECT field1, …, fieldN FROM table_name1, …, table_nameN WHERE condition1 [AND | OR] condition2 …

  • 简单操作符:= , < , > , <= , >= , !=, <>, 就是字面意思(等号是=不是==哦)。

  • 插入数据:分别给出表名称,子段名称和对应子段的值。
    INSERT INTO table_name ( field1, field2,…fieldN ) VALUES ( value1, value2,…valueN );

  • 更新数据:指定表名称,需要修改的子段名称和对应的值,后面加WHERE指定需要修改的行有哪些。
    UPDATE table_name SET field1 = new_val1, …, fieldN = new_valN [WHERE condition];

  • 删除数据:
    DELETE FROM table_name [WHERE condition];
    若删除数据时没有指定 WHERE 子句, table_name 表中的所有记录都将被删除。

  • 模糊查找LINK:
    LIKE 子句中使用百分号 % 字符来表示任意字符,可以使用 LIKE 操作符代替等号 =。
    SELECT field1, field2, …fieldN FROM table_name
    WHERE field1 LIKE “somevalue” [AND | OR] filed2 = “somevalue”;

  • 合并查找UNION :
    UNION 操作符用于合并两个以上的 SELECT 语句的结果、组合到一个结果集合中。
    SELECT field(s) FROM table [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT field(s) FROM table [WHERE conditions];

    ALL:返回所有结果集,包含重复数据
    DISTINCT:默认值,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据
    UNION 内部每个 SELECT 语句必须拥有相同的列,即语法中的 s 必须相等,否则会报错;
    每个 SELECT 语句的列最好是相同的字段名、数据类型,否则默认会合并成第一个 SELECT 语句的字段名。

  • 排序查询的数据: ORDER BY
    对 SELECT 查询的数据进行排序时
    SELECT field1, ..., fieldN FROM tableName
    ORDER BY field1 [ASC | DESC] [, ..., fieldN [ASC | DESC]];
    SELECT * FROM w3cschool_table ORDER BY age ASC, id DESC;
    可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下会使用 ASC 即升序排列。

  • 多表查询!:JOIN
    可以在 SELECT、UPDATE 和 DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。
    JOIN 按照功能大致分为如下三类:

    • INNER JOIN:内链接,或称为等值连接,用于获取两个表中字段匹配关系的记录;(对于 INNER JOIN,你可以省略 INNER 而直接使用 JOIN。)
    • LEFT JOIN:左链接,用于获取左表的所有记录,即使右表没有对应匹配的记录;
    • RIGHT JOIN:右链接,与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    SELECT a.id, a.title, b.content FROM w3cschool_title AS a INNER JOIN w3cschool_content AS b ON a.id = b,tid;

3、SQL语法补充

子查询:

  • 什么是MySQL子查询:
    子查询指的是 在一个完整的查询语句之中,嵌套若干个不同功能的小查询, 从而一起完成复杂查询的一种编写形式。
  • 子查询的特点:
    子查询必须用括号括起来。
    在 SELECT 子句中只能有一个列,除非在主查询中有多列。
    ORDER BY 不能用在子查询中。可以在子查询中使用 GROUP BY,功能与 ORDER BY 相同。
    子查询返回多于一行,只能与多值运算符一起使用,如 IN 运算符。
  • 如何使用IN子查询:
    结合关键字 IN 所使用的子查询主要用于判断一个给定值是否存在于子查询的结果集中。其语法格式为:<表达式> [NOT] IN <子查询>
    查询出 w3cschool_title 表的 id 与 w3cschool_content 表的 tid 相等的数据:
    SELECT * FROM w3cschool_title WHERE id IN (SELECT tid FROM w3cschool_content );

MySQL 事务:

  • 什么是MySQL事物:
    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。
  • MySQL事物的特点:
    在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
    事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
    事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。
  • 如何使用事务:
    1、在命令行模式下,所有指定都是自动提交一次性执行的,所以可以用 SET 来改变 MySQL 的自动提交模式。
    SET AUTOCOMMIT=0 禁止自动提交
    SET AUTOCOMMIT=1 开启自动提交
    2、也可以用事务语句自己的语法(用 BEGIN, ROLLBACK, COMMIT来实现)
    BEGIN 开始一个事务
    ROLLBACK 事务回滚
    COMMIT 事务确认

MySQL 索引:

  • 什么是MySQL 索引
    建立索引对 MySQL 的高效运行是很重要的,它可以大大提高 MySQL 的检索速度。索引就好比汉语字典的目录页,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
  • MySQL 索引的特点:
    MySQL 索引分为单列索引和组合索引
    单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;
    组合索引,即一个索引包含多个列。
    实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
  • 如何使用MySQL索引:
    创建索引:CREATE INDEX indexName (indexName length) ON table_name;
    添加索引(修改表结构):ALTER TABLE tableName ADD INDEX indexName(columnName);
    删除索引:DROP INDEX [indexName] ON tableName;
    显示索引信息:SHOW INDEX FROM tableName;

防止表中出现重复数据:

  • 什么是重复数据?
    有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
  • 如何禁止重复数据?
    在 MySQL 数据表中将指定的字段设置为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性
    表中无索引及主键,所以该表允许出现多条重复记录。如果你希望表中字段的数据不能重复,可以设置双主键模式来保证数据的唯一性; 如果你设置了双主键,那么主键的默认值不能为 NULL,此时需要设置为 NOT NULL。
  • 如何统计重复数据?
    一般情况下,查询重复的值,请执行以下操作:
    确定哪一列包含的值可能会重复。
    在列选择列表使用 COUNT(*) 列出那些列。
    在 GROUP BY 子句中列出列。
    HAVING 子句设置重复数大于1。

    统计 person_tbl 表中 first_name 和 last_name 的重复记录数
    SELECT COUNT(*) AS repetitions, last_name, first_name FROM person_tbl
    GROUP BY last_name, first_name
    HAVING repetitions > 1;
  • 如何过滤 / 删除 重复数据?
    1、如果你需要读取不重复的数据,可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据:SELECT DISTINCT field(s) FROM person_tbl;
    2、也可以使用 GROUP BY 来读取数据表中不重复的数据:SELECT field(s) FROM tableName GROUP BY (fiedl(s));
    3、如果你想删除数据表中的重复数据,可以使用以下的 SQL 语句:
    CREATE TABLE tmp SELECT field(s) FROM tableName GROUP BY (field(s));
    DROP TABLE tableName;
    ALTER TABLE tmp RENAME TO tableName;

    4、也可以通过在数据表中添加 INDEX(索引) 或 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录
    ALTER IGNORE TABLE tableName ADD PRIMARY KEY (field(s));

MySQL 及 SQL 注入:

  • 什么是SQL注入:
    如果你通过网页获取用户输入的数据并将其插入一个 MySQL 数据库,那么就有可能发生 SQL 注入的安全问题。它通过将任意的 SQL 代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。
  • 如何防止SQL注入:
    不使用动态的 SQL:避免将用户提供的输入直接放入SQL语句中,最好使用准备好的语句和参数化查询。
    限制数据库权限和特权:将数据库用户的功能设置为最低要求
    。。。

MySQL 的导入和导出:

  • 导出表数据:
    1、将数据表 w3cschool_table 的数据导出到 /data_table/w3cschool.txt 文件中
    SELECT * FROM w3cschool_table INTO OUTFILE ‘/data_table/w3cschool.txt’;
    2、通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式
    SELECT * FROM passwd INTO OUTFILE ‘/data_table/w3cschool.txt’
    FIELDS TERMINATED BY ‘,’
    ENCLOSED BY ‘"’
    LINES TERMINATED BY ‘\r\n’;
  • 导入数据库:
    1、如果你需要将备份的数据库导入到 MySQL 服务器中,可以使用以下命令。
    $ mysql -u root -p database_name < w3cschool.txt
    2、或者使用source 命令导入
    mysql> CREATE DATABASE w3cschool; # 创建数据库
    mysql> use w3cschool; # 使用已创建的数据库
    mysql> SET NAMES utf8; # 设置编码
    mysql> source /home/w3cschool.sql # 导入备份数据库

MySQL常用函数:★★★

  • 1、数学函数
    π:PI()
    整除:n DIV m
    余数:MOD(x,y)
    平方根:SQRT(x)
    次方:POW(x,y)、POWER(x,y)、EXP(x)
    对数指数:LN(x)、LOG(x)、LOG2(x)、LOG10(x)
    格式化数值:ABS(x) 、FLOOR(x) 、CEIL(x) 、ROUND(x) 、x保留y位 TRUNCATE(x,y) 、SIGN(x) 、RAND()
    高级运算:SUM(expr)、AVG(expr) 、COUNT(expr) 、MIN(expr)、MAX(expr) 、LEAST(expr1, …, exprN) 、GREATEST(expr1, …, exprN) 最小值和最大值
    三角函数相关:角度转弧度RADIANS(x),弧度转角度DEGREES(x) ,SIN(x) ,COS(x),TAN(x),COT(x),ASIN(x),ACOS(x),ATAN(x)

  • 2、字符串函数
    长度字符数和截取:CHAR_LENGTH(s) 、CHARACTER_LENGTH(s) 、LEFT(s, n) 、RIGHT(s, n) 、ASCII(s) 、
    大小写转换: LCASE(s) 、LOWER(s) 、UCASE(s) 、UPPER(s)
    去掉空格:LTRIM(s) 、RTRIM(s) 、TRIM(s) 、SPACE(n)
    查找:LOCATE(s1, s) 、POSITION(s1 IN s) 、FIELD(s, s1, …, sN) 、FIND_IN_SET(s1, s2)
    字符串拼接:CONCAT(s1, …, sN)、CONCAT_WS(x, …, sN) 、LPAD(s1, len, s2) 、RPAD(s1, len, s2) 、INSERT(s1, x, len, s2) 、REPLACE(s, s1, s2) 、REPEAT(s, n) 、REVERSE(s) 、STRCMP(s1, s2) 、MID(s, start, len) 、SUBSTR(s, start, len) 、SUBSTRING(s, start, len)

  • 3、日期/时间函数
    返回当前时间日期:CURDATE()、CURRENT_DATE() 、CURTIME() 、CURRENT_TIME 、CURRENT_TIMESTAMP() 、LOCALTIME() 、LOCALTIMESTAMP() 、NOW() 、SYSDATE()
    年月日:DATE(expr)、YEAR(d) 、QUARTER(d) 、MONTHNAME(d) 、MONTH(d) 、WEEK(d)

【w3cschool】MySQL 入门课程_简单复习相关推荐

  1. 布尔教育mysql入门视频教程_布尔教育燕十八mysql入门视频教程的资源(源码课件)推荐...

    <布尔教育燕十八mysql入门视频教程>是mysql基础入门课程,随着mysql不断发展,现在使用mysql+php做网站已成为主流web开发技术,如果你想学习动态网页设计,那么建议你选择 ...

  2. 大数据入门课程_我根据数千个数据点对互联网上的每门数据科学入门课程进行了排名...

    大数据入门课程 by David Venturi 大卫·文图里(David Venturi) A year ago, I dropped out of one of the best computer ...

  3. mysql入门操作_对MySQL的几个入门操作

    一.最基本的DDL语句 1.创建数据库 命令:created  database 数据库名; 2.使用数据库 命令:use 数据库名; 3.删除数据库 命令:drop database 数据库名 二. ...

  4. mysql rds 主从_简单说说RDS的主从功能是如何实现

    什么是RDS高可用 目前睿江云已经推出的RDS数据库,也已经将以上提到的高可用,进行了融合.用户无需进行上面的配置,直接选购即可使用. 相信不少的读者朋友,数据库的使用经验,相信使用的最多得应该是MY ...

  5. mysql员工管理系统_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    java java8 java开发 简单的员工管理系统(Mysql+jdbc+Servlet+JSP) 员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用my ...

  6. mysql账号管理系统_简单账号管理系统的实现(b/s、servlet、html、mysql)

    漫漫学习路,无处是尽头."技术是学不完的,只能学会学习能力,并不断学习才是真"这句绝对的真理.总结的虽是,斌哥布置的练习,但完成这个练习的过程中,却真心是温习了很多,学习了很多. ...

  7. php mysql 分组 分页_简单的PHP+Mysql实现分页

    1 <?php2 /**3 * PHP+Mysql实现分页4 * **/ 5 ?> 6 7 8 9 10 11 12 /**/ 13 body{14 font-size:12px;FONT ...

  8. 简单的mysql左链接_简单谈谈mysql左连接内连接

    前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据. 问题:只统计了X端入库单. 原因: 没有发现X端的数 ...

  9. mysql数据库计数器_简单易用的计数器(数据库)

    简单易用的计数器(数据库) 发布时间:2016-06-17 来源: 点击: 次 用法 include("counter.php"); Counter(__FILE__);//为文件 ...

最新文章

  1. 去哪儿网产品经理的专属心得:产品经理的核心价值
  2. 高性能计算的线程模型:Pthreads 还是 OpenMP
  3. JVM调优——之CMS GC日志分析
  4. buck电路上下管_推荐 | 学好电路设计与仿真?你不能错过这两本书籍 ~
  5. 今天开始休婚假,国庆顺便回家参加下自己的婚礼!
  6. Spring的AOP面向切面编程
  7. invalid signature什么意思_function是什么意思?
  8. 数据结构之广义表的相关知识点
  9. chown –r mysql:mysql_Linux服务器部署系列之二—MySQL篇
  10. 最简单的Gif生成工具,ScreenToGif操作指南(一)
  11. 转载-如果你不熟悉Material Design,请一口吃下这篇干货!
  12. 三、登录页制作《iVX低代码/无代码个人博客制作》
  13. 南山科技园的IDC机房怎么样?
  14. FPGA课程:JESD204B的应用场景(干货分享)
  15. 幼儿园体育游戏电子计算机教案,幼儿园体育游戏活动教案8篇
  16. 【得之我幸,失之我命】分享下研究生阶段, IEEE论文投稿的心态和心路历程
  17. 计算机文化基础多选题答案,计算机基础多选题集(附答案)
  18. linux添加java环境变量
  19. java读取大文件并添加入库,按行读取
  20. 服务器负载均衡 链路负载均衡 《CDN技术详解》

热门文章

  1. 数据结构实现时所需的成员变量、标准对外接口
  2. Python 格式化输出 —— %r 与 %s 的区别(__repr__ 与 __str__)
  3. 深度学习基础(七)—— Gibbs 采样
  4. Spark 编程工具类与工具方法(一)—— 欧式距离
  5. 数学常用公式及规律、结论(二)
  6. 再谈贝叶斯学派与频率学派的区别
  7. python查看方法作用_python中有帮助函数吗
  8. python需要下载哪些软件-Python 从不懂到入门
  9. python入门教程(非常详细)-Python入门教程:超详细1小时学会Python
  10. python菜鸟教程100例-对菜鸟教程的Python一百例的个别改进