MySQL基本语法一

这篇博客详细介绍了数据库的DDL语言,包括创建、删除、修改和查询数据库的SQL语句,以及对表的DDL操作,如创建、删除、修改表结构和查询表信息。此外,还讲解了DML语言中的数据添加、删除和修改,以及DQL语言中的数据查询,涉及各种查询条件和函数的使用。内容涵盖了数据库管理的基础操作和SQL语法核心。
摘要由CSDN通过智能技术生成

DDL语言:

  1. 对数据库的DDL

    1. 创建数据库
      
      1. 创建数据库:create database 数据库名
      2. 创建数据库并且判断此数据库是否已经存在:create database if not exists 数据库名
      3. 创建数据库并指定字符集:create database if not exists 数据库名 character set 字符集;
    2. 删除数据库
      
      1. drop database 数据库名;
      2. drop database if exists 数据库名;
    3. 修改数据库
      
      1. alter database 数据库名 character set 字符集;
    4. 查询数据库
      
      1. 查看所有数据库:show databases
      2. 查看数据库创建的SQL语句:show create database 数据库名;
    5. 使用数据库
    6. use 数据库名;
  2. 对表的DDL

  3. 创建表
     格式:
         create table 表名(
             字段名1    数据类型    [完整性约束],
             字段名2    数据类型     [完整性约束],
             .....
    
             字段名n    数据类型     [完整性约束]
        );
        数据类型:
         1.  varchar(n)    字符类型,具有n个字符长度
         2.  Int     整型
         3. double(m,n)   浮点类型  m表示数字的位数,n表示小数点后的位数
         4.   日期类型:
             Date  日期类型  格式:yyyy-MM-dd 
             Datetime  日期类型  格式: yyyy-MM-dd HH:mm:ss
             Timestamp  日期类型  表示的是时间戳  格式:yyyy-MM-dd HH:mm:ss  注意:用该
             数据类型修饰的字段,如果没有填写值,就会补充当前系统日期为默认值
    
  4. 删除表
     1.  drop table 表名;
    
  5. 修改表
     1.  修改表名
         alter table 表名  rename to 新表名;
     2.  修改字段名
         alter tabel 表名 change 旧字段名 新字段名 数据类型; 
     3.  修改字段的数据类型
         alter table 表名 modify 字段名  新数据类型;
     4.  添加字段
         alter table 表名 add 字段名 数据类型;
     5.  删除字段
         alter table 表名 drop 字段名;
    
  6. 查询表
     1.   show tables;  查看当前数据库下有哪些表
     2.   desc 表名;查看表结构
     3.   show create table 表名;      
    

练习:
1.创建一个指定字符集(gbk)的数据库(mydb)
2.修改数据库mydb的字符集为utf8
3.使用数据库,并创建表(Student)
4.表Student具有如下字段:id int,name 字符类型,sex 字符类型,score 浮点类型
5.修改表的名字为t_student,并添加字段入校时间(time 日期类型)
6.修改字段sex的名字为gender
7.删除表

DML语言(对表中的数据进行操作:添加、删除、修改):

  • 添加数据
    
     1. insert into 表名(字段名1,字段名2,...,字段名n)values(数据1,数据2,....,,数据n);
     2. insert into 表名 values(数据1,数据2,....,,数据n);
      注意:1.数据的顺序必须和表中的字段顺序保持一致;2.数据的数量和字段的数量一致
    3.insert into 表名(字段名1,字段名2,...,字段名n)values(数据1,数据2,....,,数据n),(数据 1,数据2,....,数据n);
    
  • 删除数据
    

    delete from 表名 [where子句]

  • 修改数据
    

    update 表名 set 字段=数据 [where 子句]
    DQL语言(数据查询语言,对数据进行查询操作):

    查询数据:
    select 字段1…字段n from 表名
    [where 子句]
    [group by子句 [having子句]]
    [order by 子句[desc | asc]]
    [聚合函数,limit子句]
    注意:可以使用*表示所有字段
    select * from 表名;查询所有字段
    基础查询:

指定字段查询
select 字段名1,…字段名2 from 表名
例:
– 查询所有的数学成绩
– select math from T_SCORE;
– 查询所有数学、语文、英语的成绩
– select math,chinese,english from t_score;
出除空值
– IFNULL(expr1,expr2) 如果expr1为NULL,就使用epxr2表达式
– select IFNULL(math,0) from t_score;
取别名
使用AS关键字取别名,可以省略
例:
select (IFNULL(math,0)+IFNULL(english,0)+IFNULL(chinese,0)) as sum from t_score;
select (IFNULL(math,0)+IFNULL(english,0)+IFNULL(chinese,0)) sum from t_score;
参与运算
– 参与运算(四则运算)
– select (math*english+chinese)%10 from t_score;
– select (IFNULL(math,0)+IFNULL(english,0)+IFNULL(chinese,0)) from t_score;
where子句(用于条件判断)
格式:
where 条件

关系运算符(>、<、>=、<=、=、!=)
– 查询英语成绩刚好等于90分的信息
– select * from t_score where english=90;
– 查询英语成绩刚好不等于90分的信息
– select * from t_score where english!=90;
– 查询数学成绩大于70的所有信息
– select * from t_score where math>70;
[NOT] IN(集合)
– 查询数学成绩刚好等于80,68,50的所有信息
– select * from t_score where math IN (80,68,50);
– 查询数学成绩刚好不等于80,68,50的所有信息
– select * from t_score where math Not IN (80,68,50);
BETWEEN…AND… 在范围之间
– 查询数学成绩在80-90之间的所有信息
– select * from t_score where math BETWEEN 80 and 90;
&&(and)、||(or)
– 查询数学成绩在80-90之间的所有信息
– select * from t_score where math>=80 && math<=90;
– select * from t_score where math=80 || math=68 || math=50;
– select * from t_score where math>=80 and math<=90;
模糊查询(like)
占位符
下划线 (_):表示一个字符
百分号(%):表示0个或者多个字符
– 查询王姓同学的所有信息
– select * from t_score where name=“王”;-- 错误
– select * from t_score where name like “王%”;
– 查询姓名中包含‘二’这个字符的同学的所有信息
– select * from t_score where name like ‘%二%’;
– 查询某某三同学的所有信息
– select * from t_score where name like ‘%三’;
查询null值
– 查询没有考语文所有的信息
– select * from t_score where chinese=null;-- 错误
– select * from t_score where chinese="";-- 错误
select * from t_score where chinese is null;
排序

对查询的结果进行排序ORDER BY
ASC表示升序
DESC表示降序
注意:可以多个字段一起排序,先按照某个字段排序,相同的再按照另一个字段排序
– 查询语文大于等于70的所有同学的信息并按照降序排序
– select * from t_score where chinese>=70 ORDER BY chinese desc;
– 查询所有的信息,先按照数学成绩进行降序拍排序,
– 相同数学再按照语文成绩进行降序排序
– select * from t_score ORDER BY math desc,chinese desc;
– select * from t_score ORDER BY english asc,chinese desc;
聚合函数:作用于数据表中的字段,按照列来进行统计、计算等

count(字段):统计该字段有效数据量
– 统计班上有多少同学
– select count(id) from t_score;-- 注意:不能使用带有null值的字段进行统计
sum(字段):对该字段进行求和
– 统计英语成绩的总和
select sum(english) from t_score;
avg(字段):对该字段求平均值
– 统计数学成绩的平均值
select avg(math) from t_score;
max(字段):求该字段的最大值
min(字段):求该字段的最小值
– 统计语文成绩的最高分和最低分
– select max(chinese) from t_score;
– select min(chinese) from t_score;
分页查询(limit):

– 分页查询 每页显示三条数据
select * from t_score limit 5,5;
– select * from t_score limit num1,num2;
– num1表示从表中的第几条数据开始查询(起始位置为0)
– num2表示从表中查询多少条数据
–表达式 limit (pageCode-1)*pageSize,pageSize
分组查询
关键字:group by 字段 [having 判断条件]

– 查询班级男生和女生的人数
– select gender,count(gender) from t_student group by gender;

– 查询班级中年龄相同的同学的人数
– SELECT age,count(age) from t_student group by age;

– 查询班级中男生和女生的平均年龄
– select gender,AVG(age) from t_student group by gender;

– select name,gender,AVG(age) from t_student group by gender;错误
– 当使用分组以后,查询的内容只能是分组的字段或者聚合函数

– 查询年龄大于19岁的男和女的平均成绩,并且平均成绩大约93分;
– select gender,avg(score) from t_student
– where age>19
– group by gender
– having avg(score)>93.5;

– 查询成绩大于90分的男生和女生,平均分大于94的各自人数
– select gender,count(id) from t_student
– where score>90
– group by gender HAVING avg(score)>95;
注意:where子句和having子句的区别

  1. where子句用在分组之前,并且不能使用聚合函数
  2. having子句用于对分组以后的内容进行判断,用在分组之后,可以使用聚合函数
  3. where子句先于分组和having先执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值