【mysql基础】mysql 四种类型语句常见操作

SQL语句常用的主要分为如下四种

  • DDL (Data Definition Language) 数据定义语言
    用于定义或修改 数据库 中的对象,如:表、索引、视图、数据库、存储过程、触发器、自定义函数等。

  • DML (Data Manipulation Language) 数据操作语言
    用于对数据库表中的数据进行操作,如插入,更新和删除。

  • DCL (Data Control Language) 数据控制语言
    用来设置或更改数据库事务、保存点操作、授权操作(用户或角色授权,权限回收,创建角色,删除角色等)、锁表、锁实例等。

  • DQL (Data Query Language) 数据查询语言
    用来查询数据库内的数据,如查询数据、合并多个select语句的结果集、子查询。

 

接下来依次看下常见操作

一. DDL (Data Definition Language)

1. 创建数据库和表

创建库(CREATE DATABASE)

CREATE DATABASE database_name

## 进入库(USE)

USE database_name

## 查看表(SHOW)

SHOW TABLES;
SHOW TABLES FROM database_name;


## 创建表(CREATE TABLE)

`CREATE TABLE table_name (column1_name INT, column2_name VARCHAR(50), column3_name VARCHAR(50));`

 

2. 修改列(ALTER TABLE)


### 修改列(CHANGE COLUMN)

ALTER TABLE table_name CHANGE COLUMN old_col_name new_col_name INT AUTO_INCREMENT PRIMARY KEY


mysql> ALTER TABLE students
    -> CHANGE COLUMN id id INT AUTO_INCREMENT PRIMARY KEY;



### 增加列(ADD COLUMN)

ALTER TABLE table_name ADD COLUMN new_col1_name TEXT , ADD COLUMN new_col2_name VARCHAR(255);



### 删除列 DROP

ALTER TABLE table_name DROP COLUMN col1_name, DROP COLUMN col2_name

mysql> ALTER TABLE students
    -> DROP COLUMN age;

 

3. 删除库表

DROP TABLE table_name;


# 慎用
DROP DATABASE database_name;

 

二. DML (Data Manipulation Language)

1. 修改插入数据

## 插入数据(INSERT INTO)

INSERT INTO table_name (col1_name, col2_name, col4_name) VALUES (col1_value, col2_value, col4_value);

mysql> INSERT INTO students 
	-> (name, birthday, address, class_id, student_id) 
	-> VALUES('xiaoming', '1996-07-01', '江苏省苏州市相城区', 3, 080301);


## 修改某些列(UPDATE SET)

UPDATE table_name SET col1_name = 'new_value' WHRE col2_name = 'xxx';

若需要修改多列,则用逗号分开列表即可。  
mysql> UPDATE class SET grade_id = 1, class_teacher = '吴老师' WHERE class_id = 3;
Query OK, 1 row affected (0.00 sec)

 

2. 删除数据

要清空表中的数据,可以使用以下SQL语句:

TRUNCATE TABLE table_name;

### 删除数据
DELETE FROM table where condition


mysql> DELETE FROM students
    -> WHERE class_id = 
    -> (SELECT c.class_id FROM class c WHERE class_teacher = '徐老师');

 
注意:

TRUNCATE 语句会删除表中的所有数据行,但保留表的结构、索引和约束。对比DELETE语句逐行删除数据,使用TRUNCATE语句更为高效,因为它直接删除整个数据表中的所有行,而不是逐行删除。
 
此外,TRUNCATE还会重置自增列的值,因此表中的自增列将从起始值重新开始。

 

3. 批量导入数据

LOAD DATA INFILE '/path/to/employees.csv'
INTO TABLE employees
(col2, col4, col5)
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
  • /path/to/employees.csv 是包含员工数据的CSV文件路径。
  • employees 是要导入数据的表名。
  • (col2, col4, col5):指定列导入
  • FIELDS TERMINATED BY ',' 指定每个字段之间使用逗号分隔。
  • ENCLOSED BY '"' 表示字段以双引号括起来。
  • LINES TERMINATED BY '\n' 表示行分隔符为换行符。
  • IGNORE 1 ROWS 表示忽略文件中的第一行(通常是标题行)。

mysql> LOAD DATA INFILE '/var/lib/mysql-files/sql_data.txt' 
    -> REPLACE INTO TABLE students 
    -> FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'  IGNORE 1 LINES
    -> (`name`, birthday, class_id, student_id, address);

 

三. DQL (Data Query Language) 数据查询语言


## 表关联查询(JOIN USING)

`JOIN ... USING``USING`用于两个表相同列值相同查询。并使用`CONCAT(str1, str2, ...)`进行字符串拼接


mysql> SELECT name, birthday, address, 
    -> CONCAT(grade_id, '年级', class_name) AS class_info
    -> FROM students 
    -> JOIN class USING(class_id)
    -> WHERE class_teacher = '吴老师';


排序
###默认使用升序
mysql> SELECT * FROM students ORDER BY birthday;


### 降序
mysql> SELECT * FROM students ORDER BY birthday DESC;


## 限制(LIMIT)
mysql> SELECT * FROM students LIMIT 2;

### 跳过限制个数

LIMIT(m, n),跳过m个,展示后面n个。

mysql> SELECT * FROM students LIMIT 2, 1;


### 模糊查询

使用`LIKE``%`进行模糊匹配


mysql> SELECT `name`, birthday, address
    -> FROM students
    -> WHERE address LIKE '%江苏%';


### 交集并集查询

1. 使用`AND`进行交集查询
mysql> SELECT `name`, birthday, address
    -> FROM students 
    -> WHERE address LIKE '%江苏%' AND class_id = 1;

2. 使用`OR`进行并集查询
mysql> SELECT `name`, birthday, address
    -> FROM students 
    -> WHERE `name` LIKE '%xiao%' OR `name` LIKE '%小%';


### 日期处理
函数:月`MONTHNAME(col_name)`,`DAYOFMONTH(col_name)`,年`YEAR(col_name)`

mysql> SELECT CONCAT(MONTHNAME(birthday), ' ',
    -> DAYOFMONTH(birthday), ',',
    -> YEAR(birthday)) AS student_birthday
    -> FROM students
    -> WHERE `name` = 'xiaoming';
+------------------+
| student_birthday |
+------------------+
| July 1,1996      |
+------------------+



函数`DATE_FORMAT(col_name, "%M %d, %Y")`
mysql> SELECT DATE_FORMAT(birthday, "%M %d, %Y")
    -> AS 'student_birth_date' 
    -> FROM students
    -> WHERE `name` = 'xiaohong';

 

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值