一、DML介绍
DML(Data manipulation Language,数据操纵语言)命令使用户能够查询查询数据库和操作已有的数据库中的数据的计算机语言,也就是涉及涉及的sql语句,包括增删改查操作的数据表
二、select语句基础
1.选择特定的列
select usernmae from user
2.计算列值
select color , price ,price + 500 from cars
3.使用null值参与运算
使用select语句进行查询时,有事查询出来的结果null,查询显示的结果会显示为NULL,但是NULL值不能参与运算
4.设置别名
select price as 原价格, price + 4444 as 新价格 fron cars as 可以省略只需要在列名和别名之间价格空格就行
5. 在select语句中使用连接符
select concat(cartype, "is !¥" , price ,".00") as car from cars
三、where子句 指定查询条件的
1.where子句 也叫做条件查询子句,如果只需要查找指定条件下的数据,则可以使用where子句
select * from user where id = 12
2.where in 子句 用于声明可以接受的值组
select username,username from users where id in (1,11)
3.where not in 用于查询不符合该值组中的任何一个的数据
select username ,password from users where id not in (1,22)
4.where between and子句 用于查找指定范围内的数据
select * from users where age between 18 and 22
5.where like子句 用到两种通配符:下划线表示单个字符,百分号代表多个字符的序列
select username from users where username like '_mike'
6.where is null子句 表示当条件字段的值不为空时,它去掉查询结果中的空值,通过它可以关注数据的丢失
7.where子句中的逻辑操作
where子句的逻辑操作的关键字有and、or和not
and:如果and前后的条件符合,那么返回true否则返回false
or:只要符合or指定条件之一返回true、否则返回false
not:符合not指定的条件时返回true否则返回false
四、ORDER BY子句 使用该子句在检索时指定顺序进行检索,即结果是按指定条件的降序或者升序
升序:select * from users order by id asc 将搜索到的结果集通过id进行升序排序 asc关键字可以省略
降序:select * from users order by id desc 将搜索到的结果集通过id进行降序排序
五、Group BY 用来进行分组
1.group by 子句
该子句根据字段值进行分组,它可以和聚合函数使用,如avg、count、max、min、sum。又可以分为单列分组和多列分组。
单列分组:select max(score) from users
所列分组:select id ,name,age,address from users group by age,address
PS:当group by和order by共同使用时,order by子句要放在group by子句之后
六、 HAVING子句 用来指定条件,和where子句功能差不多,但是having子句用于已经分组过得结果
如果想要对分组的结果限制条件查询,就可以使用having子句,因为having用于限制分组后的结果,所以该子句放到group by之后使用
group by 列名 having 条件表达式
PS:having子句是针对group by子句的,它作用于组;而where子句是在分组之前对满足条件的记录进行查询的,是针对于select语句的,作用于表或者视图上
七、insert语句
插入单行数据:insert into table_name (col1,col2...) values(val1,val2....)
向有外键的数据库插入数据:
创建专业表:
create table zhuanye(id int not null primary key auto_increment,name varchar(30) not null default '软件工程');
创建学生表:
create table xuesheng(sid int not null primary key auto_increment,sname varchar(20) not null ,age int not null default 18 ,zid int not null);
给学生表的zid添加外键约束:alter table xuesheng add constraint haha foreign key (zid) references zhuanye (id);
当我们想学生表中插入数据一定要插入学生表中的zid外键,并且这个zid外键必须在专业表中的id存在,倘若不存在,也就是选了不存在的专业,可想而知,执行结果肯定不通过,没法进行插入操作
ps:添加外键约束:lter table 想要添加外键的表名 add constraint 外键名称 foreign key (外键名称) references 外表表名 (外表对应的主键);
外键名称可以随便起,但是不能和已经存在的外键的名称相同,应为要对外键进行删除等操作时,它是唯一标识
删除外键:alter table 拥有外键的表名 drop foreign key 外键名称
例如:alter table xuesheng drop foreign key haha;
查看外键:我们可以通过查看数据表的构成信息来查看该表添加了哪些外键约束
show create table 表名
八、update语句 修改数据表中的数据
修改单行数据:
update table_name set col1 = val1 , col2 = val2......
ps:如果要修改的数据值是数字,则可以直接用数据值,不用加引号,但是如果修改的是字符串或者其他任意类型的数据,则要把数据值用引号引住
修改有外进约束的表数据
修改加有外键约束的表数据时和插入操作时类似,只需要注意外键的值一定要在所关联的表格中的主键中存在,否则修改不成功
九、delete语句 删除语句使用delete
删除满足条件的数据
delete from table_name where condition condition表示指定删除条件
删除有外键约束的表数据
要删除具有外键约束的表时,如例子中说的zhuanye数据表中的数据时,它的主键不能够和学生表中的数据有关系,否者删除失败。意思可以理解为某个学校的专业要撤销,但是该专业还有很多学生,所有在撤销专业之前需要把该专业的学生给处理掉,然后才能删除该专业