基础笔记
数据库
概念:数据库:db,database。存储数据的仓库,以文件形式存储。
DBMS:数据库管理系统
常见数据库:MASYQL,ORACLE,SQL Server,DB 2,SQLlite
数据库分类:
关系型:
MASYQL,ORACLE
优点:通用的SQL语句,易于理解
缺点:由于表结构复杂,性能比较差
非关系型:
MongDB,Redis
优点:读写性能好,易于扩展
缺点:学习成本高
结构:
类 表
属性 字段
对象 记录
语法:
1,一条执行语句可以分为单行或者多行书写
2,语句用分号结尾
3,不区分大小写,但是关键字建议用大写
4,注释:
–注释内容
#注释内容
多行:/内容/
SQL语言
SQL:结构化查询语言
分类:
1,DDL:数据定义语言
对库表进行定义,删除
create,drop,
2,DML:数据操作语言
对记录进行增删改
insert,update,delete,
3,DQL:数据查询语言
对记录进行查询
select,where,in,order by,desc,asc,like,having......
4,DCL:数据访问语言
对数据库设置安全级别和访问权限
revoke
CRUD:create,retrieve,update,delete
库的操作:
数据库的创建
直接创建:create database库名;
创建同时设置编码:
create database 库名 character set 编码;
先判断数据库是否已经存在,不存在才创建:
crate database if not exists 库名;
数据库的创建
查看管理系统中有哪些数据库
show databases;
show carate database 库名;
数据库的删除
直接删除:drop database 库名;
先判断数据库是否存在,存在才删
drop database if exists 库名;
数据库的修改
修改数据库的编码格式:
alter database库名 character set 编码;
其他操作
明确要使用的数据库:
use 库名;
表的操作:
类型:
int
double
varchar
date:yyyy-MM-dd
datatime:yyyy-MM-dd HH-mm-ss
timestamp:时间戳,yyyy-MM-dd HH-mm-ss,如果timestamp没有设置,
那么这个值就是添加此记录的时间
创建表
create table 表名(字段名1 类型 [约束],字段名2 类型 [约束],...);
删除表:
直接删除:drop table 表名;
先判断数据库是否存在,存在才删
drop table if exists 表名;
查看表
直接查看当前库所有表
show tables;
查看指定表结构:
desc 表名;
修改表结构
修改表名:alter table 表名 rename to 新表名;
添加新字段:alter table 表名 add 列名 类型 约束;
修改列名:alter table change 旧列名 新列名 类型 约束;
修改列:alter table 表名 modify 列名 类型 约束;
删除列:alter table 表名 drop 列名;
其他操作
复制表结构:create table 表名 like 要复制的表名;
记录的操作
1,添加记录:
向记录中的所有字段添加值:
insert into 表名 values (值1,值2.........);
向记录中的指定字段添加值:
insert into 表名(字段1,字段...)values(值1,值2....);
2,修改记录
修改 所有记录的指定字段表名:
update 表名 set 字段名1, 字段名2...= 字段值1,字段值2,.....;
修改指定记录的指定字段值:
update 表名 set 字段名1, 字段名2...= 字段值1,字段值2...where 条件;
3,删除记录
删除指定记录:
delete from 表名 where 条件;
删除所有记录:
delete from 表名;(逐条删除,性能差)
删除所有记录:
truncated table 表名;(一次性删除整张表,性能好。当再次使用时会根据原始状态重新构建一张新表)
4,查询记录
查询所有记录的所有信息:
select * from 表名;
查询所有字段的指定字段信息:
select 字段1,字段2,...from 表名;
查询指定记录的所有字段信息:
select * from 表名 where 条件;
查询指定记录的指定字段信息:
select 字段名 from 表名 where 条件;
条件,约束
1,条件表达式:
>
<
>=
<=
!=
<>
and(&&)
or(||)
is:一般用于判断字段值是否为空
not:
2,模糊查询
like:
下划线:_:表示单个字符的匹配
百分号:%:表示任意个字符的匹配
3,指定范围内
in(值1,值2.。。。。):在指定值中进行匹配
between 值1 and 值2:在指定范围内进行匹配
4,去重复
distinct:
5,起别名
as:as可以省略
约束
热和约束都可以在新添加列时设置约束
1,非空约束 not null
表示:被非空约束的字段值不能为空;
alter table 表名 modify 列名 类型 not null;
注:值为空的字段不能修改为非空
将非空字段设置为可以为空字段:
alter table 表名 modify 列名 类型;
建表时将字段设置为非空:
ceate table 表名 (字段1 类型 not null,.....);
2,唯一约束 unique
注:唯一约束下可以有多个null值
被唯一约束的字段不能重复
alter table 表名 modify 列名 类型 unique;
注:已经有重复值的,不能创建唯一约束
将唯一字段设置为可以重复的字段
alter table 表名 drop index 列名;
建表的时候设置字段为唯一约束
create table 表名 (字段1 类型 unique,字段2.。。。。);
3,主键约束 primary key
特点:1,非空,2唯一
作用:标识表中的指定记录,一般使用没有特殊含义的标识作为主键
一般主键定义在字段列表的第一个。
常见主键:身份证号码;学号;工号。。。。。。
建表时添加主键:
1,create table 表名(主键 类型 primary key,。。。。);
2,create table 表名(字段1 类型 约束,字段2 类型 约束,。。。。。。primary key(主键字段));
建表后设置主键:
alter table 表名 modify 列名 类型 primary key;
注意:有null或者重复值的字段不能设置为主键
删除主键约束:
alter table 表名 drop primary key;
注:删除主键约束,仍会保留非空约束
主键自增长:
注:
主键自增长是MYSQL特有的
自增长的主键只能说数值类型的
只有主键才能自增长
自增长的主键可以使用null,会根据当前的最大值继续自增长
小数类型的自增长,使用空,结果是当前的最大值向上取整。
格式:
create table 表名(主键 类型 primary key auto_increment,.......);
可以将字段设置成主键的同时设置他自增长:
alter table 表名 modify 列名 类型 primary key auto_increment;
建表后为主键设置自增长:
alter table 表名 modify 列名 类型 auto_increment;
4,外键约束 foreign key
聚合函数
概念:将数据库表中的一列作为整体进行运算的函数
注:聚合函数不计算空值
1,sum( )
2,avg()
3,max()
4,min()
5,count()
一般不会有null值的字段,主键
(count*),表示所有记录
#查询语句
select
字段列表
from
表名列表
where
条件列表
group by
分组
having
分组后的条件
limit
分页
order by
排序方式
排序
格式 :
order by 字段 asc 升序/desc(降序);
多个字段升降序:
order by 字段1,排序方式,字段2,排序方式
注:只有前面的字段排序完了有相同的值时,才会根据后面的字段进行排序
分组
分组查询一般用于分组字段和聚合查询
格式:group by 分组字段
where 和having 的区别
1,where用于分组前,满足where条件后再分组,having用于分组后,满足分组后的条件才会被查询
2,where 不能由于聚合函数进行判断,having可以
分页
limit 起始下标 显示数
起始下标:(页码-1)*显示记录数