Mysql数据库简单常用语句
Mysql数据库简单常用语句
1、命令连接数据库
mysql -h 127.0.0.1 -u root -p
2、新增用户
GRANT SELECT on 数据库.* to 用户名@登录主机 identified by "密码";
3、创建数据库
CREATE DATABASE databaseName;
4、使用数据库
USE databaseName;
5、删除数据库
DROP DATABASE databaseName;
6、创建表
CREATE TABLE person(
id int(10) not null auto_increment UNIQUE,
name varchar(25),
age int(10));
7、查看表结构
DESC person;
8、插入数据
INSERT INTO person(name,age) VALUES('张三',30);
9、批量插入数据
INSERT INTO person VALUES(3,'李5',30),(4,'李6',30),(5,'李7',30);
10、删除数据
DELETE FROM person where id=4;
11、修改数据
UPDATE person SET age=50 WHERE name='李7';
12、查询数据
SELECT * FROM person WHERE id=5 AND name='李7';
13、升序排序
SELECT * FROM person ORDER BY age;
默认升序ASC可以省略。
14、降序排序
SELECT * FROM person ORDER BY age DESC;
降序必须写上DESC。
15、数据分组
SELECT age,COUNT(age) FROM person where age>30 GROUP BY age;
查询出年龄大于30岁的人数有还有哪些年龄段,并统计出来各个年龄段的人数个数。
16、分组条件查询
SELECT age,COUNT(age) FROM person where age>30 GROUP BY age HAVING COUNT(age)>2;
查询出年龄大于30岁的人数有还有哪些年龄段,并统计出来各个年龄段的人数个数,最后筛选出来年龄段的人数大于2人的年龄段人数信息。
HAVING 是用来设置分组条件的条件表达式,用来分组查询后指定一些条件来输出查询结果。
WHERE 语句在聚合前先筛选记录,也就是说作用在GROUP BY和HAVING字句前,而HAVING子句在聚合后对组记录进行筛选,HAVING只能用于GROUP BY。
WHERE 用于过滤数据行,而 HAVING用于过滤分组。
WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤。
WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。
WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。
17、限制查询数量LIMIT
SELECT * FROM user LIMIT 5;
检索前5行记录,只给一个参数,它表示返回最大的记录行数目。
SELECT * FROM person LIMIT 2,2;
从第2条数据开始,检索出2条数据。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
初始记录行的偏移量是从0开始(不是 1)。
18、添加字段
ALTER TABLE person add phoneNumber varchar(25) not Null;
19、重命名字段
ALTER TABLE person change phoneNumber telephoneNumber varchar(25);
20、条件查询过滤
(1)AND(与查询)
用AND进行查询的时候,查询出来的数据要求条件都得满足。
SELECT * FROM person WHERE `name`='赵四' and age=50;
(2)OR(或查询)
用OR进行查询的时候,查询出来的数据只要求满足其中任意一个条件就可以查询出来。
SELECT * FROM person WHERE `name`='赵四' OR age=30;
查询出来名字是‘赵四’的,或者age在30岁的所有人信息。
(3)IN(在给定范围内)
用IN进行查询的时候,查询出来的数据在这个IN后边括号里边给定的值当中。
SELECT * FROM person WHERE age IN(30,55);
只查询出来年龄是30岁和55岁的人数信息。
(4)NOT IN(不在范围内)
用NOT IN进行查询的时候,查询出来的数据不在这个给定的范围内。
SELECT * FROM person WHERE age NOT IN(30,40,50);
查询出来所有年龄不是30岁,40岁,50岁的人。
(5)IS(为空)
用IS NULL进行查询的时候,是用来查询某字段为空时用is null,而不能使用"=null",因为mysql中的null不等于任何其他值,也不等于另外一个null。
优化器会把"=null"的查询过滤掉而不返回任何数据,查询某字段为非空时使用is not null。
SELECT * FROM person WHERE name is null;
21、模糊查询LIKE
(1)LIKE '李%'
使用LIKE查询该字段以“李”姓开头的数据。
SELECT * FROM person WHERE name like '李%';
(2)LIKE '%明'
使用LIKE查询该字段以“四”结尾的数据。
SELECT * FROM person WHERE name like '%四';
(3)LIKE '%明%'
使用LIKE查询该字段包含“强”的数据。
SELECT * FROM person WHERE name like '%强%';
22、字段控制查询过滤
(1)DISTINCT
去除重复的数据。
SELECT distinct age FROM person;
(2)AS
可以设置列的别名、也可以省略AS来设置关键字。
SELECT name as 姓名,age 年龄 FROM person;
23、聚合函数
(1)AVG()函数
AVG函数是用来计算某一列的平均值,比如可以用在计算平均薪资、平均年龄等。
SELECT avg(age) FROM person;
(2)COUNT()函数
COUNT()聚合函数是用来统计表中记录的个数或者列中值的总个数,计算内容由SELECT语句指定,例如要获取person表中age > 30岁的人数。
SELECT count(*) FROM person WHERE age >30;
(3)MAX()/MIN()函数
MAX()聚合函数选取最大值,MIN()聚合函数选取最小值。
SELECT max(age) FROM person;
SELECT min(age) FROM person;
(4)SUM()函数
SUM()聚合函数用来计算满足条件的某一列的总和。
SELECT sum(age) FROM person ;
24、表连接查询
25、修改最大连接数
查看当前最大连接数
show variables like '%max_connections%';
查看当前mysql线程服务信息
show status like 'Threads%';
修改最大连接数
set global max_connections=3000;
25、性能调优
1、硬件升级:增加CPU、内存和存储资源。
2、优化数据库结构:使用合适的数据类型,规范化表名和字段名,使用索引。
3、配置文件优化:调整my.cnf或my.ini配置文件。
[mysqld]
# 最大连接数
max_connections = 1000
# 缓冲区大小
query_cache_size = 32M
# 缓冲区类型,0表示不使用缓冲区,1表示使用缓冲区但不会执行解析,2表示完全使用缓冲区
query_cache_type = 1
# 内存表大小
tmp_table_size = 64M
# 线程缓冲区大小
thread_stack = 256K
# 内存排序缓冲区大小
sort_buffer_size = 8M
4、查询优化:使用索引,避免SELECT *,避免子查询,使用JOIN代替。
5、定时优化和清理:定期执行OPTIMIZE TABLE和数据清理。
在 MySQL 数据库中,OPTIMIZE TABLE 是一个重要的命令,用于优化表的性能和空间利用。通过重新组织表的存储结构,去除碎片,OPTIMIZE TABLE 可以帮助提高查询性能、减少存储空间占用以及减少数据碎片。
6、监控和日志分析:使用SHOW STATUS和SHOW PROCESSLIST,分析慢查询日志。调优是一个持续的过程,需要监控数据库的表现,并根据实时情况进行调整。
SHOW STATUS 命令就像是一个报告卡,告诉我们MySQL数据库服务器的当前状态。这个命令会提供很多关于MySQL如何运行的信息,比如它已经运行了多长时间,执行了多少次查询,以及是否有任何错误发生。当我们执行SHOW STATUS命令时,MySQL会查看它的内部记录,这些记录保存了数据库服务器的各种状态信息。然后,它会返回一个列表,列出了所有这些状态信息,我们可以查看这些信息来了解数据库的运行情况。
SHOW PROCESSLIST 命令则像是一个任务管理器,它显示当前正在MySQL数据库服务器上运行的所有任务或进程。这些任务可能是用户正在执行的查询,或者是数据库服务器自己正在进行的一些工作。当我们执行SHOW PROCESSLIST命令时,MySQL会查看当前正在运行的所有进程,并返回一个列表,列出了每个进程的详细信息,比如它是谁启动的,正在执行什么查询,以及它已经运行了多长时间。