迟到的整理笔记,记录小编自己所知所学。互联网是有记忆的
ANSI,美国国家标准化组织

MySQL是关系型数据库
SQL历史:

1970

IBM首先提出

1980

改名SQL

1986

ANSI制定了数据库的规则(方便了学习其他数据库)

SQL的语句:(SQL 是一门 ANSI 的标准计算机语言(结构化查询语言),用来访问和操作数据库系统,一定要记住,SQL 对大小写不敏感!,一般规定关键字大写。)

具体介绍可参考下面地址:https://www.w3school.com.cn/sql/sql_intro.asp

SQL语句分类:

DDL(数据定义语言)

create"创建“ ,drop”删除“

DML(实际操作语言

CRED”增删改查“

DCL(数据控制语言1)

grant"授权” ,revoke"撤销“

SQL 中最重要的 DDL 语句:

SELECT

从数据库表中获取数据

UPDATE

更新数据库表中的数据

DELETE

从数据库表中删除数据

INSERT INTO

向数据库表中插入数据

CREATE DATABASE

创建新数据库

ALTER DATABASE

修改数据库

CREATE TABLE

创建新表

ALTER TABLE

变更(改变)数据库表

DROP TABLE -

删除表

CREATE INDEX

创建索引(搜索键)

DROP INDEX

删除索引

CREATE DATABASE  创建新数据库名 【default charset='utf8'];没有编码,1,有默认走默认,2,找配置文件 ,3,默认编码(拉丁文编码,中文报错)  /*指定编码,(ststem cls ”清屏“)/

增加数据库

mysql 单表超过500w mysql单表千万_表名


进入增加数据库进行查看(use 数据库名称)

mysql 单表超过500w mysql单表千万_表名_02


删除数据库:

mysql 单表超过500w mysql单表千万_字段_03

create database db_nhjc default charset="utf8";/*创建可以使用中文数据库db_nhjc/

数据库,一般存在5种约束

主键约束

用来描述唯一标识符

非空约束

字段的值不能为空

唯一约束

唯一索引中允许有null“空”

默认值约束

添加默认选项参数

检查约束

检测和过滤不符合实际意义的数据(5.8版本前mysql中不生效的!!)

MySQL数据类型

CHAR(size)

保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。

VARCHAR(size)

保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。

TINYTEXT

存放最大长度为 255 个字符的字符串。

TEXT

存放最大长度为 65,535 个字符的字符串。

BLOB

用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。

MEDIUMTEXT

存放最大长度为 16,777,215 个字符的字符串。

MEDIUMBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。

LONGTEXT

存放最大长度为 4,294,967,295 个字符的字符串。

LONGBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。

ENUM(x,y,z,etc.)

允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM(‘X’,‘Y’,‘Z’)

SET

与 ENUM 类似SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

Number 类型:

TINYINT(size)

-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。

SMALLINT(size)

-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。

INT(size)

-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。

BIGINT(size)

-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。

FLOAT(size,d)

带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

DOUBLE(size,d)

带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

DECIMAL(size,d)

作为字符串存储的 DOUBLE 类型,允许固定的小数点。

这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。
创建表

create table t_user (
		# 定义表的结构
		字段名称1 字段1类型 [约束条件,]
		字段名称2 字段2类型 [约束条件,]
		字段名称3 字段3类型 [约束条件,]
		...
		字段名称n 字段n类型 [约束条件]
	
	);

下面说一个例子来展示单表的增删查改
首先我们先创建库“ db_mingzhu”(MySQL本身的四个库,小白的我们不要乱动),在库中创建四张表 t_sanguo t_shuihuo t_xiyou t_honglou。并添加相应的人物。

create database db_mingzhu default charset="utf8";
USE db_mingzhu
CREATE TABLE  t_sanguo ( id int primary key auto_increment comment '用户主键',
		name varchar(20) not null unique comment '用户名称', 
		feeling varchar(20), 
		factions varchar(20)
		);
INSERT INTO t_sanguo VALUES(NULL,"曹操","宁教我负天下人,休教天下人负我","魏");
INSERT INTO t_sanguo VALUES(NULL,"刘备","勿以恶小而为之,勿以善小而不为","蜀");
INSERT INTO t_sanguo VALUES(NULL,"孙权","足下不死,孤不得安!","吴");
INSERT INTO t_sanguo VALUES(NULL,"诸葛亮","鞠躬尽瘁死而后已","蜀");
INSERT INTO t_sanguo VALUES(NULL,"司马懿","为人者,有大度成大器矣!","魏");
INSERT INTO t_sanguo VALUES(NULL,"周瑜","将者贵在知敌虚实,而后避实而击虚。","吴");

现象:

mysql 单表超过500w mysql单表千万_表名_04

水浒:(其他表相同,小编就不一一操作了)

CREATE TABLE  t_shuihuo ( id int primary key auto_increment comment '用户主键',
		name varchar(20) not null unique comment '用户名称', 
		nickname varchar(20) 
		);
INSERT INTO t_shuihuo VALUES(NULL,"九纹龙","史进");
INSERT INTO t_shuihuo VALUES(NULL,"神机军师","朱武");
INSERT INTO t_shuihuo VALUES(NULL,"跳涧虎","陈达");
INSERT INTO t_shuihuo VALUES(NULL,"白花蛇","杨春");
INSERT INTO t_shuihuo VALUES(NULL,"花和尚","鲁智深");
INSERT INTO t_shuihuo VALUES(NULL,"打虎将","李忠");
INSERT INTO t_shuihuo VALUES(NULL,"小霸王","周通");
INSERT INTO t_shuihuo VALUES(NULL,"豹子头","林冲");
INSERT INTO t_shuihuo VALUES(NULL,"小旋风","柴进");
INSERT INTO t_shuihuo VALUES(NULL,"旱地忽律","朱贵");
INSERT INTO t_shuihuo VALUES(NULL,"摸着天","杜迁");
INSERT INTO t_shuihuo VALUES(NULL,"云里金刚","宋万");
INSERT INTO t_shuihuo VALUES(NULL,"青面兽","杨志");
INSERT INTO t_shuihuo VALUES(NULL,"急先锋","索超");
INSERT INTO t_shuihuo VALUES(NULL,"美髯公","朱仝");
INSERT INTO t_shuihuo VALUES(NULL,"插翅虎","雷横");
INSERT INTO t_shuihuo VALUES(NULL,"赤发鬼","刘唐");
INSERT INTO t_shuihuo VALUES(NULL,"智多星","吴用");
INSERT INTO t_shuihuo VALUES(NULL,"立地太岁","阮小二");
INSERT INTO t_shuihuo VALUES(NULL,"短命二郎","阮小五");
INSERT INTO t_shuihuo VALUES(NULL,"活阎王","阮小七");
INSERT INTO t_shuihuo VALUES(NULL,"入云龙","公孙胜");
INSERT INTO t_shuihuo VALUES(NULL,"白日鼠","白胜");
INSERT INTO t_shuihuo VALUES(NULL,"操刀鬼","曹正");
INSERT INTO t_shuihuo VALUES(NULL,"及时雨","宋江");
INSERT INTO t_shuihuo VALUES(NULL,"铁扇子","宋清");
INSERT INTO t_shuihuo VALUES(NULL,"行者","武松");
INSERT INTO t_shuihuo VALUES(NULL,"菜园子","张青");
INSERT INTO t_shuihuo VALUES(NULL,"金眼彪","施恩");
INSERT INTO t_shuihuo VALUES(NULL,"毛头星","孔明");
INSERT INTO t_shuihuo VALUES(NULL,"独火星","孔亮");
INSERT INTO t_shuihuo VALUES(NULL,"锦毛虎","燕顺");
INSERT INTO t_shuihuo VALUES(NULL,"矮脚虎","王英");
INSERT INTO t_shuihuo VALUES(NULL,"白面郎君","郑天寿");
INSERT INTO t_shuihuo VALUES(NULL,"小李广","花荣");
INSERT INTO t_shuihuo VALUES(NULL,"镇三山","黄信");
INSERT INTO t_shuihuo VALUES(NULL,"霹雳火","秦明");
INSERT INTO t_shuihuo VALUES(NULL,"小温侯","吕方");
INSERT INTO t_shuihuo VALUES(NULL,"赛仁贵","郭盛");
INSERT INTO t_shuihuo VALUES(NULL,"石将军","石勇");
INSERT INTO t_shuihuo VALUES(NULL,"催命判官","李立");
INSERT INTO t_shuihuo VALUES(NULL,"混江龙","李俊");
INSERT INTO t_shuihuo VALUES(NULL,"出洞蛟","童威");
INSERT INTO t_shuihuo VALUES(NULL,"翻江蜃","童猛");
INSERT INTO t_shuihuo VALUES(NULL,"病大虫","薛永");
INSERT INTO t_shuihuo VALUES(NULL,"船伙儿","张横");
INSERT INTO t_shuihuo VALUES(NULL,"神行太保","戴宗");
INSERT INTO t_shuihuo VALUES(NULL,"浪里白条","张顺");
INSERT INTO t_shuihuo VALUES(NULL,"拼命三郎","石秀");
INSERT INTO t_shuihuo VALUES(NULL,"浪子","燕青");

mysql 单表超过500w mysql单表千万_数据库_05


修改 UPDATE

select * from  表名称;     慎用,重新加载表


#update 表名称 set 字段1=新值 [, 字段2=新值 ...] where 条件


update 表名称 set 字段 = 修改值 ; 指定字段修改,改一字段列
update  表名称 set  字段= age + 1 WHERE id = 6;  指定必须是int类型,进行加减,(WHERE id )按照id“字段”主键约束给字段进行修改
UPDATE 表名称 set 字段="120" where age >= 18;    where后可以使用">=" "!=" 等

mysql 单表超过500w mysql单表千万_字段_06


(记对刷新查看)

mysql 单表超过500w mysql单表千万_表名_07

删除 delete

# delete from 表名称 where 条件;

delete from 表名称 where id = 14;    指定id字段进行删除

truncate 表名称;-- 慎用!!! 
实例:
delete from t_sanguo where id = 1; -- 删除id1

mysql 单表超过500w mysql单表千万_表名_08

查询

# select * from 表名称
select * from t_user;  -- 查看一个表全部“*”代表全部
-- 查询固定的列
select id from t_user;   --查看单个字段元素
select id, name from t_user;  --查看多个字段列元素

SELECT * from t_user where id = 1;  -- 查看id=1的元素

SELECT * from t_user where age > 15;  -- 查看>15的元素
SELECT * FROM t_user where age >= 18 or id = 4;  -- 也可以使用关联语句

SELECT * from t_user where id != 1;
SELECT * from t_user where id <> 1;   -- <> 作用与 != 相同


SELECT * FROM t_user WHERE birthday is null;  --  查询空和非空
SELECT * from t_user where birthday IS NOT NULL;

mysql 单表超过500w mysql单表千万_数据库_09


修改表列类型:

ALTER TABLE 表名 MODIFY 列名 列类型;

修改表列名与类型

ALTER TABLE 表名 ADD 列名 列类型;

增加表列

ALTER TABLE 表名 DROP 列名;

删除列

ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;

列改名

ALTER TABLE 表名 RENAME 新表名; 或者RENAME TABLE 表名 TO 新表名;

更改表名