sql:基础总结

数据库:存储数据的仓库。sql语句作用就是为了操作数据库的数据,其操作分为:增删改查

注意事项:

1、标点符号用英文输入法

2、多个值或者多个字段间用逗号,  分隔

3、每个Sql语句用分号 ;  结尾

——增(创建表):

创建 表 表名 (
字段名 数据类型 是否为空 字段备注 , 字段名 数据类型 是否为空 字段备注 , 字段名 数据类型 是否为空 字段备注 );

create table `student` (
`id` int(11) not null auto_increment primary key comment '主键',
`studentNo` varchar(10) not null comment '学号',
`age` int(11) not null comment '年龄',
`address` varchar(50) default null comment '地址'
);

注:

数据类型:包含汉字(字符串)和数字(数值)两种,除数字以外都可以用字符串,字符串类型的值需要用 '单引号'

NOT NULL / NULL:代表字段的值是否可以为空null,NOT NULL代表不能为空,DEFAULT NULL代表默认为空null

auto_increment:代表这个字段的值不用管,自己会增长值,一般用在主键字段上

primary key :标识当前这个字段为主键,主键的作用是为了区分每行数据的

——增(新增数据):

插入 到 表名 值列表 (值1,值2,值3);    --给所有字段赋值,除主键列(自动增长)
insert into student values ('001',18,'北京');

插入 到 表名 (字段列表) 值列表 (值1,值2,值3);    -- 给指定字段赋值
insert into student (studentNo,age) values ('002',15);

注:

如果插入数据时给表中所有字段赋值,可以省略字段列表,值的顺序要和表中字段排列的数据一致

如果插入数据时给表中指定字段赋值,需要写上字段列表,值的顺序要和字段列表的顺序一致

值列表中,汉字(字符串)类型的要用 '单引号' ,数字(数值)类型的不用

多个字段和多个值用逗号 分隔

——删(删除表):

1、删表及数据:

删除 表 表名;
drop table student;

 2、删所有数据,不能与where一起使用,不可以后悔(操作后不能恢复)

截断 (表) 表名;
truncate table student;

 3、删指定数据,可以后悔(操作后能恢复)

删除 来自 表名 (条件);
delete from student where studentNo='001';

注:条件可选,不写条件是删除表中所有数据,写条件是删除符合条件的数据

——改(修改表):

修改 表名 设置 
字段名=新值,
字段名=新值,
字段名=新值
(条件);

update student set    -- 修改单个字段值
age=18
where studentNo='001';

update student set    -- 修改多个字段值
age=18,
address='北京'
where studentNo='001';

注:

修改多个字段时,使用逗号 ,  分隔

条件可选,不写条件是修改所有数据,写条件是修改符合条件的数据

——查(单表查询):

查询 字段列表 来自 表 (条件);
select * from student where studentNo='001';    -- 查询所有字段 select age,address from student where studentNo='002';    --查询指定字段

注:

字段列表为 *  时,代表查询表中所有字段。多个字段中间用逗号 ,  分隔 (列)

条件可选,不写条件是查询所有数据,写条件是查询符合条件的数据 (行)

select与from关键词之间的 -- 限定列:

1、 *  号与字段列表

2、聚合函数:

count(字段名):统计记录数
sum(字段名):求字段的总和
max(字段名):求字段的最大值
min(字段名):求字段的最小值
avg(字段名):求字段的平均值

 注:

count(*)是对行数目进行计数
count(字段名)是对字段中不为空的行进行计数

where后面的关键词 -- 限定行: 

1、基础语法

where 字段名 符号 值;   -- 基础语法
where 字段名 符号 值 and 字段名 符号 值;   -- 多个条件同时满足:and 连接
where 字段名 符号 值 or 字段名 符号 值;   -- 多个条件满足一个:or 连接

-- 查询年龄在15到17的学生;

where age >=15 and age <=17;
where age >14 and age <18;
where age =15 or age =16 or age =17;

2、范围查询

where 字段名 in (值1,值2,值3);    -- 查询字段的值在括号中的
where 字段名 bweteen 值1 and 值2;  -- 查询字段的值在值1与值2之间的

--查询年龄在15到17岁的学生;
where age in (15,16,17);
where age between 15 and 18;

3、分组

分组 根据 字段名
group by address;

注:分组的意思就是以哪个字段为单位去区分数据

4、排序

排序 根据 字段名 (排序方式);  
order by age asc;  -- 按年龄升序
order by age dese;  -- 按年龄降序

注:

排序方式可选,不写默认为asc

根据哪个字段排序,字段名就写那个字段

5、分页

限制 数字;    
limit n;    -- 等价于 limt 0,n; 返回n条数据;

限制 从几开始,取几条数据(不包含x)
limit x,n;    -- 返回从x+1开始,之后的n条数据


limit 1;    -- 返回表中第1条数据
limit 5;    -- 返回表中前5条数据
limit 1,3;    --表中第2条数据开始,返回往后数3条内的数据

 ——查(单多表查询):

1、子查询:

有两个select关键词,第二查询语句需要用到第一个查询的返回结果

2、自连接查询: 一个表自己关联自己

3、多表连接查询:

全连接:inner join 取两个表的交集 --左右两表匹配上的数据

左连接:left join --左边所有数据+右表能与左表匹配上的数据

有连接:reight join --右表所有数据+左表能与右表匹配上的数据

△写sql语句方法总结:

1、先找关键词,搭好Sql的框架

新增/增加:表操作--create table,数据操作--insert table

删除:表操作--drop table,数据操作--truncate table 或 delete

修改/更新:数据操作--update

查询/查找:数据操作--select

2、区分哪些是条件

不分组条件关键词用where 

分组后条件关键词用having

3、区分哪些是结果

聚合函数、字段列表或 *  

——sql语句练习:

1、查询女学生人数;
查询 -- select
人数 -- count()        ~结果
女生 -- sex ='女'        ~条件
整理sql:
select count(*) from student where sex='女';

2、查询年龄最大的女生住址;
查询 -- select
年龄最大 -- max()        ~条件
女生 -- sex ='女'        ~条件
住址 -- address        ~结果
整理sql:
-- 1、按年龄倒序排序,第一条数据是年龄最大的
select address from student where sex ='女' order by age desc limit 1;
-- 2、子查询,先查询年龄最大的,然后查询年龄=最大的年龄 select address from student where age =(select max(age) from student where sex ='女');
-- 3、分组查询,按照性别分组,聚合匹配年龄=最大年龄 select address,sex from student group by sex having age=max(age);

猜你喜欢

转载自www.cnblogs.com/fangyanr/p/12180607.html