入门
停止服务器: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"表中的应用示例:
-
UPPER函数:将字符串字段转换为大写。
sqlSELECT UPPER(name) FROM users;
-
LOWER函数:将字符串字段转换为小写。
sqlSELECT LOWER(name) FROM users;
-
LENGTH函数:返回字符串字段的字符数。
sqlSELECT name, LENGTH(name) FROM users;
-
CONCAT函数:将多个字符串字段连接为一个字符串。
sqlSELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
-
SUBSTRING函数:返回字符串字段的子字符串。
sqlSELECT SUBSTRING(email, 1, 5) FROM users;
-
TRIM函数:去除字符串字段的前导和尾随空格。
sqlSELECT TRIM(name) FROM users;
这些函数可以根据实际需求进行组合和扩展,以满足对字段的特定处理和计算要求。请根据具体情况选择适当的函数和参数。
分组函数
分组函数是一种用于对数据进行分组计算的函数。它可以对一组数据进行聚合操作,并返回一个单一的结果。常见的分组函数包括 COUNT、SUM、AVG、MIN 和 MAX。
在 "users" 表中,你可以使用分组函数对数据进行统计和计算。例如,你可以使用 COUNT 函数来计算表中的记录数量,使用 SUM 函数来计算某个列的总和,使用 AVG 函数来计算某个列的平均值,使用 MIN 函数来找到某个列的最小值,使用 MAX 函数来找到某个列的最大值等等。
以下是一些使用分组函数的示例查询:
-
计算 "users" 表中的记录数量:
sqlSELECT COUNT(*) FROM users;
-
计算 "users" 表中年龄列的总和:
sqlSELECT SUM(age) FROM users;
-
计算 "users" 表中年龄列的平均值:
sqlSELECT AVG(age) FROM users;
-
找到 "users" 表中年龄列的最小值:
sqlSELECT MIN(age) FROM users;
-
找到 "users" 表中年龄列的最大值:
sqlSELECT MAX(age) FROM users;
这些示例只是分组函数的一小部分应用场景,你可以根据具体需求使用适当的分组函数来实现更复杂的数据分析和计算。
小练习1
- 创建一个管理员工信息的数据库
- 添加一张表,要求有员工的id、姓名、工资
- 添加五个员工信息
- 查询工资在一万以上两万一下的员工的信息
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日
条件查询 并排序