数据库查询语句包含
条件查询
语法:
SELECT */列名 FROM 表名
WHERE 条件
ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC;
-- 条件可以包含关系运算符、逻辑运算符、特殊情况等
-- 是
-- 在几个选项之中
-- between and 在一定范围内
-- 要求查询emp表中员工编号大于等于50的员工编号
SELECT *
FROM 员工表
WHERE 员工编号>=50;
-- 查询员工表中员工编号是50的员工信息
SELECT *
FROM 员工表
WHERE 员工编号=50;
-- 查询员工表中员工编号在50-100之间的员工信息
SELECT *
FROM 员工表
WHERE 员工编号 BETWEEN 50 AND 100;
常见聚合函数
-- 查询EMP表中员工工资的最大值
SELECT MAX(SAL)
FROM EMP;
-- EMP表中员工编号的最大值
SELECT MAX(员工编号)
FROM EMP;
-- 查询学生表中学员分数的最小值
SELECT MIN(学员分数)
FROM 学生表;
-- 查询学生表中所有学员分数的平均值
SELECT AVG(学员分数)
FROM 学生表;
-- 查询EMP表中所有员工奖金总和
SELECT SUM(员工奖金)
FROM EMP;
-- 统计EMP表中职位是经理的个数
SELECT COUNT(经理)
FROM EMP;
字符串处理函数
-- 获取emp表中,员工姓名的长度
SELECT ename,LENGTH(ename)
FORE emp;
-- 查询emp表中,员工的姓名和姓名最后2个字符
-- ABCD EF 6-1
-- ABCDE FR
SELECT 姓名,SUBSTRING(姓名,LENGTH(姓名)-1,2)
FROM EMP;
数值处理函数
-- 保留小数点后两位
SELECT ROUND(12.123,2);
-- 生成随机数
SELECT RAND();
日期处理函数
•字符串处理函数
例:查询emp表中,员工的姓名和姓名最后2个字符
方法1:
select ename,substring(ename, length(ename)-1, 2) from emp;
方法2:
select ename,substring(ename, -2, 2) from emp;
查询student表中,姓名中含有唐的,学员的姓名、分数、班级
select sname,score,sclass from student where sname like '%唐%';
查询emp表中,倒数第2个字母是N的,员工的姓名、职位、入职时间
select ename,job,hiredate from emp where ename like '%N_';
查询student表中,分数(score)在70--99分之间的,班级名称(sclass),班级的人数,班级的平均分数,根据班级的平均分数降序排列
select sclass,count(*),avg(score)
from student
where score >= 70 and score <= 99
group by sclass
order by avg(score) desc;
创建数据表时添加列级别主键约束
CREATE TABLE 表名(
列名1 数据类型(数据范围) PRIMARY KEY,
列名2 数据类型(数据范围) PRIMARY KEY
);
-- 创建数据表时添加表级别唯一约束,可以多个主键约束
CREATE TABLE 表名(
列名1 数据类型(数据范围),
列名2 数据类型(数据范围) ,
PRIMARY KEY(列名1,列名2)
);
修改表时添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名1,列名2);
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
-- 创建数据表时添加列级别主键约束
CREATE TABLE 表名(
列名1 数据类型(数据范围) PRIMARY KEY,
列名2 数据类型(数据范围) UNIQUE [KEY],
列名2 数据类型(数据范围) UNIQUE [KEY]
);
-- 创建数据表时添加表级别唯一约束
CREATE TABLE 表名(
列名1 数据类型(数据范围),
列名2 数据类型(数据范围) ,
UNIQUE KEY(列名1,列名2)
);
修改表时添加唯一约束
ALTER TABLE 表名 ADD UNIQUE KEY(列名1,列名2);
删除唯一约束
ALTER TABLE 表名 DROP INDEX 约束名称;
查看某张表中全部的索引
SHOW KEYS FROM 表名;
默认值约束
CREATE TABLE 表名(
列名1 数据类型(数据范围) PRIMARY KEY,
列名2 数据类型(数据范围) UNIQUE [KEY],
列名2 数据类型(数据范围) DEFAULT 参数值
);
修改表时添加默认值
ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT 默认值;
删除默认值
ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT NULL;
ALTER TABLE 表名 MODIFY 列名 数据类型;
非空约束
CREATE TABLE 表名(
列名1 数据类型(数据范围) PRIMARY KEY UNIQUE [KEY],
列名2 数据类型(数据范围) UNIQUE [KEY],
列名2 数据类型(数据范围) DEFAULT 参数值,
列名2 数据类型(数据范围) NOT NULL
);
修改表时添加非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NUL
删除非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型;
外键约束
CREATE TABLE 表名1(
列名1 数据类型(数据范围) PRIMARY KEY,
列名2 数据类型(数据范围) UNIQUE [KEY],
列名3 数据类型(数据范围) DEFAULT 参数值,
列名4 数据类型(数据范围) NOT NULL
);
CREATE TABLE 表名2(
列名1 数据类型(数据范围) PRIMARY KEY,
列名2a 数据类型(数据范围) UNIQUE [KEY],
列名3 数据类型(数据范围) DEFAULT 参数值,
列名4 数据类型(数据范围) NOT NULL,
FOREIGN KEY(列名2a) PEFERENCES 表名1(列名2)
);
修改表时添加外键约束
ALTER TABLE 子表 ADD CONSTRAINT 约束名称 FOREIGN KEY(列名) PEFERENCES 主表(列名);
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名称;
插入语句,指定列插入数据
INSERT INTO 表名(列名1,列名2) VALUES(列值1,列值2),(列值1,列值2);
-- 表名中的列名必须和VALUES 中的列值一一对应
全部列插入数据
INSERT INTO 表名 VALUES(列值1,列值2);
-- VALUES 中的列值,必须和表结构中的列名是对应的
修改记录(更新语句)
UPDATE 表名 SET 列名1=该列新值,列名2=该列新值 WHERE 条件;
-- 如果不指定条件WHERE,将更新表中所有记录
删除记录
DELETE FROM 表名 WHERE 条件;
1、查询stu01表中,全部列的数据
SELECT * FROM stu01;
2、查询cou01表中,课程编号、课程名称
SELSECT cno,cname FROM cou01;
-- cno课程编号
-- cname课程名称
3、查询sco01表中,学员编号、学员成绩并给每列起别名
SELECT sno,score FROM sco01;
-- SELECT 学员编号 别名,学员成绩 别名 FROM sco01;
-- select sno 编号,score 成绩 from sco01;
4、查询stu01表中,学员编号是2020005的,学员的编号、学员姓名、学员年龄
SELECT sno,sname,age FROM stu01 WHERE sno=2020005;
-- 查询指定数据,没有就为空
5、查询stu01表中,学员姓名是Jones的,学员的编号、学员姓名、学员地址
SELECT sno,sname,address FROM stu01 WHERE sname=’Jones’;
-- 学员姓名是! SNAME=!
6、查询stu01表中,学员姓名含有o的,学员的编号、学员姓名、学员性别
SELECT sno,sname,sex FROM stu01 WHERE sname LIKE ‘%O%’;
-- 包含...LIKE '%...%'
7、查询stu01表中,学员姓名首字母以J开头的,学员编号、学员姓名
SELECT sno,sname FROM stu01 WHERE sname LIKE ‘J%’;
-- 模糊查询
-- 以...开头 LIKE '...%'
-- 以...结尾 LIKE '%...'
8、查询sco01表中,学员成绩不在60~80之间的,学员的编号、学员成绩
select sno,score from sco01 where not score between 60 and 80;
-- 条件 不在60-80之间not...BETWEEN....AND
9、查询stu01表中,学员编号是2020001、2020003、2020009的学员信息
SELECT * FROM stu01 WHERE sno in(2020001、2020003、2020009);
-- in