MySQL从安装到使用

常用单词提示

(R)DBMS (关系型)数据库管理系统;

Database schema 数据库架构;Tables 数据表;

Columns 列;Indexes 索引;Views 视图;Events 事件;Fields 字段;

Engine 存储引擎(数据表类型,如InnoDB);Collation 字符集(存储格式,如utf-8);

Duplicate entry 重复录入;Syntax 语法;

简单介绍:

MySql数据库是开放源代码的关系型数据库。它可以提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。

MySQL 具有一套对字符、单词以及特殊符号的使用规定,MySQL 通过执行 SQL 脚本来完成对数据库的操作,该脚本由一条或多条 MySQL语句(SQL语句 + 扩展语句)组成,保存时脚本文件后缀名一般为.sql。在控制台下,MySQL 客户端也可以对语句进行单句执行而不用保存为.sql文件(mysql 命令提示窗口)。

  • MySQL语法对大小写不敏感,但是大写更容易看出,建议使用大写。
  • 但是所有的数据库名,表名,表字段都是区分大小写的。所以使用SQL命令时需要输入正确的名称。
  • 如果一条SQL语句太长,可以通过回车键创建一个新行,SQL语句的命令结束符为分号。

0.可以跳过:从命令行中连接mysql服务器的步骤:

(使用root用户登录,拥有最高权限)

1.打开命令行,进入安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin。

2.输入mysql -u root -p,回车。输入密码,回车。

3.登录成功,出现 mysql> 命令提示窗口,可以在上面执行SQL语句。

(之后和在MySQL客户端输入SQL语句是类似的)

1.可以跳过:命令行中MySQL数据库命令

注意:在安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin输入以下命令(需要输密码)。

mysqladmin -u root -p create RUNOOB

创建 MySQL 数据库 RUNOOB。

mysqladmin -u root -p drop RUNOOB

删除数据库RUNOOB,执行后会出现一个提示框,来确认是否真的删除数据库。

2.牢牢记住:管理MySQL的SQL语句

以下列出了使用Mysql数据库过程中常用的命令(SQL语句):

(作为示范,数据库名可以选择world,数据表名可以选择city)

CREATE SCHEMA 数据库名;

创建 MySQL 数据库 RUNOOB。

DROP SCHEMA 数据库名;

删除数据库RUNOOB。

——————————————分割线——————————————

注意:刷新之后才可以看到Navigator列表的相应变化。

——————————————分割线——————————————

USE 数据库名;

选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。

SHOW DATABASES;

列出 MySQL 数据库管理系统的数据库列表。

SHOW TABLES;

显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。

SHOW COLUMNS FROM 数据表名;

显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

SHOW INDEX FROM 数据表名;

显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] [\G];

该命令将输出Mysql数据库管理系统的性能及统计信息。

  • SHOW TABLE STATUS FROM 数据库名;

显示数据库中所有表的信息。

  • SHOW TABLE STATUS FROM 数据库名 LIKE 'c%';

显示表名以c开头的表的信息。

  • SHOW TABLE STATUS FROM 数据库名 LIKE 'c%'\G;

加上 \G,查询结果按列打印。

3.了解一下:MySQL 数据类型

MySQL 有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

数字类型

整数:tinyint、smallint、mediumint、int、bigint

浮点数:float、double、real、decimal

日期和时间

date、time、datetime、timestamp、year

字符串类型

字符串:char、varchar

文本:tinytext、text、mediumtext、longtext

二进制(可用来存储图片、音乐等):tinyblob、blob、mediumblob、longblob

Learn more:

http://www.runoob.com/mysql/mysql-data-types.html

http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html

——————————————分割线——————————————

按照最开头的5min入门链接,应该就可以创建如上的Schema(student)和Table(student_table1)并查看。

实际上之前图形界面的操作都会有对应的SQL语句显示,所以按照那个学语法应该会比较简单。

Anyway,下面就用这个Table来做演示。

——————————————分割线——————————————

4.牢牢记住:SQL语句——数据处理

插入数据:

INSERT INTO 数据表名 ( field1, field2,...fieldN )

VALUES ( value1, value2,...valueN );

示例:

INSERT INTO student_table1 (name, id, age, class )

VALUES (1, 2, 3, 4);

查询数据:(SQL SELECT语句使用WHERE 子句)

SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M];

Learn more:

http://www.runoob.com/mysql/mysql-select-query.html

示例:

SELECT * from student_table1 WHERE name=1;

查询数据通用句式:

SELECT field1, field2,...fieldN FROM 数据表名1, 数据表名2...

[WHERE condition1 [AND [OR]] condition2.....;

Learn more:

http://www.runoob.com/mysql/mysql-where-clause.html

示例:

SELECT * from student_table1 WHERE name=1;

修改数据:(SQL UPDATE语句使用WHERE 子句)

UPDATE 数据表名 SET field1=new-value1, field2=new-value2

[WHERE Clause];

示例:

UPDATE `student`.`student_table1` SET `class`=NULL WHERE `name`='1' and`id`='2' and`age`='3' and`class`='4';

删除数据:

DELETE FROM 数据库名.数据表名 [WHERE Clause];

Learn more:

http://www.runoob.com/mysql/mysql-where-clause.html

示例:

DELETE FROM `student`.`student_table1` WHERE `name`='2' and`id`='3' and`age`='4' and`class`='5';

不完全匹配查询数据:

SELECT field1, field2,...fieldN FROM 数据表名

WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue';

# SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。

# 如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

示例:

SELECT * from student_table1 WHERE name LIKE '%1';

条件组合查询数据:

SELECT expression1, expression2, ... expression_n

FROM tables [WHERE conditions]

UNION [ALL | DISTINCT]

SELECT expression1, expression2, ... expression_n

FROM tables [WHERE conditions];

# UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

排序数据:(SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回)

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]];

# 读取表中指定数据并按指定字段字段的升序/降序排列。

Learn more:

http://www.runoob.com/mysql/mysql-order-by.html

示例:

SELECT * from student_table1 ORDER BY name ASC;

分组数据:

SELECT column_name, function(column_name) FROM table_name

WHERE column_name operator value GROUP BY column_name;

Learn more:

http://www.runoob.com/mysql/mysql-group-by-statement.html

示例:

请照着上面链接的实例做,依次运行语句即可。注意!第一段语句前加上:

CREATE SCHEMA RUNOOB;

USE RUNOOB;

多数据表查询数据:(在SELECT, UPDATE和DELETE语句中使用JOIN子句)

Learn more:

http://www.runoob.com/mysql/mysql-join.html

示例:

请照着上面链接的实例做,下载数据库并依次运行语句即可。

NULL 值处理:

IS NULL:当列的值是 NULL,此运算符返回 true。

IS NOT NULL:当列的值不为 NULL, 运算符返回 true。

<=>:比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

# 查询条件字段为 NULL 时,命令可能无法正常工作。

# 关于 NULL 的条件比较运算比较特殊的。不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

# NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。

正则表达式:

http://www.runoob.com/mysql/mysql-regexp.html

5.理解一下:MySQL的事务概念

  • 事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位(保证成批的 SQL 语句要么全部执行,要么全部不执行)。
  • MySQL 事务主要用于处理操作量大,复杂度高的数据。
  • 事务的四个特性(ACID):原子性(A),一致性(C),隔离性(I),持久性(D)

事务控制语句:

BEGIN或START TRANSACTION;

显式地开启一个事务。

COMMIT;

也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的。

ROLLBACK;

有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。

SAVEPOINT identifier;

SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT。

RELEASE SAVEPOINT identifier;

删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常。

ROLLBACK TO identifier;

把事务回滚到标记点。

SET TRANSACTION;

用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事务处理实现:

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

Learn more:

http://www.runoob.com/mysql/mysql-transaction.html

6.牢牢记住:SQL语句——ALTER命令(数据表&字段)

删除、添加字段:

ALTER TABLE 数据表名 DROP i;

ALTER TABLE 数据表名 ADD 新字段名 字段类型 [FIRST[AFTER 已有字段名]];

修改字段名称、类型

ALTER TABLE 数据表名 CHANGE 字段名 新字段名 新字段类型;

指定、修改、删除字段默认值:

ALTER TABLE 数据表名 MODIFY 字段名 字段类型 NOT NULL DEFAULT 默认值;

ALTER TABLE 数据表名 ALTER 字段名 SET DEFAULT 默认值;

ALTER TABLE 数据表名 ALTER 字段名 DROP DEFAULT;

示例:

ALTER TABLE student_table1 MODIFY id int NOT NULL DEFAULT 100;

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '11');

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '111');

INSERT INTO `student`.`student_table1` (`age`, `class`) VALUES ('1', '1111');

SELECT * FROM student.student_table1;

修改数据表类型:

ALTER TABLE 数据表名 ENGINE = 新数据表类型;

# 查看数据表类型可以使用 SHOW TABLE STATUS 语句。

修改数据表名:

ALTER TABLE 数据表名 RENAME TO 新数据表名;

除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://geekmubai.com/programming/215.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏battcn

MySQL - EXPLAIN详解

EXPLAIN: 为 SELECT语句中使用到的每个表返回一条信息。它按照MySQL在处理语句时读取它们的顺序列出这些表。MySQL使用循环嵌套算法解析所有连接...

12120
来自专栏乐沙弥的世界

PL/SQL --> DML 触发器

何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行。对于这样的代码我们称之为触发器

11230
来自专栏互联网开发者交流社区

数据定义: CREATE、DROP、ALTER

15220
来自专栏后台日记

Mysql INSERT ON DUPLICATE KEY UPDATE

INSERT ... ON DUPLICATE KEY UPDATE是MySQL insert的一种扩展。当发现有重复的唯一索引(unique key)或者主键...

16530
来自专栏Linyb极客之路

深入理解MySQL索引原理和实现——为什么索引可以加速查询?

说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这...

19730
来自专栏性能与架构

Mysql group by实现方式(一) - 临时表

当MySQL Query Optimizer无法找到可以利用的合适索引时,就不得不先读取需要的数据,然后通过临时表来完成GROUP BY操作 例如 EXPLAI...

30560
来自专栏文渊之博

mysql表分区简述

数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应...

14830
来自专栏待你如初见

Day15

10830
来自专栏乐沙弥的世界

Oracle 测试常用表BIG_TABLE

创建测试用表,DBA经常用到,通常都是基于dba_objects来创建的比较多。本文根据Tom大师的big_table进行了整理,供大家参考。

16820
来自专栏数据和云

层层升入:SQL极限调优之一次更新操作的N种优化可能

杨廷琨,网名 yangtingkun 云和恩墨技术总监,Oracle ACE Director,ACOUG 核心专家 最近进行了一次更新操作,整个处理和优化的过...

33480

扫码关注云+社区

领取腾讯云代金券