mysql数据库关于表的基础知识

张开发
2026/4/20 19:52:44 15 分钟阅读
mysql数据库关于表的基础知识
一、数据库操作sql-- 1. 创建数据库 CREATE DATABASE 数据库名; CREATE DATABASE school; -- 2. 删除数据库 DROP DATABASE 数据库名; DROP DATABASE school; -- 3. 切换到指定数据库 USE 数据库名; USE school; -- 4. 查看当前所有数据库 SHOW DATABASES;二、表操作sql-- 1. 创建表 CREATE TABLE 表名 ( 列名1 数据类型 [约束], 列名2 数据类型 [约束], ... ); -- 示例创建 users 表 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增 name VARCHAR(50) NOT NULL, -- 非空字符串 password VARCHAR(50) NOT NULL, age INT, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 2. 删除表 DROP TABLE 表名; DROP TABLE users; -- 3. 查看表结构 DESC 表名; DESC users; -- 4. 修改表名 ALTER TABLE 旧表名 RENAME TO 新表名; ALTER TABLE users RENAME TO user_info; -- 5. 添加列 ALTER TABLE 表名 ADD 列名 数据类型; ALTER TABLE users ADD email VARCHAR(100); -- 6. 修改列 ALTER TABLE 表名 MODIFY 列名 新数据类型; ALTER TABLE users MODIFY age TINYINT; -- 7. 删除列 ALTER TABLE 表名 DROP 列名; ALTER TABLE users DROP email;三、数据操作增删改查1. 增INSERTsql-- 单条插入 INSERT INTO 表名(列1, 列2, ...) VALUES(值1, 值2, ...); INSERT INTO users(name, password) VALUES(zhangsan, 123456); -- 批量插入 INSERT INTO users(name, password) VALUES (zhangsan, 123456), (lisi, 654321), (wangwu, 111111);2. 删DELETEsql-- 按条件删除推荐 DELETE FROM 表名 WHERE 条件; DELETE FROM users WHERE id 1; -- 清空整张表危险 DELETE FROM users; TRUNCATE TABLE users; -- 更快重置自增ID3. 改UPDATEsql-- 按条件修改推荐 UPDATE 表名 SET 列1新值1, 列2新值2 WHERE 条件; UPDATE users SET password000000 WHERE id1; -- 批量修改 UPDATE users SET password000000 WHERE namezhangsan;4. 查SELECTsql-- 1. 查询所有列 SELECT * FROM 表名; SELECT * FROM users; -- 2. 查询指定列 SELECT 列1, 列2 FROM 表名; SELECT id, name FROM users; -- 3. 条件查询 WHERE SELECT * FROM users WHERE id 1; SELECT * FROM users WHERE age 18; SELECT * FROM users WHERE name LIKE %zhang%; -- 模糊查询 -- 4. 排序 ORDER BY SELECT * FROM users ORDER BY age ASC; -- 升序 SELECT * FROM users ORDER BY age DESC; -- 降序 -- 5. 分页 LIMIT SELECT * FROM users LIMIT 0, 10; -- 第1页10条 SELECT * FROM users LIMIT 10 OFFSET 10; -- 第2页10条 -- 6. 聚合函数 SELECT COUNT(*) FROM users; -- 总条数 SELECT MAX(age) FROM users; -- 最大年龄 SELECT MIN(age) FROM users; -- 最小年龄 SELECT AVG(age) FROM users; -- 平均年龄 SELECT SUM(age) FROM users; -- 年龄总和 -- 7. 分组 GROUP BY SELECT age, COUNT(*) FROM users GROUP BY age; -- 8. 分组后过滤 HAVING SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) 1;四、多表查询JOINsql-- 示例表 -- users(id, name) -- orders(id, user_id, amount) -- 1. 内连接 INNER JOIN只显示两边匹配的数据 SELECT * FROM users u INNER JOIN orders o ON u.id o.user_id; -- 2. 左连接 LEFT JOIN显示左表所有数据右表匹配不到显示 NULL SELECT * FROM users u LEFT JOIN orders o ON u.id o.user_id; -- 3. 右连接 RIGHT JOIN显示右表所有数据左表匹配不到显示 NULL SELECT * FROM users u RIGHT JOIN orders o ON u.id o.user_id;五、常用约束sqlCREATE TABLE users ( id INT PRIMARY KEY, -- 主键唯一且非空 name VARCHAR(50) NOT NULL, -- 非空 phone VARCHAR(11) UNIQUE, -- 唯一 age INT CHECK (age 0), -- 检查约束MySQL 8.0支持 gender VARCHAR(5) DEFAULT 男, -- 默认值 FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键 );六、常用函数sql-- 字符串函数 SELECT CONCAT(hello, world); -- 拼接 SELECT LENGTH(zhangsan); -- 长度 SELECT UPPER(zhangsan); -- 转大写 SELECT LOWER(ZHANGSAN); -- 转小写 -- 日期函数 SELECT NOW(); -- 当前时间 SELECT CURDATE(); -- 当前日期 SELECT YEAR(NOW()); -- 年 SELECT MONTH(NOW()); -- 月 -- 条件函数 SELECT IF(age 18, 成年, 未成年) FROM users; SELECT CASE age WHEN 18 THEN 成年 ELSE 未成年 END FROM users;七、事务保证数据安全sqlSTART TRANSACTION; -- 开启事务 UPDATE users SET passwordxxx WHERE id1; -- 可以在这里检查是否正确 COMMIT; -- 提交事务永久生效 ROLLBACK; -- 回滚事务撤销所有操作

更多文章