垃圾就不配有周末,数据库基本操作,会持续更新。

一,数据库基本操作
1 显示数据库 show databases
2 创建数据库 create database xxx
3 删除数据库 drop databese xxx 删库需谨慎 哈哈
4 查看数据库定义信息 show create database xxx
5 查看表 show tables
6 创建表 create table xxx()
7 主键约束 primary key
8 联合主键 primary key(xx,xx,xx)
9 外键约束 constrant <外键名> foreign key 字段名 references <主表名> 主键列
10 unique 唯一约束 constraint xxx unique(xxx)
11 默认约束 default 定义表时给个默认值
12 查看表的字段信息 desc + 表名
13 查看表详细结构语句 show create table xxx;
14 修改表名称 alter table xxx rename xxx
15 修改字段的数据类型 alter table xxx madify 字段 + 类型
16 修改表字段名 alter table xxx change 旧字段名 新字段名 类型
17 添加字段 alter table xxx add 字段名 类型 [完整性约束]
18 在表的第一列添加一个字段 alter table xxx add 字段名 类型 [完整性约束] first
19 在表的指定列后添加一个字段 ALTER TABLE tb_dept2 ADD 字段 + 类型 AFTER 字段;
20 删除表中的字段 alter table xxx drop xxx
21 修改字段的排列位置 alter table xxx modify first or (after + 某个字段)
22 修改表的存储引擎 alter table xxx engein = myisam
23 删除表的外键约束 alter table xxx drop foreign key 外键约束名
mysql8.0新特性
1 默认编码从 latin1 修改为utf8mb4 避免不设置为utf8时的乱码为题
2 自增变量的持久化 之前版本主键的分配原则是内部计数器决定的,是基于内存的,不会持久化到磁盘中去,而8.0是持久化到重置日志中去的。对于主键字段问题可以查看出明显区别
提示:外键约束不能跨引擎使 用 myisam 和 innodb
二、数据类型和运算符
1 数值类型 tinyint smallint middleint int bigint 1 2 3 4 8 字节,int(11) 显示数字的宽度为11
浮点数和定点数类型 float 单精度 double 双精度 decimal(M,N) 压缩的严格定点数,M表示总共的位数,称为精度,N表示小数的位数,称为标度 占用M=2 个字节
show wainings 查看警告
2 日期时间类型
year 年 1字节
四位字符串表示的year范围为1901-2155 两位的是2000-2069 1970-1999
插入字符串‘00’ 为 2000 。插入数字00为0000 。插入字符串2066越界。插入字符串10是2010,插入字符串77是1977
time 时间 3字节
插入 10:05:05 ,l23:23, 2 10:10,3 02 ,10 转换为 10:05:05,23:23:00,58:10:00,74:00:00,00:00:10 空格前为天数 d*24 + h
data 日期 3字节
datatime 日期时间 8字节
timestamp 时间戳 4字节
3 字符串类型
mysql支持文本字符串和二进制字符串,二进制字符串用于存储音视频。
1 char 固定长度字符串 检索时尾部空格会被删除
2 varchar 长度可变的字符串 在值保存和检索的时候尾部空格扔保留
定义 char(4) 无论存入几个字符,都是占用四个字节,定义varchar,占用空间字节数为长度+1
3 enum
CREATE TABLE tmp9(enm ENUM(‘first’,‘second’,‘third’)); 创建枚举类型
INSERT INTO tmp9 VALUES (‘first’),(‘second’),(‘third’); 插入数据
SELECT enm,enm+0 FROM tmp9; 查询索引对应关系
4 set
CREATE TABLE tmp11(
s SET(‘a’,‘b’,‘c’,‘d’)) 创建表,其中一个字段为set
INSERT INTO tmp11 VALUES(‘a’),(‘a,b,c’),(‘c,a,d’); 插入数据
5 二进制字符串类型
(1) bit
CREATE TABLE tmp12 (b BIT(4)); 创建表
INSERT INTO tmp12 VALUES (2),(9),(5); 插入数据
SELECT BIN(b+0) FROM tmp12; 查询数据
(2) binary 和 varbinary
binary 长度是固定的,不足长度的在后面补\0 binary(3) 插入a时为’a\0\0’
VARBINARY 长度是可变的,指定好长度之后,其长度可以在0到最大值之间类似于varchar,如果插入的值的长度为10,则实际存储空间为11
CREATE TABLE tmp13(b BINARY(3),vb VARBINARY(3)); 创建表
INSERT INTO tmp13 VALUES(5,5); 插入数据
SELECT LENGTH(b),LENGTH(vb) FROM tmp13; 查看两个字段存储数据的长度
(3)blob
blob是一个二进制大对象,用来存储可变数量的数据。blob列存储的是二进制字符串。
6 如何选择数据类型
(1) 不需要小数就用int
(2) 精度要求高用decimal
(3) 字符串定长用char,不定长用varchar
(4) blob一般存储视频音频 text存纯文本
7 基本运算符
(1) 就是那些基本的 + - * / 这里不说明
(2) 安全等于运算符,可用于判断null,mysql会进行自动转换2 和 ‘2’ 比较的结果为1
(3) <> != 不等于运算符 补课用于判断null
(4) least least(值1,值2…值n)。其中,“值n”参数列表中有n个值,再有两个或者多个参数下,返回最小的值
(5) greatest 返回最大值类似于least
(6) regexp 用来匹配字符串 ^以该字符串后面开头的字符串 $以该字符串后面结尾的字符串 .匹配任意一个单字符 类似于正则
三、函数
1 数学函数
(1) abs()求绝对值
SELECT ABS(2),ABS(-3.3),ABS(-33);
(2) SELECT PI(); 求π
(3) sort 求平方根 mod(x,y)求余数
(4) ceil ceilling 向上取整数 floor 乡下取整
(5) rand() 返回一个0 到 1 之间的随机浮点数
(6) round() 四舍五入 round(x,y)对操作数进行四舍五入操作,结果保留小数点后面指定y位,若y为负值,则保留x值到小数点左边y位
四、索引
索引是对数据库中一列或者多列进行排序的一种结构,使用索引可提高数据库中特定数据的查询速度。
1 索引的优点
(1) 创建唯一索引,保证数据表中每一行数据的唯一性
(2) 加快查询速度
(3) 加速表之间的连接
(4) 查询中减少分组,排序的时间
2 索引的缺点
(1) 创建索引耗费时间
(2) 占用磁盘空间
(3) 减低维护速度
3 几种索引
(1) 普通索引
CREATE TABLE book(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
AUTHORS VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
COMMENT VARCHAR(255) NULL,
year_publication YEAR NOT NULL,
INDEX (year_publication)
)
(2) 唯一索引
CREATE TABLE t1(
id INT NOT NULL,
NAME CHAR(30) NOT NULL,
UNIQUE INDEX UniqIdx(id));
SHOW CREATE TABLE t1;
(3) 单列索引
CREATE TABLE t2(
id INT NOT NULL,
NAME CHAR(50) NULL,
INDEX singleIdx(NAME(20))
);
(4) 组合索引
CREATE TABLE t3(
id INT(11) NOT NULL,
NAME CHAR(30) NOT NULL,
age INT(11) NOT NULL,
info VARCHAR(255),
INDEX multiIdx(id,NAME,age));
SHOW CREATE TABLE t3;
(5) 全文索引
CREATE TABLE t4(
id INT NOT NULL ,
NAME VARCHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX fulltxtIdx(info)
)ENGINE=MYISAM
全文索引只支持myisam存储引擎,适用于处理数据量比较大的时候
(6) 空间索引(感觉不咋重要)
4 在已经存在的表上创建索引
(1) 单列索引
ALTER TABLE book ADD INDEX BkNameIdx(bookname(30));
(2) 唯一索引
ALTER TABLE book ADD UNIQUE INDEX UniqIdx(bookid);
(3) 组合索引
ALTER TABLE book ADD INDEX BkAuAndInfoIdx(AUTHORS(30),info(50));
5 使用create index 创建索引
(1) 普通索引
CREATE INDEX BkNameIdx ON book(bookname);
(2) 唯一索引
CREATE UNIQUE INDEX uniqueIdx ON book(bookid)
(3) 单列索引
CREATE INDEX BkcmtIdx ON book (COMMENT(50));
(4) 组合索引
CREATE INDEX BkAuAndInfoIdx ON book(AUTHORS,info);
6 删除索引
alter table drop index indexname;
drop index indexname on tablename;
7 mysql 8.0新特性
(1) 支持降序索引提升性能
(2) 统计直方图提升性能,具体请百度哈哈哈。

猜你喜欢

转载自blog.csdn.net/white___white/article/details/107597233
今日推荐