mysql-基础看这篇已足以

这篇文章我尽量写的全一点,希望能够帮助到看这篇文章的小伙伴们~~~~
可以配合java连接mysql数据库一起看

比较常用的类型

# 数据类型(字符串)
  # char 和 varchar 的区别?
    CHAR(10) VARCHAR(30) TEXT
  # char 一旦定义好大小后,大小不可变
  # varchar 可变大小的字符串,根据插入数据的大小,自动调整所占据的资源
  # text 大文本,用来存放大的文本信息 如(个人简介、新闻)
  # DB中 字符串用 '' 表示。

# 数字类型
  INT 整数
  BIGINT 大整数
  FLOAT 单精度
  DOUBLE 双精度
  DECIMAL(20,2) 定数(当前可以用来存放一共20位的数字,其中小数位2)
  
# 日期类型
  DATE yyyy-MM-dd (--)
  TIME HH:mm:ss:SSS (时:分:秒:毫秒)
  DATETIME yyyy-MM-dd HH:mm:ss:SSS
  TIMESTAMP 时间戳 1970-1-1 到现在的毫秒数

创建数据库create database wei1273356078

使用创建好的数据库use wei1273356078

查看创建数据库的详细信息show create database wei1273356078

查看所有的数据库show databases

删除数据库drop database wei1273356078

创建一个表:大整型bigint、可变字符串varchar、整型int、日期date、主键primary key、自增长auto_increment、描述comment

# 创建一个学生表
CREATE TABLE tb_student(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
	stu_no VARCHAR(30) COMMENT '学生编号',
	stu_name VARCHAR(30) COMMENT '学生名称',
	stu_age INT COMMENT '学生年龄',
	stu_sex INT COMMENT '0表示女;1表示男',
	stu_birthday DATE COMMENT '学生生日'
) COMMENT '学生表';

增删改查(CDUR)

  • 增–C:insert into
# value 与 values 的区别是  values可以多条数据增加
# value
INSERT INTO tb_student(stu_no,stu_name,stu_age,stu_sex,stu_birthday) VALUE
('001','张三',18,1,'2002-3-14');
# values
INSERT INTO tb_student(stu_no,stu_name,stu_age,stu_sex,stu_birthday) VALUES
('002','李四',21,0,'2012-6-14'),
('003','王五',24,1,'2021-5-11');
  • 删–D:delete
# 删除tb_student表中的数据
DELETE FROM tb_student;
# 根据条件删除
# delete 只是删除符合条件的数据,不影响主键的数据
DELETE FROM tb_student WHERE stu_age < 22;
  • 改–U:update
# 数据修改(全部修改)
UPDATE tb_student SET stu_age = 10;
# 根据给定的条件执行更新(使用where条件【条件一般使用主键】)
UPDATE tu_sudent SET stu_age=12 WHERE id=2;
# set 同时更新多个字段的信息,使用逗号隔开
UPDATE tb_student SET stu_birthday='2020-07-01',stu_name='马六' WHERE id=3;
  • 查–R:retrieve花样最多的,我也懂皮毛
# * 代表表中所有的字段
SELECT * FROM tb_student;
# 默认就是 all
SELECT id FROM tb_student;
# 从学生表中查看 去重后的ID
SELECT DISTINCT id FROM tb_student;
# 模糊查询 like
SELECT * FROM tb_student WHERE stu_name like '%张';
# _ 表示匹配一个  下行代码表示美的前面必须有一个字
SELECT * FROM tb_student WHERE stu_name LIKE '_四';

where条件

# and 同时满足
SELECT * FROM tb_student WHERE id=1 AND stu_no='001';
# or 满足任意一个条件都可以
SELECT * FROM tb_student WHERE stu_age > 18 OR id=5;
# <> 和 !=  一样 都是不等于
SELECT * FROM tb_student WHERE id <>10;
# null只有 is null 与 is not null
SELECT * FROM tb_student WHERE stu_birthday IS NULL;
SELECT * FROM tb_student WHERE stu_birthday IS NOT NULL;
# 条件 是一个范围
SELECT * FROM tb_student WHERE stu_age>=10 AND stu_age<=20;
SELECT * FROM tb_student WHERE stu_age BETWEEN 10 AND 20; 

分页 limit

#  LIMIT 0,3  从下标为0的数据开始查询,查询3条数据
SELECT * FROM tb_student LIMIT 0,3;
SELECT * FROM tb_student LIMIT 2,3;

常用的函数

# AS 意思是取一个别名
# 常用的聚合函数 sum() avg() max() min() count()
# 计算学生年龄的总和
SELECT SUM(stu_age) AS AGE_SUM FROM tb_student;
# 计算学生年龄的平均值
SELECT AVG(stu_age) AS AGE_AVG FROM tb_student;
# 计算 数据的数量
SELECT COUNT(id) FROM tb_student;
# 取绝对值
SELECT ABS(-14);
# 得到字符串的长度
SELECT LENGTH('adsfklj') AS char_size;
# 字符串连接
SELECT CONCAT('aa','bb','vv','cc');
# 格式化小数点(四舍五入)
SELECT FORMAT(3.1415926,3);
# 当前日期
SELECT CURRENT_DATE();

分组 group by

# 根据学生表查看学生的平均年龄 先分组再计算聚合函数
SELECT id,AVG(stu_age) FROM tb_student GROUP BY stu_sex;
# as  是起别名的
# 根据不同的性别查看  年龄总和
SELECT stu_sex,SUM(stu_age) AS AGE_SUM FROM tb_student GROUP BY stu_sex;
# 根据不同的性别查看 年龄 总和大于50岁的记录,having 对分组之后等到的数据再进行筛选
SELECT stu_sex,SUM(stu_age) AS AGE_SUM FROM tb_student GROUP BY stu_sex HAVING AGE_SUM>50;

排序

# 排序 ASC(默认)  DESC(倒序)
SELECT * FROM tb_student ORDER BY stu_age ASC;
SELECT * FROM tb_student ORDER BY stu_age DESC;
# 多个排序条件,在满足了第一个排序条件的基础上,再根据第二个条件进行排序
SELECT * FROM tb_student ORDER BY stu_age ASC,stu_no DESC;

自定义函数

# 将默认的结束符 ; 改为 $$  当然也可以改为自己喜欢的符号
# 作用是在执行时,不会被 ; 结束掉
DELIMITER $$

CREATE
	# 反引号 用来标识这是一个变量而不是关键字
    FUNCTION `wei1273356078`.`func`()
    # 返回一个整型
    RETURNS INT
    # 开始
    BEGIN
	# 声明一个变量
	DECLARE age INT;
	# 对变量进行赋值
	SET age = 18;
	# 返回一个变量
	RETURN age;
	# 结束
    END$$
# 最后再将 $$ 改回来
DELIMITER ;


# 可以测试以下自己的函数可不可以用
SELECT func();

想要实现存储过程就需要再创建一个表dt_user,并且表中有id(自增长)、namepwd这三列,类型除了idint外,别的都是varchar。要想看到效果,需要向dt_user表中添加内容。

存储过程

# 判断表中是否有 p_login 存储过程
DROP PROCEDURE IF EXISTS `p_login`;
# 将分隔符改为 $$
DELIMITER $$
# 创建一个存储过程
CREATE PROCEDURE `p_login`
(
  _name VARCHAR(20),
  _pwd VARCHAR(20)
)
BEGIN
  # 声明辅助变量
  DECLARE _count INT;
  # 为辅助变量赋值(mysql中没有print,只有select)
  SELECT COUNT(*) INTO _count FROM `dt_user` WHERE `name` = _name AND `pwd` = _pwd;
  # 判断成功或失败 并返回结果
  IF _count > 0 THEN 
	SELECT '' AS result;
  ELSE 
	SELECT '用户名或密码错误' AS result;
  END IF;
END;
$$
# 将分隔符再改回来
DELIMITER ;


# 调用存储过程测试是否可以执行
CALL p_login('user1', '123');
# 如果输出为空,说明账号密码正确
# 如果输出为'用户名或密码错误',说明账号密码错误

触发器:以下代码执行增加sql语句就会使学生表的id为1的学生年龄加1

DELIMITER $$

CREATE
    # BEFORE/AFTER 触发触发器的动作 的前面/后面
    # INSERT/UPDATE/DELETE 触发触发器的动作
    # 当向学生表中添加一条数据的时候,相对于的学生数量应该+1
    TRIGGER `wei1273356078`.`tri_update_stucount` AFTER INSERT
    ON `wei1273356078`.`tb_student`
    FOR EACH ROW 
    BEGIN
	UPDATE tb_student SET stu_age = stu_age+1 WHERE id=1;
    END$$

DELIMITER ;


# 可以增加一条sql语句来验证
INSERT INTO tb_student(stu_no,stu_name,stu_age,stu_sex,stu_birthday) VALUE
('004','wei',15,0,'2020-3-14');
# 再执行前看下id为1的学生年龄是多少,执行完之后又是多少。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值