数据库入门语句从入门到删库

MySQL数据库的基本查询语句

SQL语句的分类:

DQL:数据查询语言 select
DML: 数据操作语言 insert update delete (插入,更新,删除)
DDL: 数据的定义语言 create drop
DCL: 数据的控制语言 invoke grant

1,基本查询语句格式
语法: select 字段 from 表名

例:从学生表中查询学生的姓名:
select sname from t_student;

2,查询特定的列
语法:selet 列名(属性名字段名)from 表名

例:查询学生表中的学生学号,姓名,英文名
select sid,sname,sename from t_student;

3,查询所有的列(查询一个表所有)(属于模糊查询会印象查询时间)
语法: select*from 表名

例:查询学生表
select*from t_student;

4,去掉重复行 distinct
关键字 distinct

语法:select distinct 字段 sclass from 表名;

例:查询学生年龄,学号 去掉重复的
select distinct sid ,sage from_student;

5,使用数学表达式
在查询的时候,如果字段是数字可与使用数学表达式

例:查询每个学生的姓名和他10年以后 的年龄
select sname , sage+10 from t_student;

6,处理空值 ifnull
表中的某个字段有可能没有值,在进行数学表达式计算的时候,整个表达式都是空所以在计算之前需要处理,使用的是一个函数ifnull函数。(这个是mysql里面的函数,sqlServer 是isnull , Oracle是 nvl)

例:
查询学生姓名,高考加10分的成绩,如果没有高考分数,则默认是高考10分;
selsect sname , ifnull(sscore,10)+5 from t_student;

7,取别名as
查询的结果是一个表,表的字段名是查询的内容。如果需要将查询的结果的字段名修改可以使用关键字as。别名可以不用加引号

例:查询学生的学号,语文 ,体育的成绩,将后面的结果去成绩别名
select sid ,语文+数学+体育 as 成绩 from t_score;

8,拼接结果 concat
使用一个函数

select sname ,concat (‘我的性别是’,ssex,'我的考试分数是,'if null(sscore,0)) from t_student ;

9,限制结果 limit
查询的数据有很多行,可以使用limit 去从n到m行一般放在sql语句的最后使用

语法: select * from * limit n;--------->取结果的第n行

例:查询学生表中的所有学生姓名取表中第2个人后面两个人的名字
select sname from t_student limit 2,2;

10,排序
关键字是:order by
order by 默认的结果是升序,如果是需要降序,需要加一个关键字 desc . desc表示降序asc表示升序.排序一般只针对数字排序。

语法:select * from * order by *;
order by的后面放的是字段名,表示查询的结果按照这个字段排序。

例:查询所有学生的信息,按照学生的年龄排序
​select * from t_student order by sage;

根据多个字段排序;
查询所有学生的信息,按照学生的班级和年龄排序;
select* from t_student order by sclass , sage;先按照班级排序,相同的班级在按照年龄排序

11,筛选数据where
没有使用where,查询是在整张表里面查询,有时表中的数据很多,需要通过某个条件选出数据就需要使用关键字where。

语法:select * from * where 条件

查询学生表中所有男生的信息:
select * from t_student where ssex=‘男’;

例:如果有一个用户表user ,里面有变化ID,用户名username ,密码password等字段,用户在输入用户名和密码的时候,后台执行什么sql语句
select password from user where username = ‘username’

根据条件查询的时候,如果字段等于某个值,这个值需要使用引导,单引号双引号都可以,推荐单引号,如果值是数字,可以使用引号也可以不用。(在数据库的连接的时候数据库是被双引号引导的这种时候就有可能会和sql语句中的引号冲突)

12,多条件查询
条件之间的关系 and(&&) or(||) not(<>)

例:查出三个班级的男生信息
select *from t_student whele sclass =3 and ssex ‘男’;

查询1班高考分数500以上的男生姓名
select sname from t_student where sclass = 1 and sscore > 500 and ssex = ‘男’;

查询学生表中班级是2或者3的所有所有数据
select * from t_student where sclass =2 or sclass=3;

例:查询表中的数据did不是空,且1班的女生信息

select * from t_student where not did is null and sclass = 1 and ssex= ‘女’;

13,如果对数据既有筛选where 也有排序orderby 还有取结果limit

例:照顾年龄排列查询1班的是女性信息取前五个,结果:

select * from t_student where sclass= a and ssex=‘女’ order by sage desc limit 5;

14,模糊查询like

语法 :select * from where 字段 like

模糊查询表达式只有两个符号。
_ 任意一个字符
% 多个字符

例:姓张的名字长度为2的
select * from where 字段 like “张_ ”;
姓张的名字长度为3的
select * from where 字段 like “张__ ”;
姓张的名字任意长度的
select * from where 字段 like “张% ”;
例:名字最后一个字为张名字长度为2的
select * from where 字段 like “_张 ”;

15,正则表达式 regexp
语法:select * from * where 字段 regexp 正则表达式

例:手机里面有三个八
select * from t_student where sphone regxp ‘8(3)’;
查询英文名字有数字了
​select*from t_student where sename regexp ‘[0-9]’;

| 表达或
[]代表一个字符,中括号里面的字符之间是或的关系
[^]表示不包含
[a-z]a到z中的小写字母
?修饰前面一个字符,表示前面这个有或者没有 ab?c
加号+ 修饰一个字符 表示有一个或多个
*修饰前面一个字符 ,表示0个或者多个
{n}修饰前面一个字符,表示有n个

16,聚集函数
1,求和 :sum
2,求平均值:avg
3,求最大值:max
4,求最小 值:min
5,求行数:count(空值不统计)

17,时间日期函数
curdate()获取数据库系统里的时间
curtime()获取系统此时的时间时分秒
now() localtiime() sysdate() 获取年月日
year(t) 获取t里面的年份
month(t)获取t里面的月份
day(t)获取t里面的天数
dayofmone()获取这个月的第几天
dayofweek()获取星期几
dayofyear()获取年

18,多表查询
1,等值连接
使用”=”关系将表连接起来的查询
select ts.snaem , td.dname from t_student ts , t_dept td where ts.did = td.did;

2, 内连接
select ts.sname,td.dname from t_student inner join t_student ts,t_dept td on ts.did = td.did;

3,左连接
select ts.sname , td.dname from t_student ts left join t_dept td on ts.did = td.did;

4, 右连接
select ts.sname , td.dname from t_student ts right join t_dept td on ts.did = td.did;

从入门到删库:drop database 数据库名 ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值