Linux使用-MySQL的使用
🌟Linux使用-MySQL的使用
本文将介绍 Linux MySQL的使用的核心操作,包括MySQL 服务端安装、MySQL 指令速查、查询命令和字段属性,帮助你快速掌握MySQL的使用的基础技能。
🔥1.MySQL 服务端安装
在ubuntu下,运行下面的命令,安装MySQL:
基本操作命令
sudo apt-get upadate
sudo apt-cache search mysql | grep mysql-server
sudo apt-get install mysql-server-5.7
MySQL运行界面:
🔥2.MySQL 指令速查
MySQL指令速查
操作分类 | 操作说明 | 代码示例 |
---|---|---|
MySQL命令行 | 登陆MySQL命令行 | mysql -u <username> -p |
在命令行直接执行命令 | mysql -u <username> -p <pwd> -e "<cmd>" |
|
数据库操作 | 查看数据库 | show databases; |
选择数据库 | use <database>; |
|
创建数据库 | create database <database> CHARACTER SET utf8 COLLATE utf8_general_ci; |
|
删除数据库 | drop schema <database>; |
|
数据表操作 (通用SQL) | 查看数据表 | show tables; |
数据表结构 | desc <table>; |
|
查看创建表的SQL语句 | show create table <table>; |
|
创建数据表 | create table student_score (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255), PRIMARY KEY(id), UNIQUE(name)); |
|
复制数据表 | create table <table> * from <table_1>; |
|
更改表名 | alter table <table> RENAME TO <table_2> ; |
|
新增字段 | alter table <table> ADD score INT NOT NULL Default 0; |
|
修改字段 | alter table <table> CHANGE score grade VARCHAR(255); |
|
删除字段 | alter table <table> DROP COLUMN grade; |
|
增删改查操作 (通用SQL) | 增加数据 | INSERT INTO <table> (<field_1>, <field_2>) VALUES (<value_1>, <value_2>); |
删除数据 | DELETE FROM <table> WHERE <field>=<value>; |
|
修改数据 | UPDATE <table> SET <field>=<value> WHERE <field>=<value>; |
|
精确查询 | SELECT <field> AS <name> FROM <table> WHERE <field>=<value> LIMIT 10,15; |
|
模糊查询 | SELECT * FROM <table> WHERE <field> like '%<value>%'; |
|
多表连接查询 | SELECT <table2>.<field> FROM <table1> JOIN <table2> ON <table2>.<field> = <table1>.<field> WHERE <table2>.<field>=<value>; |
|
用户/权限管理 | 创建用户 | create USER <username>; |
设置密码 | set PASSWORD FOR <username>= PASSWORD("<pwd>"); |
|
赋予权限 (数据库所有表) | GRANT ALL PRIVILEGES ON <database>.* TO <username> IDENTIFIED BY "<pwd>"; |
|
权限生效 | FLUSH PRIVILEGES; |
|
备份与还原数据库 | 备份数据库 | mysqldump -u root -p --databases <databse> > bak.sql |
备份数据表 | mysqldump -u root -p <database> <table> > bak.sql |
|
还原数据库 | mysql -u root -p < bak.sql |
|
还原数据表 | mysql -u root -p < bak.sql |
|
触发器与限制 | 查看限制项 | SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_NAME = '<table>'; |
🔥3.MySQL 查询命令
操作分类 | 操作说明 | 代码示例 |
---|---|---|
基础查询 | 查询所有字段 | SELECT * FROM <table>; |
查询指定字段 | SELECT <field1>, <field2> FROM <table>; |
|
去重查询 | SELECT DISTINCT <field> FROM <table>; |
|
别名查询 | SELECT <field> AS <alias> FROM <table> AS <table_alias>; |
|
条件查询 | 等于条件 | SELECT <field> FROM <table> WHERE <field> = <value>; |
不等于条件 | SELECT <field> FROM <table> WHERE <field> != <value>; |
|
大于/小于条件 | SELECT <field> FROM <table> WHERE <field> > <value>; |
|
范围查询(between) | SELECT <field> FROM <table> WHERE <field> BETWEEN <min> AND <max>; |
|
集合查询(in) | SELECT <field> FROM <table> WHERE <field> IN (<value1>, <value2>); |
|
空值查询 | SELECT <field> FROM <table> WHERE <field> IS NULL; |
|
非空查询 | SELECT <field> FROM <table> WHERE <field> IS NOT NULL; |
|
逻辑与(and) | SELECT <field> FROM <table> WHERE <condition1> AND <condition2>; |
|
逻辑或(or) | SELECT <field> FROM <table> WHERE <condition1> OR <condition2>; |
|
逻辑非(not) | SELECT <field> FROM <table> WHERE NOT <condition>; |
|
模糊查询 | 包含指定字符 | SELECT <field> FROM <table> WHERE <field> LIKE '%<value>%'; |
以指定字符开头 | SELECT <field> FROM <table> WHERE <field> LIKE '<value>%'; |
|
以指定字符结尾 | SELECT <field> FROM <table> WHERE <field> LIKE '%<value>'; |
|
匹配指定长度字符 | SELECT <field> FROM <table> WHERE <field> LIKE '_<value>'; (下划线表示单个字符) |
|
聚合查询 | 统计记录数 | SELECT COUNT(*) FROM <table>; 或 SELECT COUNT(<field>) FROM <table>; |
求和 | SELECT SUM(<field>) FROM <table>; |
|
平均值 | SELECT AVG(<field>) FROM <table>; |
|
最大值 | SELECT MAX(<field>) FROM <table>; |
|
最小值 | SELECT MIN(<field>) FROM <table>; |
|
分组查询 | 基础分组 | SELECT <field1>, COUNT(*) FROM <table> GROUP BY <field1>; |
分组筛选(having) | SELECT <field1>, AVG(<field2>) FROM <table> GROUP BY <field1> HAVING AVG(<field2>) > <value>; |
|
排序查询 | 升序排序 | SELECT <field> FROM <table> ORDER BY <field> ASC; (ASC可省略) |
降序排序 | SELECT <field> FROM <table> ORDER BY <field> DESC; |
|
多字段排序 | SELECT <field1>, <field2> FROM <table> ORDER BY <field1> ASC, <field2> DESC; |
|
分页查询 | 限制查询结果数量 | SELECT <field> FROM <table> LIMIT <num>; (返回前num条记录) |
分页查询(指定起始位置) | SELECT <field> FROM <table> LIMIT <offset>, <num>; (从第offset条开始,返回num条记录,offset从0开始) |
|
连接查询 | 内连接(inner join) | SELECT <t1.field>, <t2.field> FROM <table1> t1 INNER JOIN <table2> t2 ON t1.<field> = t2.<field>; |
左连接(left join) | SELECT <t1.field>, <t2.field> FROM <table1> t1 LEFT JOIN <table2> t2 ON t1.<field> = t2.<field>; |
|
右连接(right join) | SELECT <t1.field>, <t2.field> FROM <table1> t1 RIGHT JOIN <table2> t2 ON t1.<field> = t2.<field>; |
|
全连接(union) | SELECT <field> FROM <table1> UNION SELECT <field> FROM <table2>; (合并两个查询结果,去重) |
|
子查询 | 作为条件的子查询 | SELECT <field> FROM <table> WHERE <field> IN (SELECT <field> FROM <table2> WHERE <condition>); |
作为表的子查询 | SELECT <t1.field>, <t2.avg_field> FROM <table1> t1 JOIN (SELECT <field>, AVG(<value>) AS avg_field FROM <table2> GROUP BY <field>) t2 ON t1.<field> = t2.<field>; |
|
正则表达式查询 | 匹配正则模式 | SELECT <field> FROM <table> WHERE <field> REGEXP '^<pattern>'; (例如:匹配以字母a开头的记录 REGEXP '^a' ) |
🔥4.MySQL 字段属性
属性分类 | 属性名称 | 说明及示例 |
---|---|---|
数据类型 | 整数类型 | 存储整数,包括: - TINYINT :1字节,范围-128127(或0255无符号)- SMALLINT :2字节,范围-32768~32767- INT :4字节,常用整数类型- BIGINT :8字节,存储大整数示例: age INT |
浮点/小数类型 | 存储小数,包括: - FLOAT :4字节单精度浮点数- DOUBLE :8字节双精度浮点数- DECIMAL(M,D) :高精度小数,M为总位数,D为小数位数示例: price DECIMAL(10,2) (最大99999999.99) |
|
字符串类型 | 存储文本,包括: - CHAR(N) :固定长度字符串,N为字符数(1~255)- VARCHAR(N) :可变长度字符串,N为最大字符数(1~65535)- TEXT :长文本(最大65535字节)- LONGTEXT :超长文本(最大4GB)示例: name VARCHAR(50) |
|
日期时间类型 | 存储时间信息,包括: - DATE :日期(YYYY-MM-DD)- TIME :时间(HH:MM:SS)- DATETIME :日期时间(YYYY-MM-DD HH:MM:SS),范围1000-01-01至9999-12-31- TIMESTAMP :时间戳,范围1970-01-01至2038-01-19,受时区影响示例: create_time DATETIME |
|
二进制类型 | 存储二进制数据,包括: - BLOB :二进制大对象(如图片、文件)- LONGBLOB :大型二进制数据示例: file_data BLOB |
|
约束属性 | 主键(PRIMARY KEY) | 唯一标识表中记录,不可重复、不可为NULL,一张表只能有一个主键 示例: id INT PRIMARY KEY 或 联合主键 PRIMARY KEY(id, name) |
自增(AUTO_INCREMENT) | 通常与主键配合,插入时自动生成唯一值(默认从1开始递增) 示例: id INT PRIMARY KEY AUTO_INCREMENT |
|
非空(NOT NULL) | 字段值不可为NULL,必须填写 示例: username VARCHAR(50) NOT NULL |
|
唯一(UNIQUE) | 字段值在表中唯一,允许为NULL(但NULL只允许出现一次) 示例: email VARCHAR(100) UNIQUE |
|
默认值(DEFAULT) | 未指定值时自动使用的默认值 示例: status INT DEFAULT 0 (默认状态为0)、create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP (默认当前时间) |
|
外键(FOREIGN KEY) | 关联另一张表的主键,确保数据一致性 示例: user_id INT, FOREIGN KEY(user_id) REFERENCES users(id) |
|
其他属性 | 注释(COMMENT) | 为字段添加说明文字,增强可读性 示例: age INT COMMENT '用户年龄' |
字符集(CHARACTER SET) | 指定字符串字段的字符集(如utf8、utf8mb4) 示例: name VARCHAR(50) CHARACTER SET utf8mb4 |
|
排序规则(COLLATE) | 字符串比较规则,依赖字符集 示例: name VARCHAR(50) COLLATE utf8mb4_general_ci (不区分大小写) |
🔥5.结束语
🖥️ 通过以上介绍,你应该对MySQL的使用有了基本了解。这些命令和工具是MySQL的使用的基础,熟练掌握它们将极大提高你的工作效率。