# mysql基本操作

  • 展示查询数据库
 show databases;//展示查询数据库
  • 创建数据库,数据库表
    • 可视化界面
    • sql语句
CREATE TABLE user(
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`username` VARCHAR(50) NOT NULL DEFAULT '',
	`age` TINYINT UNSIGNED NOT NULL DEFAULT 0,
	`gender` ENUM('男', '女') NOT NULL DEFAULT '男',
	PRIMARY KEY (`id`),
	INDEX uname(`username`),
	INDEX age(`age`),
	INDEX gender(`gender`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  • 查看数据库下的表,--sql语句中的注释
use myblog;
-- 使用myblog数据库
show tables;
  • 添加数据
 insert into users(username,`password`,realname)values('zhangsan','123','张三')
 -- password是关键字,需要加``中间,其他的可以不加
id username password realname
1 zhangsan 123 张三
  • 批量添加
 INSERT INTO `user` (`username`, `age`, `gender`) 
		VALUES ('reci', 6, '女'),('zMouse', 35, '男');
  • 查询
 SELECT username,age,gender FROM user;
 SELECT * FROM user;	
  • 查询条件
 SELECT * FROM user WHERE gender='男';
 SELECT * FROM user WHERE gender='男' AND age<20;
 -- BETWEEN
  SELECT * FROM user WHERE age BETWEEN 1 AND 30;
 
 -- LIKE ,一般需要配合指定的通配符来运行:% -> 任意一个或多个字符,_ -> 一个任意字符
  SELECT * FROM user WHERE username LIKE 'o%';
  SELECT * FROM user WHERE username LIKE '%o';
  SELECT * FROM user WHERE username LIKE '%o%';
  SELECT * FROM user WHERE username LIKE '__o%';
 
 -- IN,范围选择
  SELECT * FROM user WHERE username='zMouse' OR username='reci';
  SELECT * FROM user WHERE username IN ('zMouse','reci');
 
 -- BETWEEN、LIKE、IN 都有对应的 NOT 
  SELECT * FROM user WHERE username NOT IN ('zMouse','reci');
 
 -- 去重
  SELECT DISTINCT gender FROM user;				-- 如果gender值完全一样的话,会被去重
  SELECT DISTINCT gender,username FROM user;	-- 如果gender和username值完全一样的话,会被去重
 -- 正则
  SELECT * FROM user WHERE age REGEXP '3|1';
  SELECT * FROM user WHERE username REGEXP '^o';
-- 排序
  SELECT * FROM user ORDER BY age DESC, id DESC;
-- 分组
  SELECT gender, count(gender) as count FROM user GROUP BY gender;
-- 限制偏移
  SELECT * FROM user LIMIT 2 OFFSET 1;
  SELECT * FROM user LIMIT 1,2;
-- 函数
  SELECT * FROM user WHERE username='zmouse';	-- 当前数据校对使用的区分大小写的模式
  SELECT * FROM user WHERE UCASE(username)=UCASE('zmouse');
-- <>不等于
 select * from users where state <>"0";
 -- state不等于0的时候
  • 更新
 update users set `password`='1234';
 -- users表中所有密码重置为1234
 update users set `password`='123456' where username='apple1';
 --users表中username为apple1的密码改为123456
 SET SQL_SAFE_UPDATES=0;
 -- 当因更新安全模式出现警告时可以使用此来解决无法更新的问题
  • 删除
 DELETE FROM `user`;	-- 删除也好格外小心
 DELETE FROM `user` WHERE `id`=8;
 -- 用一个字段state来判断是否应展示,1展示,2表示隐藏
 update users set state='0' where username='apple1';
 -- 软删除,数据库中还存在,可恢复

truncate删除的表自增长的字段会重新开始计算,而delete不会

truncate users
-- 多表查询

 SELECT * FROM user,message;

 SELECT * FROM user,message WHERE user.id=message.uid;

 SELECT * FROM user JOIN message ON user.id=message.uid;	-- 同上


 SELECT * FROM user LEFT JOIN message ON user.id=message.uid;
 SELECT * FROM user RIGHT JOIN message ON user.id=message.uid;



 SELECT USER.id as uid, user.username, USER.age, USER.gender,
  message.id as message_id, message.content FROM user 
  LEFT JOIN message ON user.id=message.uid;
最后更新: 11/20/2020, 11:20:17 AM