文章目录
新增数据
1、语法 :
INSERT INTO 表名 (列名1,列名2,列名3…)VALUES(值1,值2,值3…)
案例演示
INSERT INTO users(Id,`Name`,Address,
Phone,Mail,UserStateId,
LoginId,LoginPwd,
UserRoleId,Gender
)VALUES(4,'测试姓名','测试地址',
'15300000000','15300000000@163.com',1,
'ceshi','123456',1,1);
2、语法 :
INSERT INTO 表名 (列名1,列名2,列名3…)VALUES(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…),…
INSERT INTO users(Id,`Name`,Address,
Phone,Mail,UserStateId,
LoginId,LoginPwd,
UserRoleId,Gender
)VALUES(5,'测试姓名B','测试地址B',
'15300000000','15300000000@163.com',1,
'ceshi','123456',1,1),
(6,'测试姓名C','测试地址C',
'15300000000','15300000000@163.com',1,
'ceshi','123456',1,1),
(7,'测试姓名D','测试地址D',
'15300000000','15300000000@163.com',1,
'ceshi','123456',1,1);
添加主键
语法: ALTER TABLE 表名 ADD PRIMARY KEY(列名)
ALTER TABLE tablea ADD PRIMARY KEY(id);
外键约束
- 主键表的主键列 约束(限制) 外键表的外键列 的数据
也就是 外键列内的元素只能是主键列中的元素 - 语法:ALTER TABLE 外键表 ADD FOREIGN KEY(外键列) REFERENCES 主键表(主键列)
CREATE TABLE tablea(
id int not null,
`name` VARCHAR(50)
);
CREATE TABLE tableb(
id int not null,
tablea_id int not null,
`name` VARCHAR(50)
);
添加外键
ALTER TABLE tableb ADD FOREIGN KEY(tablea_id) REFERENCES tablea(id);
– 外键表 被约束的表
– 外键列 被约束的列
– 主键表 被约束的表的数据来源
– 主键列 被约束的列的数据来源
创建表 复制 结构 与数据
- *表示所有列
- SELECT 列名,列名,列名,列名,… FROM 表名 查询表中的数据
CREATE TABLE newusers
AS
SELECT id,`Name`,Phone FROM users WHERE 1=2;
-- SELECT * FROM users WHERE 1=2; 只复制 表结构
-- SELECT id,`Name`,Phone FROM users; 只复制 部分列
-- SELECT * FROM users; 复制所有
复制 数据(查询得到的结果)
INSERT INTO newusers SELECT * FROM users;
INSERT INTO newusers SELECT id,`Name`,Phone FROM users;
WHERE 条件语句
判断空
语法:WHERE 列名 IS NULL
删除数据
- 语法: DELETE FROM 表名 WHERE 删除条件 or 或者 and 并且
案例演示
DELETE FROM users WHERE id = 4;
DELETE FROM users WHERE id = 5 or id = 6;
DELETE FROM users WHERE id in (5,6,7);
- 如果 被删除的表有主外键关系 在删除主表时要保证外键表中的 主键数据 已经被删除
-
要删除主键表 先删除外键表
-
删除主表中的数据时 外键表中存在当前要删除的数据的约束元素
-
案例演示
DELETE FROM tablea WHERE id = 1;
DELETE FROM tableb WHERE id = 1;
修改语句
语法: UPDATE 表名 SET 列名=值,列名=值,列名=值… WHERE 条件
UPDATE users SET Phone='15311111111',Mail='15311111111@163.com' WHERE id = 18
TRUNCATE 命令
用于完全清空表数据,但表结构、索引、约束等不变
TRUNCATE tableb;
DQL 语句 用于查询数据的记录
切换到myschool上操作
USE myschool;
语法:
- SELECT 列名,列名,列名… FROM 表名
查询所有列的语法:
- SELECT * FROM 表名
- *表示所有列
联合查询
– WHERE 条件
– GROUP BY 分组查询
– HAVING 分组条件
– ORDER BY 排序 ASC DESC
– LIMIT 指定返回的数据从那条到那条
SELECT * FROM student WHERE studentNo =10004 -- * 表示所有列
SELECT studentNo,studentName,sex FROM student WHERE studentNo =10004
模糊查询 关键字 like
- 通配符 %:任意长度的字符
- _ :任意的一个字符
like 包含 not like 不包含
-- 查询姓名中包含 “文” 字的学生
SELECT * FROM student WHERE studentName like '%文%'
-- 查询姓“郭”的学生
SELECT * FROM student WHERE studentName like '郭%'
-- 查询姓“郭”并且两个字的学生
SELECT * FROM student WHERE studentName like '郭_'
-- 查询姓名以萍结束的学生
SELECT * FROM student WHERE studentName like '%萍'
区间查询
- 查询 成绩在60 -90之间的学生
SELECT * FROM result WHERE studentResult >60 AND studentResult <90
- 区间查询 列名 BETWEEN 小 and 大
SELECT * FROM result WHERE studentResult BETWEEN 60 AND 90
排序
- 查询学生成绩 并排序 ORDER BY 列名 DESC 大到小 ASC 默认 小到大
SELECT * FROM result ORDER BY studentResult DESC ASC
SELECT * FROM student ORDER BY bornDate DESC
函数
-- COUNT(主键列 * 1)统计总数
SELECT COUNT(1) FROM student
-- 平均分
SELECT AVG(studentResult) FROM result
-- 和
SELECT SUM(studentResult) FROM result
-- 最大值
SELECT MAX(studentResult) FROM result
-- 最小值
SELECT MIN(studentResult) FROM result