MySql的数据-增删改查

MySql的数据-增删改查

新增 INSERT

注意点:

要根据对应的约束规则:

  • NOT NULL 字段必须传值(username、password)

  • UNIQUE 字段不能重复(用户名 / 邮箱 / 手机号唯一)

  • 自增主键 id 可省略,MySQL 自动生成

  • 带 DEFAULT 默认值字段不传会自动填充默认值

字符串必须用单引号 ' ',日期同理

INSERT INTO users (username, password, email, phone)
VALUES ('zhangsan', '123456abc', 'zhangsan@163.com', '13800138000');
INSERT INTO users (id, username, password, email, phone, created_at, status)
VALUES (NULL, 'lisi', 'lisi666', NULL, '13900139000', NULL, 1);
INSERT INTO users (username, password, email, phone, status)
VALUES
('wangwu', 'ww123', 'wangwu@qq.com', '13700137000', 1),
('zhaoliu', 'zl456', NULL, NULL, 0); -- status=0 禁用用户

查询 SELECT

  1. 基础语法:SELECT 列(字段) FROM 表 WHERE 条件 GROUP BY HAVING ORDER BY LIMIT

  2. 关键字优先级:WHERE > GROUP BY > HAVING > ORDER BY > LIMIT

  3. 通配符 * 代表查询全部字段,生产环境禁止使用,需指定字段

  4. 模糊查询 LIKE、逻辑运算符 AND/OR/NOT、判空 IS NULL / IS NOT NULL

-- 查询所有正常用户的用户名、手机、邮箱
SELECT id, username, phone, email, status FROM users WHERE status = 1;
-- 查询禁用的用户 status=0
SELECT username FROM users WHERE status = 0;

-- 查询手机号为null的用户
SELECT username FROM users WHERE phone IS NULL;

-- 查询邮箱不为空的用户
SELECT username FROM users WHERE email IS NOT NULL;
% 任意多个字符,_ 单个字符  

-- 查询用户名以zhang开头的用户
SELECT * FROM users WHERE username LIKE 'zhang%';

-- 查询邮箱是163邮箱的用户
SELECT username, email FROM users WHERE email LIKE '%@163.com';
-- 正常用户 且 手机号存在
SELECT username FROM users WHERE status=1 AND phone IS NOT NULL;

-- 用户名为zhangsan 或者 lisi
SELECT username FROM users WHERE username='zhangsan' OR username='lisi';
--ASC 升序(默认),DESC 降序

-- 按创建时间倒序,最新用户在前
SELECT id, username, created_at FROM users ORDER BY created_at DESC;
-- LIMIT 偏移量, 每页条数,偏移量从 0 开始

-- 第1页,每页2条:0,2
SELECT * FROM users LIMIT 0,2;
-- 第2页,每页2条:2,2
SELECT * FROM users LIMIT 2,2;
-- 统计总用户数
SELECT COUNT(id) AS total_user FROM users;
-- 统计正常用户数量
SELECT COUNT(id) AS active_user FROM users WHERE status=1;
-- 去重查询用户状态
SELECT DISTINCT status FROM users;

查询 表信息:DESCRIBE / SHOW

DESCRIBE users;

替代语法
SHOW COLUMNS FROM users;
SHOW TABLES;
SHOW CREATE TABLE users;

修改字段 UPDATE

  1. 必加 WHERE 条件!不加条件会更新全表所有数据(高危操作)

  2. 支持同时修改多个字段,逗号分隔

  3. 唯一索引字段修改不能和现有数据重复

-- 将id=1的用户密码修改
UPDATE users SET password = 'newpwd123' WHERE id = 1;
-- 修改手机号、邮箱、启用账号
UPDATE users SET phone='13600136000', email='new@qq.com', status=1 WHERE username='zhaoliu';
-- 将所有无邮箱的用户状态改为禁用
UPDATE users SET status=0 WHERE email IS NULL;

修改表 ALTER TABLE

ALTER TABLE users ADD COLUMN phone VARCHAR(20);
ALTER TABLE users DROP COLUMN age;
ALTER TABLE users MODIFY COLUMN username VARCHAR(100);
ALTER TABLE users CHANGE oldname newname VARCHAR(50);

删除 DELETE

  1. DELETE:删除表中数据,自增主键不重置,支持回滚(InnoDB 事务)

  2. TRUNCATE:清空整张表所有数据,自增重置,不记录日志、不可回滚

  3. 必须带 WHERE,否则清空全表

-- 删除id=4的用户
DELETE FROM users WHERE id = 4;
-- 删除所有禁用的用户
DELETE FROM users WHERE status = 0;
-- 慎用!清空整张users表,无法回滚
TRUNCATE TABLE users;
-- 1. 新增用户
INSERT INTO users(username,password,phone) VALUES ('testuser','test123','13500135000');

-- 2. 查询新增用户
SELECT id,username FROM users WHERE username='testuser';

-- 3. 修改邮箱
UPDATE users SET email='test@163.com' WHERE username='testuser';

-- 4. 查询验证修改结果
SELECT * FROM users WHERE username='testuser';

-- 5. 删除测试用户
DELETE FROM users WHERE username='testuser';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值