MySQL常用操作

入门

停止服务器:net stop mysql80

登录:mysql -uroot -p

密码:123456

文章目录

基本操作

展示数据库:show databases;

创建新数据库:create database name;

创建表之前要先use 一个数据库

创建表:

sql 复制代码
CREATE TABLE users (    
	id INT PRIMARY KEY AUTO_INCREMENT,    
    name  VARCHAR(50),    
    age INT,    
    email VARCHAR(100) 
);

展示表结构:

sql 复制代码
DESCRIBE users;
desc users;

添加信息:

sql 复制代码
INSERT INTO users (name, age, email)
VALUES ('Alice', 25, 'alice@example.com');

添加多条信息:

sql 复制代码
INSERT INTO users (name, age, email) VALUES
('John', 30, 'john@example.com'),
('Emily', 28, 'emily@example.com'),
('Michael', 35, 'michael@example.com'),
('Sarah', 32, 'sarah@example.com');

展示表信息:

sql 复制代码
SELECT * FROM users;

删除表信息:

sql 复制代码
DELETE FROM users WHERE name = 'Alice';

修改表信息:

sql 复制代码
UPDATE users SET name = 'world' WHERE id = 2;

查询表信息:

sql 复制代码
SELECT *FROM users
    -> WHERE id=2
    -> ;

给表中信息起别名:

sql 复制代码
SELECT id, name AS 姓名, age AS 年龄, email AS 电子邮件 FROM users;

让表中数据按年龄升序排列:

sql 复制代码
SELECT * FROM users
ORDER BY age ASC;

降序使用DESC

条件查询,只显示年龄大于26岁的人员的信息:

sql 复制代码
SELECT * FROM users
WHERE age > 26;

等于条件(Equal):使用 "=" 运算符来筛选等于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age = 26;

不等于条件(Not Equal):使用 "<>" 或 "!=" 运算符来筛选不等于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age <> 26;

大于条件(Greater Than):使用 ">" 运算符来筛选大于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age > 26;

小于条件(Less Than):使用 "<" 运算符来筛选小于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age < 26;

大于等于条件(Greater Than or Equal To):使用 ">=" 运算符来筛选大于等于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age >= 26;

小于等于条件(Less Than or Equal To):使用 "<=" 运算符来筛选小于等于指定值的数据。

sql 复制代码
SELECT * FROM users
WHERE age <= 26;

这些只是条件查询的一些常见示例,你可以根据实际需求进行组合和扩展。在已有的 "users" 表中,你可以尝试使用上述语句来体验不同的条件查询。

模糊查询:

查询邮箱带有example的人员的信息

sql 复制代码
SELECT * FROM users WHERE email LIKE '%example%';

如果要查找名字以 "John" 开头的用户,可以使用以下查询:

sql 复制代码
SELECT * FROM users WHERE name LIKE 'John%';

如果要查找名字以 "John" 结尾的用户,可以使用以下查询:

sql 复制代码
SELECT * FROM users WHERE name LIKE '%John';

增加字段:

向users中增加一个工资字段

sql 复制代码
ALTER TABLE users ADD salary DECIMAL(10,2);

多个字段排序:

sql 复制代码
SELECT *FROM users ORDER BY salary DESC,age ASC;

"根据字段位置排序"是指根据数据库表中某个特定字段的位置来进行排序。在SQL中,可以使用ORDER BY子句对查询结果进行排序。默认情况下,ORDER BY子句按照字段的升序(从小到大)进行排序。

例如,假设有一个名为"users"的表,其中包含以下字段:id、name和age。要按照"age"字段的位置进行排序,可以使用以下SQL查询语句:

sql 复制代码
SELECT * FROM users ORDER BY 3;

这里的"3"表示按照第三个字段"age"进行排序。查询结果将按照"age"字段的值从小到大进行排序。

请注意,根据字段位置排序可能不太可靠,特别是在表结构发生变化时。最好的做法是使用字段名称来进行排序,以确保准确性和可读性。例如,可以使用以下语句按照"age"字段进行排序:

sql 复制代码
SELECT * FROM users ORDER BY age;

函数

单行处理函数

在"users"表中,常见的单行处理函数可以用于对特定字段进行操作和计算,并在查询结果中返回处理后的值。以下是一些常见的单行处理函数及其在"users"表中的应用示例:

  1. UPPER函数:将字符串字段转换为大写。

    sql 复制代码
    SELECT UPPER(name) FROM users;
  2. LOWER函数:将字符串字段转换为小写。

    sql 复制代码
    SELECT LOWER(name) FROM users;
  3. LENGTH函数:返回字符串字段的字符数。

    sql 复制代码
    SELECT name, LENGTH(name) FROM users;
  4. CONCAT函数:将多个字符串字段连接为一个字符串。

    sql 复制代码
    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
  5. SUBSTRING函数:返回字符串字段的子字符串。

    sql 复制代码
    SELECT SUBSTRING(email, 1, 5) FROM users;
  6. TRIM函数:去除字符串字段的前导和尾随空格。

    sql 复制代码
    SELECT TRIM(name) FROM users;

这些函数可以根据实际需求进行组合和扩展,以满足对字段的特定处理和计算要求。请根据具体情况选择适当的函数和参数。

分组函数

分组函数是一种用于对数据进行分组计算的函数。它可以对一组数据进行聚合操作,并返回一个单一的结果。常见的分组函数包括 COUNT、SUM、AVG、MIN 和 MAX。

在 "users" 表中,你可以使用分组函数对数据进行统计和计算。例如,你可以使用 COUNT 函数来计算表中的记录数量,使用 SUM 函数来计算某个列的总和,使用 AVG 函数来计算某个列的平均值,使用 MIN 函数来找到某个列的最小值,使用 MAX 函数来找到某个列的最大值等等。

以下是一些使用分组函数的示例查询:

  1. 计算 "users" 表中的记录数量:

    sql 复制代码
    SELECT COUNT(*) FROM users;
  2. 计算 "users" 表中年龄列的总和:

    sql 复制代码
    SELECT SUM(age) FROM users;
  3. 计算 "users" 表中年龄列的平均值:

    sql 复制代码
    SELECT AVG(age) FROM users;
  4. 找到 "users" 表中年龄列的最小值:

    sql 复制代码
    SELECT MIN(age) FROM users;
  5. 找到 "users" 表中年龄列的最大值:

    sql 复制代码
    SELECT MAX(age) FROM users;

这些示例只是分组函数的一小部分应用场景,你可以根据具体需求使用适当的分组函数来实现更复杂的数据分析和计算。

小练习1

  1. 创建一个管理员工信息的数据库
  2. 添加一张表,要求有员工的id、姓名、工资
  3. 添加五个员工信息
  4. 查询工资在一万以上两万一下的员工的信息
sql 复制代码
SELECT 
    COUNT(CASE WHEN age BETWEEN 20 AND 30 THEN 1 END) AS age_20_to_30,
    COUNT(CASE WHEN age > 30 THEN 1 END) AS age_above_30
FROM 
    users;

解释THEN 1 END 是什么意思

高级操作一

去重查询

SELECT count(distinct 职位)FROM employees;

关键字:distinct

小项目

sql 复制代码
-- 创建第二张表
CREATE TABLE t_att (
  attribute INT PRIMARY KEY,
  content VARCHAR(30)
);
-- 创建第一张表
CREATE TABLE t_list (
  ID INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(30),
  deadline DATE,
  attribute INT,
  FOREIGN KEY(attribute) REFERENCES t_att(attribute)
);

生日表

使用int代表生日 1010表示10月10日

条件查询 并排序

相关推荐
qq_5298353525 分钟前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New3 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6753 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231115 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白5 小时前
PostgreSQL:更新字段慢
数据库·postgresql