介绍、 SQL 语句操作分类
SQL分类
一、DDL数据定义语言
1、SqlServer中数据库的物理设计:
CREATE DATABASE Company
ON
(NAME=University_Data,
FILENAME='D:\SQLSHUJU\Company.mdf', --数据文件
SIZE=100MB,
MAXSIZE=200,
FILEGROWTH=20
)
LOG ON
(NAME=University_Log,
FILENAME='D:\SQLSHUJU\Company.ldf', --日志文件
size=100mb,
maxsize=200,
filegrowTh=20)
go
2、MySql中表结构设计
CREATE TABLE stu (
id int, -- 编号
name varchar(20), -- 姓名
age int, -- 年龄
sex varchar(5), -- 性别
address varchar(100), -- 地址
math double(5,2), -- 数学成绩
english double(5,2), -- 英语成绩
hire_date date -- 入学时间
);
3、修改表的结构
1、修改表名
alter table 修改前的表名 rename to 修改后的表名
2、添加列
alter table 表名 add 列名 数据类型;
3、修改数据类型
alter table 表名 modify 列名 新数据类型;
4、修改列名和数据类型
alter table 表名 列名 新列名 数据类型;
5、删除列
alter table 表名 drop 列名;
4、删除者表
drop table 表名
drop table if exists 表名
二、DML:对表中的数据进行增删改
三、DQL:对表中的数据进行查询
1、常见的其他查询
1、显示当前DBMS下的所有数据库
show databases;
2、显示当前数据库下所有表
show tables;
3、 查询当前正在使用的数据库;
select database();
4、显示user表的表结构
desc user;
2、普通查询
#查询所有信息
select * from stu;
#查询 地址信息
select address from stu;
#对地址进行去重
select distinct address from stu;
#别名
select address as 地址 from stu;
查询年龄大于20的学生
select * from stu where age>20;
#查询年龄在 20-30包括20、30的同学
select * from stu where age>=20 AND age<=30;
select * from stu where age between 20 and 30;
#查询入学日期在某个范围的
select * from stu where hire_date between '1997-09-05' and '1998-09-01';
#查询年龄不等于18岁的学生
select * from stu where age !=18;
#查询年龄在18、20、22岁的学生信息
select * from stu where age in (18,20,22);
select * from stu where age=18 or age=20 or age=22;
#查询值为null的
select * from stu where english is null ;
#查询值不为null的学生信息
select * from stu where english IS NOT NULL ;
3、模糊查询
普通模糊查询
#查询姓马的同学
select * from stu where name like '马%';
#查询第二个字是'花的学生'
select * from stu where name like '_花%';
#查询名字中包含'德'的学生
select * from stu where name like '%德%';
#查询名称中不包含'德'的人
select * from stu where name not like '%德%';
转义模糊查询
4、聚合函数
普通聚合函数
-- 统计班级里一共有多少个学生
select count(*) from stu;
-- 不对成绩为空的的学生统计
select count(english) from stu;
-- 查询数学成绩的最高分
select max(math) from stu;
-- 查询数学成绩的最低分
select min(math) from stu;
-- 查询数学成绩的总分
select sum(math) from stu;
-- 查询数学成绩的平均分
select avg(math) from stu;
-- 查询英语成绩的最低分
select min(english) from stu;
分组查询+聚合函数
-- 查询男同学和女同学各自的数学平均分
select sex,avg(math) as 平均分 from stu group by sex
-- 查询男同学和女同学各自的数学平均分,以及各自人数
select sex,avg(math) as 平均分 ,count(*) as 人数 from stu group by sex;
-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex,avg(math) as 平均分 ,count(*) as 人数 from stu where math>70 group by sex;
-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
select sex,avg(math) as 平均分 ,count(*) as 人数 from stu where math>70 group by sex having 人数>2;
having关键字是对 查询后字段进行过滤的
5、排序查询
查询学生信息,数学成绩按降序排列
select * from stu order by math desc;
查询学生信息,数学成绩按降序进行排列,如果数学成绩一样,再按英语成绩进行升序排列
select * from stu order by math desc ,english;
6、分页查询(限定查询)
-- 页码和索引之间的关系 起始索引=(页面-1)*每页需要显示的数据条目
-- 每页显示3条数据,查询第1页数据
select * FROM stu limit 0,3;
-- 每页显示3条数据,查询第2页数据
select * FROM stu limit 3,3;
-- 每页显示3条数据,查询第3页数据
select * FROM stu limit 6,3;