MySQL 知识点

发布时间 2023-03-22 21:22:14作者: VIoleng

SQL语句

-- DDL
	CREATE DATABASE 库名字
	CREATE TABLE 表名字(
	)
	ALTER TABLE 表名字	ADD //增
	ALTER TABLE 表名字 DROP //删
	ALTER TABLE 表名字 MODIFY //修改
	ALTER TABLE 表名字 RENAME TO 表名字 //修改
	DROP DATABASE 名字 //删除库
	DROP TABLE 表名字 //删除表
-- DML
	INSERT INTO 表名字 VALUES(); //添加信息
	DELETE FROM 表名字 WHERE ;//删除信息
	UPDATE 表名字 SET  WHERE //修改信息
-- DQL
	SELECT * FROM 表名字 t1 WHERE t1.name LIKE '___' //查找名字由3个字母组成
	SELECT * FROM 表名字 t1 WHERE t1.name LIKE 'j%' //查找名字由j 开头
	SELECT * FROM 表名字 t1 WHERE t1.name LIKE '_a%' //第二个字母为a 的学生记录
    SELECT * FROM 表名字 t1 WHERE t1.name LIKE '%a%' //查询姓名中包含字母a的记录
	SELECT * FROM 表名字 [1.WHERE 2.GROUP BY 3.HAVING 4.ORDER BY 5.LIMIT]
	SELECT * FROM 表1 INNER JOIN 表2 ON () INNER JOIN 表3 ON()

约束

-- 非空约束
	NOT NULL
-- 唯一性约束
	NOT NULL UNION
-- 默认约束
	NOT NULL DEFAULT 1
-- 主键约束
	PRIMARY KEY 
	AUTO_INCREMENT //自增
-- 外键约束 修改数据表t,将字段t_id设置为外键,外键名fk_id,与数据表tb的主键进行关联
	ALTER TABLE t add CONSTRAINT fk_id FOREIGN KEY(t_id) REFERENCES tb(id);

函数

-- 字符函数
	-- 字符串连接
	SELECT CONCAT('JA','VA','SQL');			-- JAVASQL
	-- length() 字节长度
	SELECT length(name),name FROM tb_stu;		-- 
	-- 字符长度
	SELECT CHAR_LENGTH('java');			-- 4
	-- 去除前后空格
	SELECT trim('  ja  va    ');			-- ja  va
	-- 重复指定次数
	SELECT repeat('java',4);			-- javajavajavajava
	-- 字符串替换
	SELECT REPLACE('javajava','ava','jjj');		-- jjjjjjjj
	-- 截取字串
	SELECT substring('javaabc',1,3);		-- jav
-- 数学函数
	-- 绝对值
	SELECT abs(-15);				-- 15
    -- 向上取最小整数
    SELECT ceil(4.4);					-- 5
    -- 向下取最大整数
    SELECT floor(4.4);					-- 4
    -- 取余数
    SELECT mod(20,6);					-- 2
    -- 得到 0-1之间的随机值
    SELECT rand();					-- 0.8403694842386706 随机
	-- 有2位小数的四舍五入值
    SELECT round(3.1415926,4);				-- 3.1416
    -- 截断,小数位保持2位
    SELECT TRUNCATE(6.7894515,3);			-- 6.789
-- 日期函数
	-- 当前日期,当前时间,日期和时间
	SELECT CURDATE(),CURTIME(),now();		-- 2023-03-22	21:09:54	2023-03-22 21:09:54
	-- 指定日期是一年中的第几周
	SELECT WEEK(now());				-- 12
	-- 返回指定日期的年份
	SELECT YEAR(now());				-- 2023
	-- 返回指定时间的小时
	SELECT hour(now()),hour(CURTIME());		-- 21
	-- 返回date的月份名
	SELECT MONTHNAME(now());			-- March
	SELECT MONTH(now());				-- 3

三大范式

    1. 遵循原子性。表中字段的数据,不可以再拆分
    1. 遵循唯一性,消除部分依赖。表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。
    1. 任一主键都可以确定所有非主键字段值的情况下,不能存在某非主键字段 A 可以获取 某非主键字段 B

表与表的关系

  • 一对一 :
  • 一对多 :部门和员工
  • 多对多 :老师和学生