windows 下启动 mysql 服务

  1. 图形界面下启动 MySQL 服务

打开>任务管理器,点击>服务列表,开启或关闭>MySQL。

  1. 命令行下启动 MySQL 服务

搜索>cmd,右击>命令提示符,以管理员身份运行>cmd,进入>MySQL 的 bin 目录, 输入>net start mysql,开启>MySQL 服务,输入>net stop mysql,关闭>MySQL 服务。

Windows 下进入 mysql 服务

  1. 首先开启 MySQL 服务。
  2. 在 MySQL 的 bin 目录:输入>mysql -u root -p 密码>123456
  3. 退出 MySQL 的 服务:exit, quit, ‘\q’

mysql 的常用命令

  1. 显示帮助:mysql> help
  2. 单行注释:#注释内容
  3. 显示版本:mysql> select version();
  4. 显示状态:mysql> status

mysql 默认配置文件

查询配置目录:select @@basedir;
查询数据目录:select @@datadir;
查询数据库编码:show variables like 'char%';


MySQL 数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间、字符类型。

  • 数值类型
类型大小范围(有符号)范围(无符号)用途
tinyint1 bytes(-128,127)(0,255)小整数值
smallint2 bytes(-32 768,32 767)(0,65 535)大整数值
mediumint3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
integer4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
bigint8 bytes(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
float4 bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度浮点数值
double8 bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值
decimal对 decimal(M,D),如果M>D,为M+2,否则为D+2依赖于M和D的值依赖于M和D的值小数值
  • 日期和时间类型
    表示时间值的日期和时间类型为datetime、date、timestamp、time和year。
类型大小范围格式用途
date3 bytes1000-01-01/9999-12-31YYYY-MM-DD日期值
time3 bytes‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
year1 bytes1901/2155YYYY年份值
datetime8 bytes1000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp4 types1970-01-01 00:00:00/2038YYYYMMDD HHMMSS混合日期和实践值,时间戳
  • 字符串类型
    字符串类型指char、varchar、binary、varbinary、blob、text、enum、set。
类型大小用途
char0~255 bytes定长字符串
varchar0~65535 bytes变长字符串
tinyblob0~255 bytes不超过255个字符的二进制字符串
tinytext0~255 bytes短文本字符串
blob0~65 535 bytes二进制形式的长文本数据
text0~65 535 bytes长文本数据
mediumblob0~ 16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0~16 777 215 bytes中等长度文本
longblob0~4 294 967 295 bytes二进制形式的极大文本数据
longtext0~4 294 967 295 bytes极大文本数据

char(n) 和 varchar(n) 中括号中n代表字符的个数,并不代表字节个数,比如char(30)就可以存储30个字符。


MySQL 操作

数据库操作

  1. 显示数据库:mysql> show databases;
  2. 创建数据库:mysql> create database runoob;
  3. 删除数据库:mysql> drop database runoob;
  4. 使用数据库:mysql> use fivechess;

数据表操作

  1. 显示数据表:mysql> show tables;
  2. 删除数据表:mysql> drop table runoob_tbl;
  3. 创建数据表:
create table if not exists `runoob_tbl`(
   `runoob_id` int unsigned auto_increment,
   `runoob_title` varchar(100) not null,
   `runoob_author` varchar(40) not null,
   `submission_date` date,
   primary key ( `runoob_id` )
)engine=innodb default charset=utf8;
  • auto_increment定义列为自增的属性,一般用于主键,数值会自动加1.
  • primary key关键字用于定义列为主键。
  • engine设置存储引擎,charset设置编码。

数据操作

  1. 插入数据:
insert into runoob_tbl 
(runoob_title, runoob_author, submission_date)
VALUES ("学习 PHP", "菜鸟教程", NOW());

insert into runoob_tbl
(runoob_title, runoob_author, submission_date)
values ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
  1. 查询数据:
select column_name,column_name
from table_name
[where Clause]
[limit N][offset M]

select * from runoob_tbl limit 5;  #检索前5个记录行
select * from runoob_tbl limit 3,5; #检索记录行4~8
select * from runoob_tbl limit 5 offset 3; #检索记录行4~8
  • limit 属性来设定返回的记录数。
  • offset属性来设定开始查询的数据偏移量。
  1. 更新数据:UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
update runoob_tbl set runoob_title='学习 C++' where runoob_id=3;
  1. 删除数据:delete from table_name [where Clause]
delete from runoob_tbl where runoob_id = 1;

字段操作

  1. 显示字段:SHOW COLUMNS FROM table_name;
  2. 添加字段:ALTER TABLE table_name ADD field_name field_type;
  3. 删除字段:ALTER TABLE table_name DROP field_name;
  4. 修改字段类型:ALTER TABLE table_name MODIFY field_name field_new_type;
  5. 修改字段名称及类型:ALTER TABLE table_name CHANGE field_old_name fileld_new_name field_new_type;
  6. 修改字段默认值:ALTER TABLE table_name ALTER field_name SET DEFAULT value;
  7. 恢复字段默认值:ALTER TABLE table_name ALTER field_name DROP DEFAULT;
  8. 修改表名:ALTER TABLE table_name RENAME TO alter_tbl;
show columns from runoob_tbl; #显示字段
alter table runoob_tbl add runoob_price int; #添加字段
alter table runoob_tbl drop runoob_price; #删除字段
alter table runoob_tbl modify runoob_price char(10); #修改字段类型
alter table runoob_tbl change runoob_price price int; #修改字段名称及类型
alter table runoob_tbl alter runoob_price set default 1000; #修改字段默认值
alter table runoob_tbl alter runoob_price drop default; #恢复字段默认值
alter table runoob_tbl rename to alter_tbl; #修改表名

where 条件

select field1, field2,...fieldN 
from table_name1, table_name2...
[where condition1 [and [or]] condition2.....
  • 可以使用and或者or指定一个或多个条件。

like 子句
select field1, field2,...fieldN from table_name where field1 like condition1 [and [or]] filed2 = 'somevalue'

select * from runoob_tbl where runoob_author like '%com'
  • link通常用于where子句中。
  • 可以使用link子句代替=
  • link%一同使用,%表示任意字符,类似与一个一元字符的搜索。

union 连接

语法

SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions];

参数

  • DISTINCT:可选,删除结果集中重复的数据。
  • ALL:可选,返回所有结果集,包含重复数据。

order by 排序

语法

SELECT field1, field2,…fieldN FROM table_name1, table_name2…
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2…] [ASC [DESC][默认 ASC]]

参数

  • ASCDESC:设置查询结果是按升序或降序排列。

group by 分组

语法

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;

MySQL 连接

可以在 SELECT, UPDATE 和 DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。


MySQL 事务

数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert、update、delete 语句。

一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

MySQL事务处理主要有两种方法:
1、用 BEGIN,ROLLBACK,COMMIT来实现

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

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

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

3、可以设置保留点 SAVEPOINT,执行多条操作时,回滚到想要的那条语句之前。

  • SAVEPOINT point_name 设置保留点
  • ROLLBACK TO point_name 回滚到保留点
  • RELEASE SAVEPOINT savepoint_name 删除指定保留点

保留点再事务处理完成(执行一条 ROLLBACK 或 COMMIT)后自动释放。

CREATE TABLE table_name ( ) ENGINE=InnoDB;

BEGIN; #开始事务
…… #insert,update,delete
COMMIT; #提交事务

BEGIN; #开始事务
…… #insert,update,delete
ROLLBACK; #回滚到开始事务

BEGIN; #开始事务
…… #insert,update,delete
SAVEPOINT savepoint_name; #声明一个 savepoint
……#insert,update,delete
ROLLBACK TO savepoint_name; #回滚到 savepoint

MySQL 导出数据

数据导入导出时报错:

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

报错原因:
MySQL 文件的导入和导出路径有默认设置,即 secure-file-priv。当传入的文件路径与默认路径冲突时就会报错。

三种情况:

  • secure-file-priv = null 限制 MySQL 不允许导入导出
  • secure-file-priv = /path/ 限制 MySQL 的导入导出只能发生在默认的 /path/ 目录下
  • secure-file-priv = ’ ’ 不对 MySQL 的导入导出做限制

查看 secure-file-priv 设置:SHOW VARIABLES LIKE '%secure%';

(https://wwwblogs/RayWang/p/9347874.html)
(https://wwwblogs/RayWang/p/9347874.html)

MySQL 导入数据

更多推荐

mysql(大小写不区分)