一、数据库的使用
(1)启动、关闭Mysql
//启动
net start mysql80
//关闭
net stop mysql80
(2)连接mysql客户端
mysql -u root -p
(3)基础语法
①注释:单行注释:在需要注释的内容前面加 --或者#
多行注释:/* 内容 */
②MySQL语句不区分大小写
③SQL语句可以单行或多行书写,以分号结尾。
(4)约束
类型 | 描述 |
主键约束 | 数据的唯一标识 |
唯一约束 | 保证数据不可以重复,比如身份证号 |
非空约束 | 数据不能为空 |
默认约束 | 未给值时,赋给默认值 |
外键约束 | 建立表与表的连接,保证数据的一致性 |
检查约束 | 数据满足某一条件 |
(5)数据类型
①数值类型
类型 | 大小 | 范围 |
tinyint | 1 byte | -2^8 ~ 2^8-1 |
smallint | 2 bytes | -2^16 ~ 2^16-1 |
mediumint | 3 bytes | -2^24 ~ 2^24-1 |
int | 4 bytes | -2^32 ~ 2^32-1 |
bigint | 8 bytes | -2^64 ~ 2^64-1 |
float | 4 bytes | -3.402823466 E+38 ~ 3.402823466351 E+38 |
double | 8 bytes | -1.7976931348623157 E+308 ~ 1.7976931348623157 E+308 |
decimal | 依赖于M(精度)和D(标度)的值 |
②字符串类型
类型 | 大小 | 描述 |
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
tinyblob | 0-255 bytes | 不超过255个字符串的二进制数据 |
blob | 0-65535 bytes | 二进制形式的长文本数据 |
tinytext | 0-255 bytes | 短文本字符串 |
text | 0-65535 bytes | 长文本数据 |
mediumblob | 0-16777215 bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0-16777215 bytes | 中等长度文本数据 |
longblob | 0-4294967295 bytes | 二进制形式的大文本数据 |
longtext | 0-4294967295 bytes | 大文本数据 |
③时间日期类型
类型 | 大小 | 格式 |
DATE | 3 | YYYY - MM - DD |
TIME | 3 | HH : MM : SS |
YEAR | 1 | YYYY |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | 4 | YYYY-MM-DD HH:MM:SS |
二、数据库的操作
(1)数据定义语言Data Definition Language(DDL)
①查询所有数据库
show databases;
②创建数据库
create database 数据库名;
③使用数据库
use 数据库名;
④查询当前数据库
select database();
⑤删除数据库
drop database 数据库名;
⑥创建表
create table 表名(
字段 字段类型,
字段 字段类型,
... .......
);
⑦查询表
show tables;
⑧查询表结构
desc 表明;
⑨查询创建该表的语句
show create table 表名;
⑩添加字段
alter table 表名 add 字段名 类型;
添加外键
#添加外键
alter table 表名 add constraint 外键名称 foreign kty references 主表;
#删除外键
alter table 表名 drop foreign key 外键名称;
eleven:修改数据类型
alter table 表名 modify 字段名 新数据类型;
twelve:修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型;
thirteen:删除字段
alter table 表名 drop 字段名;
fourteen:修改表名
alter table 表名 rename to 新表名;
fifteen:删除表
drop table 表名;
//删除并重新创建该表
truncate table 表名;
(2)数据操作语言Data Manipulation Language(DML)
①添加数据
//给某个字段添加
insert into 表名(字段1,字段二,...) values(值1,值2,...);
//给全部字段添加
insert into 表名 values(值1,值2,...);
//批量添加
insert into 表名(字段1,字段二,...) values(值1,值2,...),(值1,值2,...),....;
insert into 表名 values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
②修改数据
update 表名 set 字段名=值 where....;
③删除数据
delete from 表名 where...;
(3) 数据查询语言Data Query Language(DQL)
①常规查询
//查询所有
select * from 表名;
//根据字段查询
select 字段1,字段2... from 表名;
//去重查询
select distinct 字段 from 表名;
②条件查询
select 字段 from 表名 where 条件;
条件可以为:> , < , = , >= , <= , <> , !<
between....and .... in(...) like is null
例如:模糊查询 (查询带有小的名字)
③聚合函数(null值不参与聚合函数的运算)
count(统计数量),max(最大值),min(最小值),avg(平均值),sum(求和)
例如:统计年龄小于30岁的员工
④分组查询
select 字段 from 表名 group by 分组字段名;
例如:查询年龄小于40, 工作地址数量小于3的地址
⑤排序查询(asc为升序,desc为降序)
select 字段 from 表名 order by 字段 排序方式;
⑥分页查询
select 字段 from 表名 limt 起始索引,查询条数;
⑦select语句的查询顺序
from→where→group by→select→having→limit
(4)数据控制语言(Data Control Language)
①创建、删除用户
//查询
use mysql;
select * from user;
//创建用户,主机名可以使用%表示任意主机
create user '用户名'@'主机名' identified by '密码';
//修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
//删除用户
drop user '用户名'@'主机名';
② 权限控制
//查询权限
show grants for '用户名'@'主机名';
//授予权限
grants 权限 on 数据库名.表名 to '用户名'@'主机名';
//撤销权限
revoke 权限 on 数据库名.表名 from '用户名'@'主机名';
③ 权限
权限 | 描述 |
all | 所有权限 |
select | 查询权限 |
insert | 插入权限 |
update | 更新权限 |
dalete | 删除权限 |
alter | 修改表权限 |
drop | 删除权限 |
create | 创建权限 |