探针一号的SQL学习笔记

SQL学习笔记

1.问题

什么是数据库?

是一个仓库,可以按照数据结构来组织,存储和管理数据。 是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

什么是数据库管理系统?

一种操作和管理数据库的大型软件,用户可以通过它访问到数据库里的数据。

什么是SQL?

结构化查询语言(Structured Query Language)简称SQL
(发音:/ˈes kjuː ˈel/ “S-Q-L”)(的确,我最开始一直skrskr地读) 是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

什么是MySQL?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品,是最流行的关系型数据库管理系统之一。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、开放源码等特点,一般中小型网站的开发都选择MySQL作为网站数据库。

PHPstudy帮我备好了环境?

YES,真香哈 在PHPstudy软件管理中,下载phpMyAdmin4.8.5
打开谷歌浏览器,输入http://localhost/phpMyAdmin4.8.5进入

2.SQL基本语句

理应大写
西卡西,小写好像也没啥问题
记得加分号!!!!!

show databases;       -- 查看所有数据库
create database 数据库名 ;  -- 创建数据库
create database 数据库名 charset=utf8;   --创建指定字符集的数据库(mysql中utf8没有-)
create database if not exists mlgb;  --如果不存在mlgb就创建mlgb
show create database 数据库名 ;  --展示创建的数据库
alter database character set utf8;  --修改数据库
drop database 数据库名 ; --删库跑路
use database 数据库名;  #使用数据库
select database();    #查看当前使用的数据库
3.SQL基本数据查询

查询出来的表是虚拟表

select 列名 from 表名; #查啥表啥列
#select * 表示所有列
select 列名1 as 'XXX', 列名1 as 'YYY' from 表名;   #给查询的表起别名
select distinct 列名 from 表名; #去重

排序查询

select 列名 from 表名 order by 排序列 排序规则 [2] [规则];
asc升序
desc降序

条件查询

select 列名 from 表名 where 条件;
等值判断,就用  =
逻辑判断   and or not
不等于    <>    !=
范围      between x and y
枚举       in (x,y,z)
空的判断  is null
         is not null
         直接查=null是不行滴
模糊查询  	 like 符号
	     	% 表示任意多个任意字符
	    	_ 表示一个任意字符
分支结构查询  selectcase 
				when  条件  then  'A'
				when  条件  then  'B'
				when  条件  then  'C'
				when  条件  then  'D'
				else  'E'
			end  as  成绩  

时间查询

select 时间函数([参数列表])
	比如
select sysdate(); 当前系统时间
剩下一些函数可以自行百度

字符串查询

select 字符串函数([参数列表]select concat(firstname,lastname) as 'name' from people ;
查询几列并连接在一起

insert(str,pos,len,newstr)  
将str中pos位置开始len长度的内容替换为newstr,字符串下标从1开始 
upper()  转大写
lower()  转小写
substring(str,num,len)
将str字符串指定num位置开始截取len个内容

聚合函数

select count() from XX;   一列的总行数,会忽略NULLselect max() from XX ;     最大值
select min() from XX ;     最小值
select sum() from XX ;     求和
select avg() from XX ;     平均值

分组查询

select XX from XX where XX group by 分组依据(列);
group by + having  分组之后过滤

限定查询

select XX from XX limit 起始行,总条数

执行顺序

(1)from
(2) where
(3)group by
(4) 聚合函数
(5)having
(6) select
(7)distinct
(8) order by
(9) limit

4.SQL复杂点的数据查询

子查询

在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select语句称之为子查询语句,外部那个select语句则称为主查询。
嗯,记得加括号。
子查询结果可以是单行单列,可以是多行单列,也可以是一张表。
结果是一张表时,可以放到FROM里,但要给一个临时的表名。

select * from students 
where age > (select avg(age) from students);
关键字 all any 所有 部分 

合并查询

select XX from XX union select XX from XX ; (去掉重复记录)
select XX from XX union all select XX from XX ;(不去重复记录)
两表列数必须相同

内链接查询

select  XX from XX inner join XX on XX.YY = XX.YY ;
如果不指定连接条件,则会造成笛卡尔积的结果

左右外连接

左外链接以左表为主表,依次向右匹配,如果匹配不到,返回NULL
右外连接以右表为主表,依次向左匹配,如果匹配不到,返回NULL
select  XX from AA left join BB on AA.XX = BB.XX ;
select  XX from AA right join BB on AA.XX = BB.XX ;
5.DML操作

新增(INSERT)

insert into 表名(1,2 ...) values(1,2...);
列与值一一对应

修改(UPDATE)

update 表名 set1=1,2=2...... where 条件;
如果不加where条件的话整个表都会修改。

以下为删库跑路的主要操作
删除(DELETE)

delete from 表名 where 条件
如果不加where条件的话整个表都会被删除。

清空整张表的数据

truncate table 表名
6.数据表操作

如果表名和关键字冲突,可以在前后加 `符号来避免 。
数据类型

int
double
decimal
date
datetime
char
varchar…

创建表

create table 表名(
    列名 数据类型 [约束],
    列名 数据类型 [约束],
    列名 数据类型 [约束]    #最后一列末尾不加逗号
) [charset = utf8]     #可以指定字符编码集

修改表

alter table 表名 add 列名 类型
alter table 表名 drop 列名
drop table 表名
alter table 表名 modify 列名 类型
alter table 表名 change 旧列名 新列名 类型
alter table 表名 rename 新表名

(未完待续)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值