MySQL是一种广泛使用的开源关系型数据库管理系统,其丰富的指令集使得开发者能够进行各种数据操作。本文将详细介绍在项目开发中常见的MySQL指令。
1. **数据库管理**:
- **显示数据库**:`SHOW DATABASES;` 这条命令用于列出当前MySQL服务器上所有的数据库。
- **创建数据库**:`CREATE DATABASE db;` 创建一个新的数据库,这里的`db`是数据库的名称。
- **删除数据库**:`DROP DATABASE db;` 删除已存在的数据库,谨慎操作,因为数据会永久丢失。
- **选择数据库**:`USE db;` 用于切换到指定的数据库进行后续操作。
2. **表的操作**:
- **创建表**:`CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), birth DATE);` 创建一个名为`mytable`的表,包含`name`(20个字符的VARCHAR类型)、`sex`(1个字符的CHAR类型)和`birth`(日期类型的DATE)三列。
- **删除表**:`DROP TABLE mytable;` 删除名为`mytable`的表。
- **显示表的内容**:`SHOW TABLES;` 显示当前数据库中的所有表名。
- **显示表的结构**:`DESCRIBE mytable;` 查看`mytable`表的列信息,包括列名、数据类型、是否允许为空等。
3. **数据操作**:
- **添加列**:`ALTER TABLE yourtable ADD name VARCHAR(20) NOT NULL;` 在`yourtable`表中增加一个名为`name`的列,非空。
- **删除列**:`ALTER TABLE yourtable DROP name;` 从`yourtable`表中移除`name`列。
- **插入记录**:`INSERT INTO mytable VALUES ('summer', 'm', '1983-08-24');` 向`mytable`表中插入一条记录。
- **删除记录**:`DELETE FROM mytable WHERE name='summer';` 删除满足条件(`name='summer'`)的所有记录。
- **修改记录**:`UPDATE mytable SET sex='vm' WHERE name='summer';` 更新`mytable`表中`name='summer'`的记录,将其`sex`字段设置为`'vm'`。
- **插入多条记录**:`INSERT INTO mytable SELECT * FROM yourtable;` 从`yourtable`表中复制所有记录到`mytable`表。
4. **查询操作**:
- **列名显示**:可以使用`AS`关键字或者直接指定别名来显示列名。
- **精确查找**:包括`IN`、`BETWEEN...AND`、比较测试符(如`=`、`<>`、`<`、`>`等)、`LIKE`和`[]`匹配检查符。
- `IN`用于指定一个范围,例如`WHERE native IN ('湖南', '四川')`。
- `BETWEEN...AND`用于查询介于两者之间的数据,例如`WHERE age BETWEEN 20 AND 30`。
- `LIKE`用于部分匹配,如`WHERE name LIKE '李%'`找到所有以"李"开头的名字。
- `[]`匹配检查符可以表示范围或逻辑或,例如`WHERE cno LIKE '[A-C]%'`找到以"A"、"B"或"C"开头的课程编号。
5. **聚合函数**:
- `COUNT()`用于计算指定列的记录总数,如`SELECT COUNT(*) FROM students;`。
- `AVG(列)`用于计算指定列的平均值,例如`SELECT AVG(mark) FROM grades WHERE cno='B2';`。
- `MAX(列)`和`MIN(列)`分别用于找出指定列的最大值和最小值。
6. **其他常用的MySQL语句**:
- **连接MySQL**:在命令行或开发环境中使用特定的MySQL客户端工具(如`mysql`命令行客户端)进行连接,通常涉及`mysql -u username -p`命令,然后输入密码进行连接。
- **更新数据**:`UPDATE table SET column=value WHERE condition;` 更新表中满足条件的记录。
- **选择特定列**:`SELECT column1, column2 FROM table;` 仅选择指定列。
- **排序查询**:`SELECT * FROM table ORDER BY column ASC/DESC;` 对查询结果进行升序或降序排序。
- **分组查询**:`GROUP BY`用于根据一列或多列进行数据分组,常与聚合函数结合使用。
- **联接查询**:`JOIN`操作用于合并多个表的数据,如`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`等。
- **子查询**:在查询中嵌套查询,用于获取满足特定条件的子集。
这些只是MySQL指令的一部分,实际开发中还会有更多复杂和高级的用法,如视图、存储过程、触发器、事务处理等。理解并熟练掌握这些基本指令是开发过程中必不可少的技能。