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. 增(INSERT)
sql
-- 单条插入 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. 删(DELETE)
sql
-- 按条件删除(推荐) DELETE FROM 表名 WHERE 条件; DELETE FROM users WHERE id = 1; -- 清空整张表(危险!) DELETE FROM users; TRUNCATE TABLE users; -- 更快,重置自增ID3. 改(UPDATE)
sql
-- 按条件修改(推荐) UPDATE 表名 SET 列1=新值1, 列2=新值2 WHERE 条件; UPDATE users SET password='000000' WHERE id=1; -- 批量修改 UPDATE users SET password='000000' WHERE name='zhangsan';4. 查(SELECT)
sql
-- 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;四、多表查询(JOIN)
sql
-- 示例表 -- 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;五、常用约束
sql
CREATE 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;七、事务(保证数据安全)
sql
START TRANSACTION; -- 开启事务 UPDATE users SET password='xxx' WHERE id=1; -- 可以在这里检查是否正确 COMMIT; -- 提交事务(永久生效) ROLLBACK; -- 回滚事务(撤销所有操作)