欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL知识点汇总(一)

程序员文章站 2024-03-23 12:54:46
...

前言

这篇博文给大家总结MySQL的一些基本知识点,和一些容易出错的注意点

MySQL四大引擎

MySQL知识点汇总(一)具体四大引擎的特性等见脑图:
MySQL知识点汇总(一)

用户账号的创建

我们在开发时,都是需要账号登录操作数据库的,脚本代码如下,也可以手动创建:

手动创建:
MySQL知识点汇总(一)MySQL知识点汇总(一)
脚本创建:

CREATE USER 'user'@'%' IDENTIFIED BY 'passwd';

账号权限的管理

我们在实际开发过程中,每个角色所对应的权限是不一样的,比如项目经理或者DBA具有所有数据库的权限而开发人员有可能只有查询表的权限,如图:

MySQL知识点汇总(一)
那么在给予权限时的一个图解是这样的:
MySQL知识点汇总(一)
操作代码:

#给用户zhangsan在job数据库中的所有表只有查询权限
GRANT SELECT 
ON job.*
TO 'zhangsan'@'localhost'
IDENTIFIED BY 'zhangsan123'

这时候用用户zhangsan登录 ,操作job数据库下的表时,如果进行了查询外的操作就会报错提示:
MySQL知识点汇总(一)

用户登录易错点

今天在整理时,报了一个错误,具体的错误截图因为已经解决了,再试一次也不报错了,给大家大致讲一下:
在创建完用户后,已经设置了密码为"123"不为空,但用这个用户登录时,输入123一直报错,而为空就可以连接数据库,具体的原因是因为默认数据库mysql的user表的问题,在安装数据库时没有设置密码,创建一个新用户登录时,默认匹配了空的用户账号密码,导致所有新建账号只能用空密码登录
解决代码:

#解决设置用户名和密码为空
use mysql;
delete from user where user='';
flush privileges;

DDL语言的使用

库的管理

因为一系列的操作比较多加上篇幅原因,就不贴效果图了,直接上代码,有需要的小伙伴也可以方便使用:

#1.库的创建
CREATE  DATABASE IF NOT  EXISTS 库名;
CREATE DATABASE xy#新库名;
#2.库的修改
#更改库的字符集
ALTER DATABASE 修改的库名CHARACTER SET  gbk;
#更改库名
RENAME DATABASE 旧库名 TO 新库名
#3.库的删除
DROP DATABASE IF EXISTS books;

表的管理(创建)

#1.表的创建1
CREATE TABLE book(
id INT,#编号
bName VARCHAR(20)#书名
)
#表的创建2
CREATE TABLE IF NOT EXISTS atuhor(
id INT,
au_name VARCHAR(20)
)

表的管理(修改)

#表的修改
#修改book表bName列字段为bname
ALTER TABLE book CHANGE  bName bname VARCHAR(20);
#修改列的类型或约束
ALTER TABLE book MODIFY COLUMN bname INT;
#添加新列
ALTER TABLE book ADD COLUMN bprice INT;
#删除列
ALTER TABLE book DROP COLUMN bprice;
#修改表名
ALTER TABLE book RENAME TO book_xy;

表的管理(删除)

#表的删除
DROP TABLE IF EXISTS book_xy;
#查询指定库下的所有表
SHOW TABLES;
#通用写法
DROP TABLE IF EXISTS book#旧表名;

表的管理(复制表)

#表的复制
#复制表结构
CREATE TABLE copy LIKE atuhor;
select * from copy;
#复制表结构和数据
CREATE TABLE copy2
SELECT * FROM atuhor;
select * from copy2;
#只复制部分数据
CREATE TABLE copy3
SELECT id,au_name
FROM atuhor
WHERE id=1;
SELECT * FROM copy3;
#只复制某些字段
CREATE table copy4
SELECT id
FROM atuhor
SELECT * FROM copy4;

常用约束

#六大约束
#NOT NULL:非空
#DEFAULT:默认
#PRIMARY KEY :主键
#UNIQUE :唯一
#CHECK :检查约束(mysql不支持)
#FOREIGN KEY :外键

创建表约束

方法一:

CREATE TABLE stuinfo(
id INT PRIMARY KEY,#主键
stuname VARCHAR(20) NOT NULL,#非空约束
gender CHAR(1) CHECK(gender='男' OR gender='女'),#检查约束
seat INT UNIQUE,#唯一约束
age INT DEFAULT 18,#默认约束
majorid INT REFERENCES major(id)#外键
)

方法二:

CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,

CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT uq UNIQUE(seat),
CONSTRAINT ck CHECK(gender='男' OR gender='女'),
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
)

方法三:

#添加非空约束
ALTER TABLE 表名 MODIFY COLUMN 列字段 VARCHAR(20) NOT NULL;
#添加默认约束
ALTER TABLE 表名 MODIFY COLUMN 列字段 INT DEFAULT 18;
#列级约束 添加主键
ALTER TABLE 表名 MODIFY COLUMN 列字段 INT PRIMARY KEY;
#添加唯一约束
ALTER TABLE 表名 MODIFY COLUMN 列字段 INT UNIQUE;
#添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(列字段) REFERENCES 外键表(外键表列字段);

删除表约束

#删除默认约束
ALTER TABLE 表名 MODIFY COLUMN 列字段 INT;
#删除非空约束
ALTER TABLE 表名 MODIFY COLUMN 列字段 VARCHAR(20) NULL;
#删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
#删除唯一
ALTER TABLE 表名 DROP INDEX 列字段 ;
#删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键列字段 ;

标识列的创建和使用

#标识列
CREATE TABLE tab_identity(
id INT,
Tname  FLOAT UNIQUE AUTO_INCREMENT,#标识列
seat VARCHAR(20)
)

在插入数据时,标识列自动增长不用增加:

INSERT INTO tab_identity(id,seat) VALUES(1,'1');

设置步长( 设置步长)

 SET auto_increment_increment=3;设置步长

尾言

好了,今天的博文就到这了,MySQL数据库的其他知识汇总会在后续继续更新分享…

相关标签: mysql