数据库
2020-11-09 20:31:12 37 举报
AI智能生成
数据库 求赞
作者其他创作
大纲/内容
什么是数据库
数据库就是一个文件系统,但是这个文件访问需要通过标准SQL语句.
数据库分类
关系型数据库
redis
mongodb
非关系型数据库
MySql
免费小型数据库
MySQL的内部存储结构
一个软件对应一个数据库,在数据库内部可以存在多张表:
一个实体类对应一张表.表中可以有多条 记录的.
一般情况下:一个类的实例对应一条记录.
SqlSever
收费的中型数据库
Oracle
收费的大型数据库
DB2
收费的大型数据库
SQL的概述
概述
SQL:(Structured Query Language)结构化查询语言.定义了操作所有关系型数据库的一种规则。
分类
DDL
数据定义语言。用来操作数据库,表,列等。
DML
数据处理语言。用来对数据库中表的数据进行增删改。
DQL
数据查询语言。用来查询数据库中表的记录(数据)。
DCL
数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。
SQL操作数据库
创建数据库
create database 数据库名 [character set 字符集 collate 字符集校对规则];
查看数据库
查看所有数据库
show databases;
查看指定数据库的创建细节
show create database 数据库名;
删除数据库
drop database 数据库名
切换数据库
use 数据库名;
显示正在使用的数据库
select database()
DDL
MySQL的常用类型
CHAR/VARCHAR
TINYINT
SMALLINT
INT
BIGINT
FLOAT
DOUBLE
BIT
DATE/TIME/DATETIME/TIMETAMP
DDL对表操作
创建表
create table 表名 (字段名 字段类型(长度)约束,字段名 字段类型(长度) 约束..) [character set 字符集 collate 校对规则];
查看表
查看数据库中有哪些表
show tables
查看表结构
desc 表名;
删除表
drop table 表名
修改表
添加字段
alter table 表名 add 字段名 类型(长度) 约束;
修改字段类型
alter table 表名 modify 字段名 类型(长度) 约束;
删除字段
alter table 表名 drop 字段名;
修改字段名
alter table 表名 change 旧的字段名 新的字段名 类型(长度) 约束;
修改表名
rename table 旧表名 to 新表名;
修改表的字符集
alter table 表名 character set 字符集;
DML常用操作
添加记录
添加部分字段
insert into 表名 (字段名1,字段名2,字段名3...) values (值1,值2,值3...);
添加全部字段
insert into 表名 values (值1,值2,值3...)
注意
添加字段的值的类型如果是字符串或者日期类型,那么在插入的值的时候,就需要使用单引号或双引号括起来.
修改记录
直接覆盖值
update 表名 set 字段名 = 值,字段名=值 [where 条件];
在原有基础上修改值
update 表名 set 字段名 = 字段名 [赋值操作符] 值,字段名=值 [where 条件];
删除记录
delete方式
delete from 表名 where 条件;
truncate方式
truncate table 表名;
delete方式和truncate方式的区别
delete方式属于dml,逐条记录进行删除
支持事务管理
truncate方式属于ddl,直接删除表,然后重新创建表
不支持事务管理
DQL语句
记录的基本查询
select [distinct] * 或 [列名,列名...] from 表名;
distinct:去掉查询记录中重复的值
*:所有字段的值都返回
**查询记录之执行运算及起别名**
select 表达式 from 表;
select 列名 as 别名,列名 as 别名 from 表名;
查询记录之条件过滤**
select *,列名 from 表名 where 条件;
*查询记录之where后的运算符**
> ,< ,>= ,<= ,= ,<> --表示不等于
in :一组值.
like :模糊查询.
使用占位符: _和%。
_代表的是一个字符: where name like '张_';
%代表的是任意个字符: where name like '张%';
张% :以张开头.
%张 :以张结尾.
%张%:包含张即可.
and , or ,not
in :一组值.
like :模糊查询.
使用占位符: _和%。
_代表的是一个字符: where name like '张_';
%代表的是任意个字符: where name like '张%';
张% :以张开头.
%张 :以张结尾.
%张%:包含张即可.
and , or ,not
**查询记录之排序**
select * from 表 where 条件 order by 列名 asc/desc,列名 asc/desc;
聚集函数
语法
count():统计表中记录的个数.
sum():求和
avg():求平均值
max():求最大值
min:求最小值
注意
where不能和聚集函数一起用
分组统计
语法
select * from 表 where 条件 group by 列名;
注意事项
having分组后的条件过滤.having后面可以跟聚集函数.
分页查询
语法
select * from 表名 where 条件 limit begin , pageSize;
-- begin : 开始索引
-- pageSize : 查询记录的个数
-- currentPage: 当前页数
-- begin = pageSize * (currentPage - 1);
-- begin : 开始索引
-- pageSize : 查询记录的个数
-- currentPage: 当前页数
-- begin = pageSize * (currentPage - 1);
DCL
账户管理
语法
--查询账户
use mysql; select * from user;
--添加账户
create user '账户'@'主机' identified by '密码';
--删除账户
drop user '账户'@'主机';
--修改密码
set password for '账户'@'主名' = password('新密码');
use mysql; select * from user;
--添加账户
create user '账户'@'主机' identified by '密码';
--删除账户
drop user '账户'@'主机';
--修改密码
set password for '账户'@'主名' = password('新密码');
注意事项
添加账户、删除账户、修改密码需要在"root"账户下才能进行!
授权
语法
--查询授权
show grants for '账户'@'主机';
--添加授权 :
select、insert、update、delete grant 权限名1,权限名2... on 数据库名.表名 to '账户'@'主机';
--撤销授权
revoke 权限名1,权限名2... on 数据库名.表名 from '账户'@'主机';
show grants for '账户'@'主机';
--添加授权 :
select、insert、update、delete grant 权限名1,权限名2... on 数据库名.表名 to '账户'@'主机';
--撤销授权
revoke 权限名1,权限名2... on 数据库名.表名 from '账户'@'主机';
约束
概述
对表中的数据进行限定,保证数据的正确性、有效性、完整性。
分类
PRIMARY KEY
主键约束
AUTO_INCREMENT
主键自增约束
UNIQUE
唯一约束
NOT NULL
非空约束
FOREIGN KEY
外键约束
主键
概述
非空和唯一两个功能
一张表只能有一个列作为主键
主键一般用于表中数据的唯一标识
语法
--建表时添加主键约束
create table 表名(
字段名1 字段类型(长度) primary key ,
字段名2 字段类型(长度)
...
);
--删除主键约束
alter table 表名 drop primary key;
--建表后添加主键约束
alter table 表名 modify 字段名 字段类型(长度) primary key;
create table 表名(
字段名1 字段类型(长度) primary key ,
字段名2 字段类型(长度)
...
);
--删除主键约束
alter table 表名 drop primary key;
--建表后添加主键约束
alter table 表名 modify 字段名 字段类型(长度) primary key;
主键自增约束
概述
如果主键字段是一个整数类型,那么就可以设置主键自增约束
语法
--建表时添加主键自增约束
create table 表名(
字段名1 字段类型(长度) primary key auto_increment,
字段名2 字段类型(长度)
...
);
--删除主键自增约束
alter table 表名 modify 字段名 字段类型;
--建表后添加主键自增约束
alter table 表名 modify 字段名 int auto_increment;
create table 表名(
字段名1 字段类型(长度) primary key auto_increment,
字段名2 字段类型(长度)
...
);
--删除主键自增约束
alter table 表名 modify 字段名 字段类型;
--建表后添加主键自增约束
alter table 表名 modify 字段名 int auto_increment;
唯一约束
概述
使用唯一约束的字段的值不可重复
--建表时添加唯一约束
CREATE TABLE 表名(
列名 数据类型 UNIQUE,
列名 数据类型,
...
);
--删除唯一约束
alter table 表名 drop index 字段名;
--建表后添加唯一约束
alter table 表名 modify 字段名 字段类型 unique;
CREATE TABLE 表名(
列名 数据类型 UNIQUE,
列名 数据类型,
...
);
--删除唯一约束
alter table 表名 drop index 字段名;
--建表后添加唯一约束
alter table 表名 modify 字段名 字段类型 unique;
非空约束
概述
使用唯一约束的字段的值不可为null
语法
--建表时添加唯一约束
CREATE TABLE 表名(
列名 数据类型 not null,
列名 数据类型,
...
);
--删除唯一约束
alter table 表名 modify 字段名 字段类型;
--建表后添加唯一约束
alter table 表名 modify 字段名 字段类型 not null;
CREATE TABLE 表名(
列名 数据类型 not null,
列名 数据类型,
...
);
--删除唯一约束
alter table 表名 modify 字段名 字段类型;
--建表后添加唯一约束
alter table 表名 modify 字段名 字段类型 not null;
多表连接
多表连接之内连接查询
概述
获取两张表的交集
语法
显式内连接
select * from 表A inner join 表B on 条件;
隐式内连接
select * from 表A , 表B where 条件;
多表连接之外连接查询
概述
获取的结果是两张表的交集和全部
语法
左外连接:两张表的交集和左边表的全部
select * from 表A left outer join 表B on 条件;
子主题
右外连接:两张表的交集和右边表的全部
select * from 表A right outer join 表B on 条件;
多表查询之union
概述
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
语法
union
求两个select结果的并集,会去重
select * from 表1 union select * from 表2;
union all
求两个select结果的并集,不会去重
select * from 表1 union all select * from 表2;
多表查询之子查询
概念
指的是一条语句的查询结果需要依赖另一条语句的查询结果
基本使用
select * from 表A where 条件 > any(sql查询语句);
any:任意一个
all:所有
0 条评论
下一页