SQL学习笔记

一.启动

1.先启动SQL:

以管理员身份运行cmd,
输入net start 服务名(mysql)【启动服务】
net stop 服务名【停止服务】
2.连接
法1:MYSQL command line client客户端(开始-------菜单MYSQL文件夹下)进入,输入密码
3.退出客户端时
法1:“exit”或ctrl+c(不推荐,只适合root用户)
法2: mysql -h localhost -P3306(//端口号) -u root(用户) -p(小写表示密码)*****(密码)【即mysql -h主机名 -P端口号 -u用户名 -密码//如果是本机,主机号和端口号部分可以省略】然后“enter”
【或mysql -h localhost -P3306(//端口号) -u root(用户) -p(小写表示密码)按“enter”后再输密码】然后输入“exit”或按“Ctrl+c”
4.配置环境变量

二.查缺补漏

1)count和group by搭配时,先执行group by 再执行count(),统计的是每个group虚拟表中的行数
2)from 后面给表起别名,select后面可以给列/字段起别名
3)substring 截取一定的字符串
4)substr和instr索引从1开始
limit索引从0开始
5)命令:【注意要加;否则不显示】
6)查看所以数据库:show databases;【展示数据库4个】
打开指定数据库:use test;【用这个数据库】
7)use test;
查看当前库的所有表:show tables;【是test中的tables】
查看其他库的所有表:show tables from mysql(库名);【是mysql中的tables】
8)select database();【查看所在的库】
9)创建表:creat table 表名【例如stuinfo】(【注意此刻是括号,不是分号】“enter”
id int,【逗号】
name varchar(20))【注意此刻的)和建表后的(对应哦】【varchar自增长字符串节省空间,char时间效率,varchar空间效率】
查看表结构:desc 表名;
10).查:select 字段【或
表示全部字段】 from 表名’
11).增/插:insert into 表名(字段,字段) values(值,“值”);【当值是字符类型时,要加""】
12).改:update 表名 set 字段=xxx where xxx;
13).删:delete from 表名 where xxx;
14).查看sql版本:select version();【登录到mysql的情况】
mysql --versiom【没有登录到mysql的情况】
15).注释:#或者-- 【此处必须有空格】
16).当字段或其他单词和语句重名时【例如有个字段叫select】,加上双引号*着重符【单引号也行】

执行脚本:
右击“root@localhost”后执行脚本文件,选中脚本【c盘-program file-mysql-测试文件】

查询: [查询结果是虚拟表]
重命名:select 字段 as 起个新名 from 表名;【as也可省略】
去重distinct: select distinct 字段 from 表名;【就把某字段中重复的值去掉了】

三.语法

连接:

1.“+” 只能用于数值计算,当有字符连接时,会把字符转化成数字计算:
2. 字符连接要用函数 concat()。例如concat(‘a’,‘b’) as 结果;形成新的字段,该字段值就是ab,例如concat(字段1,字段2) as 结果,则出现新的一列,列名为结果,值为原来字段1的值和字段2的值连接起来【例如姓名】
3.ifnull函数:ifnull(字段名,值);例如ifnull(salary,0);即如果salary为null,则输出值为0。

条件查询:

select 查询列表(字段,值,函数) from 表名 where 筛选条件;
条件运算符: null+任何值都为null
逻辑运算符:and(&&),or(||),not(!)
模糊查询: like,between and ,in, is null.
(1)like:例如firstname like ‘%a%’【转义字符\】【也可自己定义转义字符,在后面加上escape’$’】not(firstname like ‘%a%’)
(2)between 100 and 200 包含临界值。
(3)字段 in(值1,值2,…) 相当于字段=1,or 字段=2,…【in 表示属于,其中类型必须相同或兼容,而且其中不支持通配符,like才支持通配符】
(4)is null 专门用于判断是否为null值相当于=null,但却不能用=,is not null–不是null
(5)安全等于<=>既可用于判断数值,也可判断null,但可读性较差。

排序查询:

select 字段 from 表 order by 某字段(升序asc,降序desc)

条件查询:

where
case用法1:case 字段/表达式 when 常量 then 要显示的值或语句 else end as
(类似于java中swith,但swith适用于等值判断)
case用法2: case when 条件 then 要显示的值或语句 else end as
(类似于多重if)

分组查询(第59集)

where 优于 group by
group by 优于 having
先grroup by 分组后再cout出每一组的行数,然后输出新表
分组前筛选【
select ***
from *** as**【as可省略】给原始表起名
where ***
group by
order by】
分组后筛选【
group by
having
order by】
99用法
【select **
from 表1 别名
连接类型 join 表2 别名
连接类型 join 表3 别名
on 连接条件
where 筛选条件
group by 分组
having
order by;】最后一个有分号

【连接类型】

内连接:inner
左外:left
右外:right
全外:full
交叉:cross

用法:
多表连接查询:
笛卡尔乘积,由于没有有效的连接乘积,造成查询结果是mn行(表一m行,表二n行)
分类:
内连接
等值连接 select 字段1,字段2 from 表1,表2【from后面可以为表起别名】 where
**【查询条件】and 【筛选条件】
非等值连接
自链接

外连接
左外连接
右外连接
全外连接–cross join 笛卡尔积
交叉连接
外连接 【外连接不仅可以返回符合连接和查询条件的数据行,而且还可以返回不符合条件的一些行。而内连接只能返回连接表中符合连接条件和查询条件的数据行】
having与where的区别
having要分组

子查询:【第87集】–嵌套在其他语句内部的查询

就是叠加的select 通常在where,having 后面(select后接标量子查询,from支持表子查询第92集,exist支持表子查–相关子查询)
特点:子查询的执行优于主查询的执行
分类:标量子查询-搭配=,<,>,<>,等单行操作符
列子查询-搭配in,any/some(与列表中某一个比较),all(与列表中所有的比较)
行子查询(第90集)
表子查询
select 后的 select子查询通常涉及两个表 用的比较少,可用表连接替代

分页查询(第95集)

应用场景-当一页信息显示不全时,需要分页提交SQL请求
命令在最后limit 要显示条目的起始索引,条数【起始索引从0开始】例如:limit 0,5【前五条】当从第一条开始时0可以省略
差某一页时公式: limit (page-1)*size.size
练习题:第98集

连接查询(100集)

union【去重】
union all【不去重】
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
连接查询与联合查询的区别:
连接查询,两个表的数据类型没有要求,但必须有关联(交集)
联合查询,两个表可以没有关联,但是查询字段数量相同,且对应的数据类型相同,表的列数也要相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值