MySQL数据库

一、数据库基础

1. 连接数据库

  • mysql --host=localhost --user=root --password test
  • mysql -h localhost -u root -p test;
  • mysql -u root -p 

2. 断开MySQL服务器

quit

3. 创建数据库

create database 数据库名;

4. 查看数据库

  • select version():查看MySQL版本
  • select current_date / curdate()、select current_time / curtime():查看当前日期、时间 = select now();
  • show databases:查看数据库
  • show tables:查看数据表
  • show columns from 数据表名[from 数据库名]:查看表结构
  • describe 数据表名 列名;describe简写desc:查看表结构

5. 选择数据库

  • use 数据库名;
  • mysql -d 所选择的数据库名 -h 主机名 -u 用户名 -p;

6. 删除数据库

drop database 数据库名;

7. 创建数据表

create [temporary] table [if not exists] 数据表名 [(create_definition,...)][table_options][select_statement];

参数说明
temporary如果使用该关键字,表示创建一个临时表
if not exists该关键字用于避免表不存在时MySQL报告的错误
create_definition表的列属性部分,MySQL要求在创建表时,表至少包含一列
table_options表的一些特性参数
select_statementselect语句描述部分,用它可以快速地创建表
create_definition的参数说明
参数说明
col_name字段名
type字段类型
NOT NULL | NULL指出该列是否允许是空值,系统一般默认允许为空值,当不允许为空值设置NOT NULL;
DEFAULT default_values表示默认值
AUTO_INCREMENT表示是否是自动编号,每个表只能有一个AUTO_INCREMENT列,并且必需被索引
PRIMARY KEY表示是否为主键,一个表只能有一个PRIMARY KEY。
reference_definition为字段添加注释

8. 插入数据

insert [into] 表明 [(列名1,列名2,列名3,...)] values (值1,值2,值3,...);

9. 查询表中的数据

select 列名称 from 表名称 [where 条件];

10. 更新表中的数据

update 表名称 set 列名称 = 新值 where 更新条件;

11. 删除表中的数据

delete from 表名称 where 删除条件;

12. 创建后表的修改

  • 添加列:alter table 表名 add 列名 列数据类型 [after 插入位置];
  • 修改列:alter table 表名 change 列名称 列新名称 新数据类型。
  • 删除列:alter table 表名 drop 列名称;
  • 重命名表:alter table 表名 rename 新表名;
  • 删除整张表:drop table 表名;
  • 删除整个数据库:drop database 数据库名;
  • 修改子句定义字段:modify 列名 列数据类型;

修改root 用户密码

mysql admin -u root -p password 新密码;

二、MySQL数据库备份和恢复

1. 数据的备份

mysqldump -u root -p 需要备份的数据库 >“c:\users\simple\desktop\test.txt”(备份的路径以及文件名,注意命令末尾不能加分号";",否则报错)

2. 数据的恢复

mysql -u root -p test < "c:\users\simple\desktop\test.txt"

三、其他

1. MySQL所处状态的含义

MySQL状态含义
提示含义
mysql>准备好进行新查询
->等待多行查询的下一行
'>等待下一行,等待以单引号开头的字符串的完成( ' )
">等待下一行,等待以双引号开头的字符串的完成( " )
`>等待下一行,等待以反引号( ` )开头的标识符的完成
/*>等待下一行,等待以 # 开头的评论完成 /*

在执行某语句时,键入 \c 可以切换回来,mysql>

2. 信息功能

名称描述
BENCHMARK()反复执行表达式
CHARSET()返回参数的字符集
COERCIBILITY()返回字符串参数的归类强制性值
COLLATION()返回字符串参数的排序规则
CONNECTION_ID()返回连接的连接ID(线程ID)
CURRENT_USER(), CURRENT_USER经过身份验证的用户名和主机名
DATABASE()返回默认(当前)数据库名称
FOUND_ROWS()对于带有LIMIT子句的SELECT,返回的行数没有LIMIT子句
LAST_INSERT_ID()最后一次INSERT的AUTOINCREMENT列的值
ROW_COUNT()行数已更新
SCHEMA()DATABASE()的同义词
SESSION_USER()USER()的同义词
SYSTEM_USER()USER()的同义词
USER()客户端提供的用户名和主机名
VERSION()返回表示MySQL服务器版本的字符串

3. 将文本加载数据表中

mysql> load data local infile "文件路径及名称" into table 数据表;

4. 将 .sql 文件导入到MySQL的数据库中

mysql> source 文件路径及文件名称.sql;

5. 使用 distinct 去除重复的数据。

mysql> select distinct name from users;

6. 排序行

mysql> select * from users order by name [asc];(默认为升序)

mysql> select * from users order by name desc;(按降序排序)

对多个列进行排序,并且可以按不同方向对不同列进行排序:mysql> select name,gender,email from users order by gender ,email desc; (DESC关键字仅适用于紧邻其前面的列名,它不会影响对gender列排序)

7. where 运算符

操作符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE

搜索某种模式

查询使用death IS NOT NULL而不是death <> NULL因为 NULL是一个特殊值

8. 规定要返回的数据记录数目

mysql> select * from users limit 需要返回数据的数目(数字)

9. 通配符

通配符描述
%替代一个或多个字符
_仅替代一个字符

10. Alias(别名):返回的数据是别名的字段

  • 表的Alias语法:select column_name(s) from table_name as alias_name 
  • 列的Alias语法:select column_name as alias_name from table_name;

11. join用于根据两个或多个表中的列之间的关系,从这些表中查询数据

- 内连接查询:使用关键字join、cross join或inner join

语法:select column_name(s) from table_name1 inner join table_name2 on table_name1.uid=table_name2.id

- 外连接查询:左外查询left join、右外查询right join

语法:select column_name(s) from table_name1 left join table_name2 on table_name1.uid=table_name2.id

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行

语法:select column_name(s) from table_name1 right join table_name2 on table_name1.uid=table_name2.id

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

- 全连接 full join 

语法:select column_name(s) from table_name1 full join table_name2 on table_name1.column_name=table_name2.column_name;

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行

12. union 操作符

union操作符用于合并两个或多个select语句的结果集

语法:select column_name(s) from table_name1 union select column_name(s) from table_name2;

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL,另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

语法:select column_name(s) from table_name1 union all select column_name(s) from table_name2;

13. 日期和时间函数

名称描述
ADDDATE()将时间值(间隔)添加到日期值
ADDTIME()添加时间
CONVERT_TZ()从一个时区转换为另一个时区
CURDATE()返回当前日期
CURRENT_DATE(), CURRENT_DATECURDATE()的同义词
CURRENT_TIME(), CURRENT_TIMECURTIME()的同义词
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP同义词NOW()
CURTIME()返回当前时间
DATE()提取日期或日期时间表达式的日期部分
DATE_ADD()将时间值(间隔)添加到日期值
DATE_FORMAT()格式化日期指定
DATE_SUB()从日期中减去时间值(间隔)
DATEDIFF()减去两个日期
DAY()DAYOFMONTH()的同义词
DAYNAME()返回工作日的名称
DAYOFMONTH()返回当月的日期(0-31)
DAYOFWEEK()返回参数的工作日索引
DAYOFYEAR()返回一年中的某一天(1-366)
EXTRACT()提取部分日期
FROM_DAYS()将日期号码转换为日期
FROM_UNIXTIME()将Unix时间戳格式化为日期
GET_FORMAT()返回日期格式字符串
HOUR()提取小时
LAST_DAY返回参数的月份的最后一天
LOCALTIME(), LOCALTIMENOW()的同义词
LOCALTIMESTAMP, LOCALTIMESTAMP()NOW()的同义词
MAKEDATE()创建年份和年中的日期
MAKETIME()从小时,分钟,秒创建时间
MICROSECOND()从参数返回微秒
MINUTE()从论证中返回分钟
MONTH()从过去的日期返回月份
MONTHNAME()返回月份名称
NOW()返回当前日期和时间
PERIOD_ADD()添加一个月到一个月
PERIOD_DIFF()返回句点之间的月数
QUARTER()从日期参数返回季度
SEC_TO_TIME()将秒转换为'HH:MM:SS'格式
SECOND()返回第二个(0-59)
STR_TO_DATE()将字符串转换为日期
SUBDATE()使用三个参数调用时DATE_SUB()的同义词
SUBTIME()减去时间
SYSDATE()返回函数执行的时间
TIME()提取传递的表达式的时间部分
TIME_FORMAT()格式化为时间
TIME_TO_SEC()返回转换为秒的参数
TIMEDIFF()减去时间
TIMESTAMP()使用单个参数,此函数返回日期或日期时间表达式; 有两个参数,参数的总和
TIMESTAMPADD()在datetime表达式中添加间隔
TIMESTAMPDIFF()从日期时间表达式中减去间隔
TO_DAYS()返回转换为days的日期参数
TO_SECONDS()返回自0年以来转换为秒的日期或日期时间参数
UNIX_TIMESTAMP()返回Unix时间戳
UTC_DATE()返回当前的UTC日期
UTC_TIME()返回当前的UTC时间
UTC_TIMESTAMP()返回当前的UTC日期和时间
WEEK()返回周数
WEEKDAY()返回工作日索引
WEEKOFYEAR()返回日期的日历周(1-53)
YEAR()回归年份
YEARWEEK()返回年份和星期

14. 正则表达式

  • ^:匹配字符串的开头
  • $:匹配字符串的结尾
  • . :匹配任何字符(包括回车和换行符)
  • a*:匹配零个或多个a 字符的任何序列
  • a+:匹配一个或多个a 字符的任何序列(至少有一个)
  • a?:匹配零个或一个a字符(至多一个)
  • de|abc:匹配任何序列de或abc(轮换)
  • (abc)*:匹配序列的零个或多个实例abc
  • {n},{m,n}:匹配完全匹配的实例(m并且 n必须在范围从 0RE_DUP_MAX (默认255),包括端值。)
  • [a-dX],[^a-dX]:匹配任何字符,该字符(或不是,如果 ^被使用)任一a, bc, dX

15. 聚合(Group By)功能

16. 使用用户定义的变量

mysql>select @min_id:=min(id),@max_id:=max(id) from users;

mysql>select * from users where id=@min_id or id=@max_id;

17. 计算数据总数并去除重复的数据

  • select bit_count(bit_or(column_name)) as alias_name from table_name;
  • select count(distinct column_name) from table_name;

五、mysql 数据库优化

优化查询的注意考虑因素:

1. 要select...where加快查询速度,首先要检查的是是否可以添加索引。在where子句中使用的列上设置索引,以加快评估,过滤和结果的最终检索。为避免浪费磁盘空间,请构建一小组索引,以加快应用程序中使用的许多相关查询。

2. 隔离并调整查询的任何部分,例如函数调用,这回占用过多时间。根据查询的结构,可以为结果集中的每一行调用一次函数,甚至可以为表中的每一行调用一次函数,从而大大减轻任何低效率。

3. 最大限度地减少查询中的全表扫描次数,尤其是对大型表。

4. 通过analyze table定期使用语句使表统计信息保持最新,因此优化程序具有构建有效执行计划所需的信息。

5. 了解特定于每个表的存储引擎的调优技术,索引技术和配置参数,双方InnoDB并MyISAM有两套准则的实现和维持查询高性能。

6. 如果其中一个基本准则无法轻松解决性能问题,通过阅读查询调用特定查询的内部详细信息explain计划并调整索引、where子句、连接子句。

7. 调整MySQL用于缓存的内存区域的大小和属性,通过有效使用InnoDB缓冲池,MyISAM密钥缓存和MySQL查询缓存,重复查询运行的更快,用为第二次以及以后的时间从内存中检索结果

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值