01 链接mysql数据库
第一步 widow+R打开终端: 输入mysql -u root -p
第二步 再输入密码
02 查看所有的库
show databases; 需要加分号
03 打开可视化面板,通过在文件夹中输入命令执行数据库
打开文件的方式:
04 在文件中创建数据库:
CREATE DATABASE `xiaoman` 鼠标右键点击执行
如果数据库存在了又创建会报错:这时候可以使用如下命令创建
CREATE DATABASE IF NOT EXISTS `xiaomi`
意思就是如果不存在就创建数据库 存在就什么都不做了
05 创建数据库设置字符集
DEFAULT CHARACTER SET = "utf8mb4"
06 创建表: 字段 : 类型 属性
CREATE TABLE `user` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,// int类型 不为空 自增长 唯一主键
name VARCHAR(100) COMMENT '名字', // 字符串类型
age INT COMMENT '年龄',
address VARCHAR(200) COMMENT ‘地址’,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP // 时间搓 自动创建时间
) COMMENT ‘用户表’
INT:数字类型 VARCHAR:字符串 NOT NULL:不为空
AUTO_INCREMENT:自动增长 PRIMARY KEY:主键
COMMENT:注释 TIMESTAMP:时间戳 DEFAULT CURRENT_TIMESTAMP:自动创建时间
07 修改表名 ALTER改变 RENAME 重名
ALTER TABLE `user` RENAME `user2`
08 增加字段 ADD COLUMN hobby;
ALTER TABLE `user` ADD COLUMN `hobby` VARCHAR(200) COMMENT '爱好'
09 删除字段 DROP
ALTER TABLE `user` DROP `hobby`;
10 修改字段的类型 MODIFY
ALTER TABLE `user` MODIFY `age` VARCHAR(100) COMMENT '年龄'
11 新增删除支持连贯写法
ALTER TABLE `user` DROP `hobby`,DEOP `address` ;
12 查询单个列 id
SELECT id FROM `user`;
13 查询多个列 id name
SELECT id,name FROM `user`;
14 查询所有列 *
SELECT * FROM `user`;
15 重命名列的名字 as
SELECT id as user_id FROM `user`;
16 排序 按id进行降序 ORDER BY id DESC (ASE升 DESC降)
SELECT * FROM `user` ORDER BY id DESC;
17 限制查询结果LIMIT 开始行0 数量3 从0开始的3条数据
SELECT * FROM `USER` LIMIT 0,3;
18 条件查询 WHERE
SELECT * FROM `user` WHERE name = '小曼';
19 联合查询 WHERE + AND
SELECT * FROM `user` WHERE name = '小曼' AND age < 20;
20 或查询 OR
SELECT * FROM `user` WHERE name = '小曼' OR age < 20;
21 模糊查询 LIKE %x
SELECT * FROM `user` WHERE name LIKE '%曼'; 以曼结尾的
SELECT * FROM `user` WHERE name LIKE '%曼%'; 带曼的
SELECT * FROM `user` WHERE name LIKE '_曼%'; 第二个字是曼的 _代表一个占位符
22 新增字段 INSERT INTO
INSERT INTO user(`name`,`age`, `hobby`) VALUES('xiaoman',23,'女人') 新增单个
INSERT INTO user(`name`,`age`,`bobby`) VALUES ('xiao',23,'篮球'),('yao',34,'足球') 新增多个,
INSERT INTO user(`name`,`age`) VALUES(null,23) 支持null
23 更新 UPDATE 表名 SET 更新id为12的数据
UPDATE `user` SET name=‘zhangsan’, age = 12,hobby = '篮球' WHERE id = 12
24 删除 DELETE
DELETE FROM `user` WHERE id=12 单个删除
DELETE FROM `user` WHERE id IN(1,2,3,4) 批量删除
25 表达式+函数
SELECT age+20 FROM `user`; 意思:筛选age列的数据 并把所有的age+20输出,但输出的列名是age+20,
SELECT age+20 as age FROM `user` 重命名列名 as
SELECT age FROM `user` WHERE age >= 20 ; age大于20的输出
SELECT CONCAT(`name`,'最骚') FROM `user` 将name列筛选出来并将name的值拼接最骚
SELECT CONCAT(`name`,'最骚') as name FROM `user` as换名
SELECT LEFT(`name`,1) FROM `user`; 将name列筛选出来,name列的值为截取的第一个值
SELECT RIGHT(`name`,1) FROM `user` 从右边开始截取第一个值
SELECT RAND() FROM `user` ; 生成随机数
SELECT SUM(`age`) FROM `user`; 将所有的age的值加起来输出
SELECT AVG(`age`) FROM `user`; 将所有age的平均值输出
SELECT MAX(`age`) FROM ·user·; 输出age的值的最大值
SELECT MIN(`age`) FROM ·user·; 输出age的值的最小值
SELECT COUNT(`age`) FROM `user`; 这一列的总和, 总共几列
SELECT NOW() FROM `user` ; 输出今天的时间
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) FROM `user`; 输出第二天的时间,今天+1
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY) FROM `user`; 输出昨天的时间,今天-1
SELECT IF(sex=1,'男',‘女’) FROM `user`; 输出sex这列值对应的男与女
25 子查询和连表
案例: 创建两个表user表和table表, table表的user_id对应user表的id;
子查询 条件要用()包起来
SELECT * FROM `table` WHERE user_id = (SELECT id FROM `user` WHERE name = '小曼')
这个执行语句先执行小括号的 将user表中的name=小曼的id查询出来
再赋值给table表的user_id将 table中user_id这条数据查询出来
连表查询:目的 把table和user表的数据合并到一起
内连接: 把user表的id和table表的user_id链接到一起
SELECT * FROM `user`,`table` WHERE `user`.`id` = `table`.`user_id`
存在的问题、如果 table表的数据为null的时候就不会进行链接 数据丢失了
外连接:
SELECT * FROM `user` LEFT JOIN `table` ON `user`.`id` = `table`.`user_id`
LEFT表示会以左边的表为准,如果右边的表没有数据会以null进行填充
RIGHT表示以右边的表为准,如果右边的表3条数据左边的4条,那么查出来的就是3条数据