SQL学习总结

一.数据库(DataBase)

什么是数据库?

数据存放在一张张表里,而表又是存放在数据库中,数据库就是所有存放数据的表的"文件夹".

学习数据库主要就是学习如何对数据进行增删改查操作

SQL

Structured Query Language:结构化查询语句

使用该语句可以进行与数据库进行交互,完成对数据的增删改查.

DBMS

DataBase Management System:数据库管理系统(数据库软件)

主流的有:MYSQL

                MariaDB

                Oracle

                SQLServer

                DB2

                SQLite

二.SQL语句

SQL语句分类:

DDL:数据定义语言,主要是对库和表相关的操作

DML:数据操作语言,主要是对数据进行增删改操作

DQL:数据查询语言,对数据进行查询

TCL:事务控制语言

DCL:数据控制语言

数据类型

1.整型:

int(m)和bigint(m),m表示长度

2.字符串类型:

char(m):固定长度,一般用于存放类似性别这种长度固定的字符串

varchar(m):可变长度字符串,会根据内容大小来改变长度,更节省空间

text(m):可变长度字符串,一般存放255个以上字符

3.浮点型:

double (数1,数2)   数1表示总长度,数2表示小数点后的长度

4.日期型:

date:保存格式:年月日

time:保存格式:时分秒

datetime:保存格式:年月日 时分秒

timestamp:时间戳,从1970年1月1日到现在的毫秒数,保存的是年月日时分秒,默认是系统当前时间

SQL语句格式:

1.以;结尾

2.不区分大小写

3.可以有空格和换行,但结尾的时候一定要加;

与数据库相关的SQL语句

1.创建数据库

create database 数据库名 charset=utf8;

2.查看所有数据库

show databases;

3.查看数据库信息

show create database 数据库名;

4.删除数据库(慎用!)

drop database 数据库名;

5.使用数据库(必须先使用数据库才能对表和数据进行操作)

use 数据库名;

与表相关的SQL语句

1.创建表

create table 表名 (字段1名 字段类型(长度) , 字段2名 字段类型(长度)...) charset=utf8;

2.删除表

drop table 表名;

3.查看所有的表

show tables;

4.查看表信息

show create table 表名

5.查看表结构

desc 表名;

6.重命名表

rename table 原表名 to 新表名;

7.添加字段

alter table 表名 add 字段名1 字段类型;------------------默认添加在末尾

alter table 表名 add 字段名1 字段类型 first;------------添加在最开始的地方

alter table 表名 add 字段名1 字段类型 after xxx;-----在xx字段后添加

8.删除字段

alter table 表名 drop 字段名

9.修改字段

alter table 表名 change 原字段名 新字段名 新字段类型

与数据相关的SQL

1.增加数据

insert into 表名 values (字段1值,字段2值...);----------------全表插入

insert into 表名(字段1,字段2....) values (值1,值2...);------字段插入

insert into 表名 values (字段1值,字段2值...),(字段1值,字段2值...)....;--------批量插入

insert into 表名(字段1,字段2....) values (值1,值2...),(值1,值2).....;------------批量插入

2.删除数据

delete from 表名;---------------------删除表中所有数据

delete from 表名 where 条件;-----根据条件删除表中数据

3.修改数据

update 表名 set 字段名=值;-------------------------------------对表中所有数据进行修改

update 表名 set 字段名=值 where 条件;---------------------根据条件修改表中数据

主键

什么是主键?

作为表的唯一标识的字段,在创建表的时候,在字段后加primary key

主键约束

主键非空且唯一

主键自增策略

一般在主键后面会添加主键自增auto_increment,每次添加的时候就可以不用添加主键中的内容,主键的值会自动加1

当插入数据的时候插入了主键的值,再进行自增的时候会从当前最大的那个值开始自增

当删除其中一条数据时,主键的值会发生改变,并且那条数据对应的主键的值也会被删除,即id=3的数据被删除之后,后面再插入数据就是从id=4开始,需要添加id=3需手动添加

查询SQL语句

1.查询表中所有数据

select*from 表名;

2.查询表中的字段

select 字段名 from 表名;

select 字段名1,字段名2... from 表名;

3.给字段起别名,在字段名后面跟空格,可以加" ",' '

select 字段名 别名 from 表名;

select 字段名1 别名,字段名2 别名... from 表名;

4.where 关键字,后面跟条件

select*from 表名 where 条件;

5.is null/is not null判断是否数据是否为空

select*from 表名 where 字段名 is null/is not null;

6.去重

select distinct 字段名 from 表名;

7.and / or  并 / 或

select * from 表名 where 条件1 and 条件2;

select * from 表名 where 条件1 or 条件2;

8.比较运算符  <    >     <=    >=    !=    <>

9.between.....and....    在...之间,闭区间

select*from 表名 where 字段名  between 条件1 and 条件2;

select*from 表名 where 字段名 not between 条件1 and 条件2;  

10.in  在...之间,当查询条件为同一字段的两个不同的值的时候可以使用该关键字

select*from 表名 where 字段名 in(条件1,条件2)

select*from 表名 where 字段名 not in(条件1,条件2)

11.模糊查询 like

一般使用%/_来表示模糊查询的条件

%表示0或多个字符

_表示一个字符,一个下划线代表一个字符

select*from 表名 where 字段名 like 条件;

12.排序order by

select * from 表名 order by 升序/降序;

升序:默认或asc

降序:desc

13.分页查询 limit

select*from 表名 limit 数1,数2;

数1表示跳过的数据数(页数-1乘以查询的条数)

数2表示查询的条数

例如:查询第3页的5条数据

select*from 表名 limit 10,5

14.聚合函数

avg(字段名):平均值,max(字段名):最大值,min(字段名):最小值,sum(字段名):求和,count(字段名/*):求个数

select avg(字段名) from 表名 where 条件;

15.分组,根据字段分组,查询满足该字段的每一条信息

查询中出现了聚合函数和普通列即混合列时,需要分组,按照非聚合列分组

select*from 表名 group by 字段名

16.having 跟分组一起使用,用于包含聚合函数的条件

select*from 表名 group by 字段名 having avg(字段名)>条件;

查询条件书写顺序

select*from 表名 where 条件 group by 字段名 having 条件 order by 字段名 limit 跳过的条数,要查询的条数

子查询(嵌套查询)

将两次查询拆开,将上一次查询的结果作为本次查询的条件

表与表之间的关系

一对一:A表中的一条数据只对应B表中的一条数据

一对多:A表中的一条数据对应B表中的多条数据,B表中的一条数据对应A表中的一条数据

多对多:A表中的一条数据对应B表中的多条数据,B表中的一条数据对应A表中的多条数据

多表联查

3种方式:

1.笛卡尔积,查询表1与表2的交集

select*from 表1,表2 where 关联关系;

2.连接查询,查询表1与表2的交集

select*from 表1 join 表2 on 关联关系;

3.外连接,左外查询表1的所有和表2交集的数据,右外查询表2的所有和表1交集的数据

select*from 表1 left/right join 表2 on 关联关系;

多对多关系查询

1.创建另外一张表,存放表与表之间的关系

2.select*from 表1 join 表2 on 关联关系 join 表3 on 关联关系

三.约束

6中约束

1.主键约束

非空且唯一

2.非空约束

not null

3.唯一约束

unique

4.默认约束

default xxx

5.检查约束

check(条件1 and 条件2)

字段值必须符合检查约束的范围内容

6.外键约束 foreign key

使用明确的一段代码表示两张表之间的关系

foreign key(本表主键) references 表名(主键)

约束情况

1.子表的主键值必须取自主表的主键值

2.主表的记录没有被子表使用,才可以删

四.JDBC

Java数据库连接,JavaDateBaseConnectivity

1.创建连接对象

Connection conn = DirverManager.getConnection("url","user","password");

2.创建执行SQL语句对象

Statement s = conn.createStatement();

3.执行SQL语句

s.execute("SQL语句");

s.executeUpdate("SQL语句");增删改使用

ResultSet rs = s.executeQuery("SQL语句");查询使用

4.关闭资源

conn.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值