windows 下启动 mysql 服务
- 图形界面下启动 MySQL 服务
打开>任务管理器,点击>服务列表,开启或关闭>MySQL。
- 命令行下启动 MySQL 服务
搜索>cmd
,右击>命令提示符,以管理员身份运行>cmd
,进入>MySQL 的 bin 目录, 输入>net start mysql
,开启>MySQL 服务,输入>net stop mysql
,关闭>MySQL 服务。
Windows 下进入 mysql 服务
- 首先开启 MySQL 服务。
- 在 MySQL 的 bin 目录:输入>
mysql -u root -p
密码>123456
- 退出 MySQL 的 服务:
exit
,quit
, ‘\q’
mysql 的常用命令
- 显示帮助:
mysql> help
- 单行注释:
#注释内容
- 显示版本:
mysql> select version();
- 显示状态:
mysql> status
mysql 默认配置文件
查询配置目录:select @@basedir;
查询数据目录:select @@datadir;
查询数据库编码:show variables like 'char%';
MySQL 数据类型
MySQL
支持多种类型,大致可以分为三类:数值、日期/时间、字符类型。
- 数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
tinyint | 1 bytes | (-128,127) | (0,255) | 小整数值 |
smallint | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
mediumint | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
integer | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
bigint | 8 bytes | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
float | 4 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) | 单精度浮点数值 |
double | 8 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。
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3 bytes | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 bytes | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
year | 1 bytes | 1901/2155 | YYYY | 年份值 |
datetime | 8 bytes | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | 4 types | 1970-01-01 00:00:00/2038 | YYYYMMDD HHMMSS | 混合日期和实践值,时间戳 |
- 字符串类型
字符串类型指char、varchar、binary、varbinary、blob、text、enum、set。
类型 | 大小 | 用途 |
---|---|---|
char | 0~255 bytes | 定长字符串 |
varchar | 0~65535 bytes | 变长字符串 |
tinyblob | 0~255 bytes | 不超过255个字符的二进制字符串 |
tinytext | 0~255 bytes | 短文本字符串 |
blob | 0~65 535 bytes | 二进制形式的长文本数据 |
text | 0~65 535 bytes | 长文本数据 |
mediumblob | 0~ 16 777 215 bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0~16 777 215 bytes | 中等长度文本 |
longblob | 0~4 294 967 295 bytes | 二进制形式的极大文本数据 |
longtext | 0~4 294 967 295 bytes | 极大文本数据 |
char(n) 和 varchar(n) 中括号中n代表字符的个数,并不代表字节个数,比如char(30)就可以存储30个字符。
MySQL 操作
数据库操作
- 显示数据库:
mysql> show databases;
- 创建数据库:
mysql> create database runoob;
- 删除数据库:
mysql> drop database runoob;
- 使用数据库:
mysql> use fivechess;
数据表操作
- 显示数据表:
mysql> show tables;
- 删除数据表:
mysql> drop table runoob_tbl;
- 创建数据表:
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
设置编码。
数据操作
- 插入数据:
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');
- 查询数据:
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
属性来设定开始查询的数据偏移量。
- 更新数据:
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
update runoob_tbl set runoob_title='学习 C++' where runoob_id=3;
- 删除数据:
delete from table_name [where Clause]
delete from runoob_tbl where runoob_id = 1;
字段操作
- 显示字段:
SHOW COLUMNS FROM table_name;
- 添加字段:
ALTER TABLE table_name ADD field_name field_type;
- 删除字段:
ALTER TABLE table_name DROP field_name;
- 修改字段类型:
ALTER TABLE table_name MODIFY field_name field_new_type;
- 修改字段名称及类型:
ALTER TABLE table_name CHANGE field_old_name fileld_new_name field_new_type;
- 修改字段默认值:
ALTER TABLE table_name ALTER field_name SET DEFAULT value
; - 恢复字段默认值:
ALTER TABLE table_name ALTER field_name DROP DEFAULT;
- 修改表名:
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]]
参数
ASC
或DESC
:设置查询结果是按升序或降序排列。
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(大小写不区分)
发布评论