MySQL 知识点

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

表与表的关系

  • 一对一 :
  • 一对多 :部门和员工
  • 多对多 :老师和学生
posted @ 2023-03-22 21:19  VIoleng  阅读(21)  评论(0)    收藏  举报