Mysql
查找数据
基本查询
SELECT 列名 FROM 表名
列的别名
SELECT 列名 AS '' FROM 表名
查询结果去重
SELECT DISTINCT 列名 FROM 表名
排序查询
SELECT 列名 FROM 表名 ORDER BY 排序列 排序规则
ASC升序排序 DESC 降序排序
条件查询
SELECT 列名 FROM 表名 WHERE 条件
分支结构查询
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
ELSE 结果4
END
时间查询
SELECT 时间函数(参数列表)
SYSDATE() 当前系统时间
CURDATE() 获取当前日期
CURTIME() 获取当前时间
WEEK(DATE) 获取指定日期为一年中的第几周
YEAR(DATE)获取指定日期的年份
聚合查询
SELECT 聚合函数 FROM 表名
*分组查询
SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据
分组过滤查询
SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据 HAVING 过滤规则
限定查询
SELECT 列名 FROM 表名 LIMIT 起始行,查询行数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sSR9aEy0-1594169405348)(G:\笔记\课堂笔记\图片\QQ图片20200707234505.png)]
子查询
SELECT 列名 FROM 表名 WHERE 条件(子查询结果)
合并查询
SELECT * FROm 表名1 UNION SELECT * FROM 表名2
UNION连接的结果集会去除重复的记录
SELECT * FROM 表名1 UNION ALL SELECT * FROM 表名2
UNION ALL连接的结果集会保留重复记录
连接查询
SELECT 列名 FROM 表1 连接方式 表2 ON 连接条件
内连接查询 INNER JOIN
左外连接 LEFT JOIN
右外连接 RIGHT JOIN
#查询朱朝阳的课程都是哪些老师教的
SELECT subject.subject_name,teacher.teacher_name
FROM ((teacher INNER JOIN SUBJECT ON teacher.teacher_id=subject.teacher_id)
INNER JOIN sc ON sc.subject_id =subject.subject_id)
INNER JOIN student ON student.student_id=sc.student_id
WHERE student.student_name='朱朝阳'
添加数据
INSERT INTO 目标表(要添加的表单) VALUES(表单数据);
修改数据
UPDATE 表名 SET 例1=新值1,例2=新值2,例3=新值3 WHERE 条件(必须加where条件)
删除数据
DELETE FROM 表名 where 条件(必须加where,否则会删除表中所有数据)
清空表 TRUNCATE TABLE 表名,和DELETE FROM 表名 一致,
区别:TRUNCATE TABLE 表名 删除整个表再创建
DELETE FROM 表名 删除所有数据
数值类型
数字类型
int
double
double(m,d)一共m位数字,其中d位小数
日期类型
date 日期值 yyyy-mm-dd
time 时间值 hh:mm:ss
year 年份值 yyyy
datetime 混合日期和时间值yyyy -mm-dd hh:mm:ss
timestamp yyyymmddhhmmss
字符串类型
char 固定字符 char(10)10个字符 不足补空格
varchar 变长字符串 varchar(10) 10个字符
blob 二进制的长文本数据
text 长文本数组
创建一个表
CREATE TABLE 表名(
列名 数据类型,
列名 数据类型,
列名 数据类型,
...
)[charset=utf8]
CREATE TABLE SUBJECT(
id INT,
birthday DATE,
PHONE CHAR(11)
)CHARSET=utf8;
sql中的命名规范
不区分大小写,下划线分割单词,大小写分割单词是错误的
数据表的修改
添加列
ALTER TABLE 表单 ADD (所增加的列) 数据类型
修改列中的数据类型
ALTER TABLE 表名 modify 列名 数据类型
删除列
ALTER TABLE 表名 DROP 列;
修改列名
ALTER TABLE 表名 CHANGE 列名 修改后的列名 数据类型
删除表
DROP TABLE 表名
修改表名
ALTER TABLE 前表名 RENAME 后表名
约束
实体完整性约束
主键约束(一个表中只能有1个主键,但可以有多个唯一约束)
PRIMARY KEY
作用:唯一,标识表中的一行数据,此列的值不能重复,且不能null
CREATE TABLE SUBJECT(
id INT PRIMARY KEY,
birthday DATE,
PHONE CHAR(11)
)CHARSET=utf8;
唯一约束
UNIQUE
作用:标识表中的一行数据,不可重复,可以为null
CREATE TABLE SUBJECT(
id INT PRIMARY KEY,
birthday DATE,
PHONE CHAR(11),
email char(20) UNIQUE
)CHARSET=utf8;
自动增长列
AUTO_INCREMENT
作用:自动增长,给主键数值列添加自动增长
从1开始每次加一,不能单独使用,和主键配合
CREATE TABLE SUBJECT(
id INT PRIMARY KEY AUTO_INCREMENT,
birthday DATE,
PHONE CHAR(11)
)CHARSET=utf8;
域完整性约束(限制列的单元格的数据正确性)
非空约束
NOT NULL
非空,此列必须有值
CREATE TABLE SUBJECT(
id INT PRIMARY KEY AUTO_INCREMENT,
birthday DATE NOT NULL,
PHONE CHAR(11)
)CHARSET=utf8;
默认值约束
DEFAULT 值
新增数据不指定值得时候,书写DEFAULT,以指定的默认值进行填充
引用完整性约束
CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表(主键)
CREATE TABLE GRADE(
GRADE_id INT PRIMARY KEY AUTO_INCREMENT,
GRADE_NAME VARCHAR(20) UNIQUE NOT NULL
)CHARSET=utf8
CREATE TABLE STUDENT(
student_id VARCHAR(50) PRIMARY KEY ,
Student_name VARCHAR(50) NOT NULL,
sex CHAR(2) DEFAULT'男',
borndate DATE NOT NULL,
phone VARCHAR(11),
GRade_id INT NOT NULL,
CONSTRAINT t_grade FOREIGN KEY (grade_id) REFERENCES GRADE(grade_id)
)CHARSET=utf8