Day08—MySQL基本命令与DML语言

一、基本概念

        1、什么是SQL语句?

                Structured Query language 结构化查询语句;

        2、SQL语句分类:

                DDL数据定义语言(data  definition  language)如:建库,建表;

                DML数据操纵语言(data   manipulation  language)如:对表中的记录操作增删改

                DQL数据查询语言(data  query  language)如:对表中进行查询操作

                DCL数据控制语言(data  control  language)如:用户权限的设置

        3、sqlyog在导入数据库时会将同名的库覆盖,不是文件名是其里面创建的数据库名;

二、DDL语句:数据定义语言

创建表:

create table 表名(

        属性名  属性类型,

        属性名  属性类型,

        属性名  属性类型

);

查看表的结构:desc 表名;

三、DML语句:数据操纵语句

1、增加数据

插入一条全部数据:insert  into  表名  values(值1,值2,值3。。。);

一次插入多条数据:insert  into  表名  values(值1,值2,值3。。。),(值1,值2,值3。。。);

插入部分字段,没有插入的字段,默认值就是null,也支持一次插入多个数据:

insert  into  表名  (字段名称1,字段名称2,字段名称3)   values(值1,值2,值3);

INSERT INTO student VALUES(1,'高圆圆',42,'女','西安市') ;
INSERT INTO student VALUES(2,'文章',35,'男','咸阳市'),(3,'马伊琍',40,'女','上海市'),(4,'马保国',56,'男','宝鸡市') ;
INSERT INTO student(id,NAME,age,gender) VALUES(5,'王宝强',35,'男') ;	
INSERT INTO student(id,NAME,age,gender) VALUES(6,'张三丰',60,'男'),(7,'令狐冲',38,'男') ;

2、修改数据

修改符合条件的数据的该字段值:

                update  表名  set  字段名称1=值1,字段名称2=值2,字段名称3=值3  where  条件;

修改所有数据的该字段值:

                update  表名  set  字段名称1=值1,字段名称2=值2;(将所有数据均修改)

UPDATE student SET age = 25,gender ='女',address='上海市' WHERE id = 6 ;
UPDATE student SET address = '鄠邑区' ;

3、删除数据

删除满足条件的该条数据:delete  from  表名  where  条件;

删除表中所有数据:(两种方式)

方式一:delete  from  表名;                方式二:truncate  table  表名;

DELETE FROM student WHERE id = 7 ;
DELETE FROM student ;
TRUNCATE TABLE student;

面试题:drop,delete与truncate删除表时有什么区别?

        drop  table  表名:是删除整个表文件,属性结构也不保留;

        delete  from  表名:是删除表中的数据,表的属性结构还在,它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)

        truncate  table  表名:是删除表中的数据,表的属性结构还在,它相当于删除该表后,重新建立了一张一模一样的表,会影响主键的值;

四、DQL语句:数据查询语句

1、基本的查询语句select:

查询全表数据:select  *  from  表名;

实际开发中查询全部字段,把字段名称全部写上:select  字段名称1,字段名称2。。  from  表名;

SELECT 
    id,NAME,age, sex,address,math,english
FROM 
    student3;

查询字段时,可以给字段起一个别名:字段名  as  “别名名称”,as可以省略,

SELECT 
  id AS '编号',
  NAME AS '姓名',
  age AS '年龄',
  sex AS '性别',
  address AS '地址',
  math AS '数学成绩',
  english AS '英语成绩' 
FROM
  student3 ;

表也可以起别名:

SELECT 
  s.`id` '学生编号',
  s.`name` '学生姓名',
  s.`age` '学生年龄',
  s.`sex` '学生性别',
  s.`address` '学生地址',
  s.`math` '数学成绩',
  s.`english` '英语成绩' 
FROM
  student3 s ;

查询部分字段:select  字段名称1  “别名”   字段名称2  “别名”  from  表名;

别名只会在显示的当次改变列的名称,别不改变数据库中的真实名称。

SELECT 
	NAME '姓名',
	math '数学成绩',
	english '英语成绩'
 FROM
     student3 ;

去除数据库中的重复数据:select  distinct  字段名称1,字段名称2  from  表名;

                                           select  distinct   *  from  表名;去除表中重复数据

SELECT  DISTINCT address FROM student3;
SELECT  DISTINCT * FROM student3;

2、条件查询语句

条件查询  where 关键字 
 -- 2.1)使用 赋值运算符=,比较运算符 <,<=,>=,>,!=,   mysql中的不等于 <>
 -- 2.2)Java中逻辑运算符:&&,||  mysql推荐使用 and , or
 -- 2.2)针对两个范围查询: 可以使用&&,可以使用and, 也可以 "字段名称 between 值1 and 值2"

SELECT  id,name,address  FROM  student3  WHERE  age IN(18,20,45)  ;
SELECT  id,name,address  FROM  student3  WHERE  age BETWEEN 20  AND 30 ;
SELECT  id,name,address  FROM  student3  WHERE  age > 20 ;
SELECT  id,name,address  FROM  student3  WHERE  age > 20 ;
SELECT  *  FROM  student3  WHERE  age > 20 ;

-- Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null
-- 需求:查询学生的英语成绩为null的学生所有信息
-- select * from student3 where english == null ;
-- mysql中判断某个字段为null,使用的语法是 is null 
-- 判断某个字段不为null,使用的语法是 is not null

SELECT * FROM student3 WHERE english IS NULL ;
SELECT * FROM student3 WHERE english IS NOT NULL ;

3、int类型字段求和

(字段名称1 + 字段名称2)  “别名”;

注意:int类型的值 + null 值 = null;mysql提供函数  ifnull(字段名称,值);如果字段名称是null,给4一个默认值。

SELECT   NAME  '姓名',(math + english)  '总分'  FROM student3;
SELECT   NAME  '姓名',(math + ifnull(english,0))  '总分'  FROM student3;

4、模糊查询

where条件后面加入模糊查询 ---关键字  like

select  字段列表  from  表名  where  字段名称  like  '%xxx%' ;

%:代表任何个字符也可以为空字符(使用居多):网站门户系统---"搜索商品" ,模糊搜索;
_:代表某个单个字符;

SELECT  *  FROM  student3  WHERE  NAME  LIKE  "_化_";

5、聚合函数查询

作用:能够针对int类型形成单行单列数据。(可以认为他是用来操作列的)

-- select   聚合函数  from  表名  where  指定条件;
-- count(字段名称):查询表中数据个数 ,字段名称使用都是id,非业务字段;

--计算总的数据数,属性相同时也增加个数,只有数据为null时,不计入个数;
-- avg(字段名称): 查询这个字段中平均值 
-- sum(字段列表):求和函数
-- max(字段名称):最大值
-- min(字段名称):最小值

SELECT COUNT(id) '数据条数' FROM student3 ;
SELECT AVG(math) '数学平均分' FROM student3;
//此句没有ifnull则会造成该调数据为null
SELECT SUM(math+IFNULL(english,0))  '总分'  FROM  student3;
SELECT MAX(math) '数学最高分' FROM student3 ;
SELECT min(math) '数学最低分' FROM student3 ;

select语句嵌套select语句 --- 子查询(注意写法)

SELECT 
	*
FROM 
	student3
WHERE 
	math >  (SELECT AVG(math) FROM student3) ;

6、排序查询(默认为升序排列)

1.按照升序或者降序排列输出:

2.先满足条件,才能排序!where 须在order by之前:

3.多个字段要同时排序,首先第一个字段排序规则,然后才是第二个字段:

select 字段列表 from 表名 order by 字段名称1 排序规则(asc升序或者desc降序)

SELECT *  FROM student3 ORDER BY math ASC ;

SELECT NAME ,math FROM student3 
WHERE math > 56 ORDER BY math DESC ;

SELECT * FROM student3
ORDER BY math DESC , english ASC ;

ascending order:升序排序                Descending order:降序排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值