迟到的整理笔记,记录小编自己所知所学。互联网是有记忆的
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 ”清屏“)/
增加数据库
进入增加数据库进行查看(use 数据库名称)
删除数据库:
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,"周瑜","将者贵在知敌虚实,而后避实而击虚。","吴");
现象:
水浒:(其他表相同,小编就不一一操作了)
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,"浪子","燕青");
修改 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后可以使用">=" "!=" 等
(记对刷新查看)
删除 delete
# delete from 表名称 where 条件;
delete from 表名称 where id = 14; 指定id字段进行删除
truncate 表名称;-- 慎用!!!
实例:
delete from t_sanguo where id = 1; -- 删除id1
查询
# 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;
修改表列类型:
ALTER TABLE 表名 MODIFY 列名 列类型; | 修改表列名与类型 |
ALTER TABLE 表名 ADD 列名 列类型; | 增加表列 |
ALTER TABLE 表名 DROP 列名; | 删除列 |
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型; | 列改名 |
ALTER TABLE 表名 RENAME 新表名; 或者RENAME TABLE 表名 TO 新表名; | 更改表名 |