当前位置:   article > 正文

常用的SQL语句(SQL语句详细版,以MySQL为例)_mysql常用sql

mysql常用sql

注意:SQL大小写都可以使用

1、DDL:操作数据库

  1. 1.1 查询所有的数据库
  2. show databases;
  3. 1.2 创建数据库
  4. create database 数据库名称;
  5. 创建数据库(判断,如果不存在则创建)
  6. create database if not exists 数据库名称;
  7. 1.3 删除数据库
  8. drop database 数据库名称;
  9. 创建数据库(判断,如果不存在则创建)
  10. create database if not exists 数据库名称;
  11. 1.4 使用数据库
  12. 数据库创建好了,要在数据库中创建表,得先明确在哪儿个数据库中操作,此时就需要使用数据库。
  13. use 数据库名称;
  14. select database(); ------》查看当前使用的数据库

2、DDL:操作表

操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

  1. 2.1 查询表
  2. 查询当前数据库下所有表名称 -------》 show tables;
  3. 查询表结构 ------------- --------》 desc 表名称;
  4. 2.2 创建表
  5. create table 表名 (
  6. 字段名1 数据类型1,
  7. 字段名2 数据类型2,
  8. 字段名n 数据类型n
  9. );
  10. 例如:
  11. create table tb_user (
  12. id int,
  13. username varchar(20),
  14. password varchar(32)
  15. );
  16. 2.3 表的数据类型
  17. 数值-------------------------------
  18. tinyint : 小整数型,占一个字节
  19. int : 大整数类型,占四个字节
  20. eg : age int
  21. double : 浮点类型
  22. 使用格式: 字段名 double(总长度,小数点后保留的位数)
  23. eg : score double(5,2)
  24. 日期----------------------------------------------
  25. date : 日期值。只包含年月日
  26. eg :birthday date
  27. datetime : 混合日期和时间值。包含年月日时分秒
  28. 字符串---------------------------------------------
  29. char : 定长字符串。
  30. 优点:存储性能高
  31. 缺点:浪费空间
  32. eg : name char(10) 如果存储的数据字符个数不足10个,也会占10个的空间
  33. varchar : 变长字符串。
  34. 优点:节约空间
  35. 缺点:存储性能底
  36. eg:name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间
创建表案例:
  1. 需求:设计一张学生表,请注重数据类型、长度的合理性
  2. 1. 编号
  3. 2. 姓名,姓名最长不超过10个汉字
  4. 3. 性别,因为取值只有两种可能,因此最多一个汉字
  5. 4. 生日,取值为年月日
  6. 5. 入学成绩,小数点后保留两位
  7. 6. 邮件地址,最大长度不超过 64
  8. 7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
  9. 8. 学生状态(用数字表示,正常、休学、毕业...)
  10. create table student (
  11. id int,
  12. name varchar(10),
  13. gender char(1),
  14. birthday date,
  15. score double(5,2),
  16. email varchar(15),
  17. tel varchar(15),
  18. status tinyint
  19. );

3.删除表

  1. 删除表 drop table 表名;
  2. 删除表时判断表是否存在 drop table if exists 表名;

4.修改表

  1. 修改表名
  2. alter table 表名 rename to 新的表名;
  3. -- 将表名student修改为stu
  4. alter table student rename to stu;
  5. 添加一列
  6. alter table 表名 add 列名 数据类型;
  7. -- 给stu表添加一列address,该字段类型是varchar(50)
  8. alter table stu add address varchar(50);
  9. 修改数据类型
  10. alter table 表名 modify 列名 新数据类型;
  11. -- 将stu表中的address字段的类型改为 char(50)
  12. alter table stu modify address char(50);
  13. 修改列名和数据类型
  14. alter table 表名 change 列名 新列名 新数据类型;
  15. -- 将stu表中的address字段名改为 addr,类型改为varchar(50)
  16. alter table stu change address addr varchar(50);
  17. 删除列
  18. alter table 表名 drop 列名;
  19. -- 将stu表中的addr字段 删除
  20. alter table stu drop addr;

5、DML:操作表中的数据

DML主要是对数据进行增(insert)删(delete)改(update)操作。

  1. 给指定列添加数据
  2. insert into 表名(列名1,列名2,…) values(值1,值2,…);
  3. 给全部列添加数据
  4. insert into 表名 values(值1,值2,…);
  5. 批量添加数据
  6. insert into 表名(列名1,列名2,…) values(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
  7. insert into 表名 values(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
  • 练习增
  1. select * from stu;
  2. 1
  3. -- 给指定列添加数据
  4. insert into stu (id, name) values (1, '张三');
  5. -- 给所有列添加数据,列名的列表可以省略的
  6. insert into stu (id,name,sex,birthday,score,email,tel,status) values (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);
  7. insert into stu values (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);
  8. -- 批量添加数据
  9. insert into stu values
  10. (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),
  11. (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1),
  12. (2,'李四','男','1999-11-11',88.88,'lisi@itcast.cn','13888888888',1);
  • 修改表数据
    1. update 表名 set 列名1=1,列名2=2,… [where 条件] ;
    2. 1
    3. 注意:
    4. 修改语句中如果不加条件,则将所有数据都修改!
    5. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分
    6. 练习
    7. 将张三的性别改为女
    8. update stu set sex = '女' where name = '张三';
    9. 将张三的生日改为 1999-12-12 分数改为99.99
    10. update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
    11. 注意:如果update语句没有加where条件,则会将表中所有数据全部修改!
    12. update stu set sex = '女';
  • 删除数据
    1. delete from 表名 [where 条件] ;
    2. 练习
    3. -- 删除张三记录
    4. delete from stu where name = '张三';
    5. -- 删除stu表中所有的数据
    6. delete from stu;

6、DQL:数据的查询

  1. select
  2. 字段列表
  3. from
  4. 表名列表
  5. where
  6. 条件列表
  7. group by
  8. 分组字段
  9. having
  10. 分组后条件
  11. order by
  12. 排序字段
  13. limit
  14. 分页限定
 基础查询
  1. 查询多个字段
  2. select 字段列表 from 表名;
  3. select * from 表名; -- 查询所有数据
  4. 去除重复记录
  5. select distinct 字段列表 from 表名;
  6. 起别名
  7. as: as 也可以省略
  8. 查询姓名、数学成绩、英语成绩。并通过as给math和english起别名(as关键字可以省略)
  9. select name,math as 数学成绩,english as 英文成绩 from stu;
  10. select name,math 数学成绩,english 英文成绩 from stu;
 条件查询
select 字段列表 from 表名 where 条件列表;

 条件查询练习

  1. 查询年龄大于20岁的学员信息
  2. select * from stu where age > 20;
  3. 查询年龄大于等于20岁的学员信息
  4. select * from stu where age >= 20;
  5. 查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
  6. select * from stu where age >= 20 && age <= 30;
  7. select * from stu where age >= 20 and age <= 30;
  8. 上面语句中 &&and 都表示并且的意思。建议使用 and
  9. 也可以使用 betweenand 来实现上面需求
  10. select * from stu where age BETWEEN 20 and 30;
  11. 查询入学日期在’1998-09-01’ 到 ‘1999-09-01’ 之间的学员信息
  12. select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';
  13. 查询年龄等于18岁的学员信息
  14. select * from stu where age = 18;
  15. 查询年龄不等于18岁的学员信息
  16. select * from stu where age != 18;
  17. select * from stu where age <> 18;
  18. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
  19. select * from stu where age = 18 or age = 20 or age = 22;
  20. select * from stu where age in (18,20 ,22);
  21. 查询英语成绩为 null的学员信息
  22. null值的比较不能使用 = 或者 != 。需要使用 is 或者 is not
  23. select * from stu where english = null; -- 这个语句是不行的
  24. select * from stu where english is null;
  25. select * from stu where english is not null;
模糊查询练习

模糊查询使用like关键字,可以使用通配符进行占位:

(1)_ : 代表单个任意字符

(2)% : 代表任意个数字符

  1. 查询姓’马’的学员信息
  2. select * from stu where name like '马%';
  3. 查询第二个字是’花’的学员信息
  4. select * from stu where name like '_花%';
  5. 查询名字中包含 ‘德’ 的学员信息
  6. select * from stu where name like '%德%';
排序查询 
  1. select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
  2. ASC : 升序排列 (默认值)
  3. DESC : 降序排列
  4. 注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
  5. 查询学生信息,按照年龄升序排列
  6. select * from stu order by age ;
  7. 查询学生信息,按照数学成绩降序排列
  8. select * from stu order by math desc ;
  9. 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
  10. select * from stu order by math desc , english asc ;

7、 聚合函数

将一列数据作为一个整体,进行纵向计算。

现有一需求让我们求表中所有数据的数学成绩的总和。这就是对math字段进行纵向求和。

聚合函数分类
函数名    功能
count(列名)    统计数量(一般选用不为null的列)
max(列名)    最大值
min(列名)    最小值
sum(列名)    求和
avg(列名)    平均值

 聚合函数语法

  1. select 聚合函数名(列名) from 表;
  2. 注意:null 值不参与所有聚合函数运算
  3. 统计班级一共有多少个学生
  4. select count(*) from stu;
  5. 查询数学成绩的最高分
  6. select max(math) from stu;
  7. 查询数学成绩的最低分
  8. select min(math) from stu;
  9. 查询数学成绩的总分
  10. select sum(math) from stu;
  11. 查询数学成绩的平均分
  12. select avg(math) from stu;
  13. 查询英语成绩的最低分
  14. select min(english) from stu;

 8、分页查询

select 字段列表 from 表名 limit  起始索引 , 查询条目数;

  1. 0开始查询,查询3条数据
  2. select * from stu limit 0 , 3;
  3. 每页显示3条数据,查询第1页数据
  4. select * from stu limit 0 , 3;
  5. 每页显示3条数据,查询第2页数据
  6. select * from stu limit 3 , 3;
  7. 每页显示3条数据,查询第3页数据
  8. select * from stu limit 6 , 3;
  9. 从上面的练习推导出起始索引计算公式:
  10. 起始索引 = (当前页码 - 1) * 每页显示的条数

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/848441
推荐阅读
相关标签
  

闽ICP备14008679号