一.SQL语句
SQL语句
操作所有关系型数据库的计算机语言
通过可视化软件MySQL-front操作数据库,实际上本质也是在执行SQL语句
只是,是通过MySQL-front来执行SQL语句,不是我们自己写SQL语句
实际中操作数据库,要通过 cmd 来执行SQL语句,来操作数据库
1,要配置环境变量
配置环境变量,让程序可以在cmd中正常的执行运行
win7操作系统,是 弹出一个编辑输入环境变量位置的输入框
在已有的环境变量配置的最后
添加 分号 与之前的环境变量区分
分号之后,在 复制 bin文件的路径地址
之后是一路确定
配置好之后,重启cmd
输入命令,登录mysql数据库
输入账号密码 , 就等于 MySQL-front 打开软件,输入账号密码
-u 是输入账号
-p 是输入密码
mysql -uroot -p 点击回车
设定cmd中显示的编码格式
cmd中默认的编码格式是gbk
数据库中,数据的编码格式是utf8
SET NAMES gbk; // 设定编码格式是gbk
SET NAMES utf8; // 设定编码格式是utf8
库结构的操作
指定使用的 库结构
use `库名`;
创建库结构
CREATE DATABASE IF NOT EXISTS `库名`;
如果创建的库名已经存在,不会创建新的库结构,并且不会报错
简写 CREATE DATABASE `库名`;
如果创建的库名已经存在,程序执行会报错,之后的程序不会执行
查看库结构
查看所有的库结构
SHOW DATABASES;
查看库结构的设置信息
SHOW CREATE DATABASE IF NOT EXISTS `库名`;
查看正在使用的库结构
SELECT DATABASE();
DATABASE() 是 MySQL设定 一个 方法函数,作用就是查询正在使用的库结构
删除库结构
DROP DATABASE IF EXISTS `库名`;
简写
DROP DATABASE `库名`;
表结构的操作
创建表结构
每一个表结构都必须有至少一个字段,不能建立一个没有字段的空的表格结构
如果是多个字段,最后一个字段之后的逗号,必须不要写
CREATE TABLE IF NOT EXISTS `表名`(
字段1 数据类型 约束条件,
字段2 数据类型 约束条件
)引擎设定 编码格式设定 注释设定
查看表结构
查看所有的表结构
SHOW TABLES;
查看表结构的建立方式
SHOW CREATE TABLE `表名`;
查看表结构中的字段
DESC `表名`;
删除表结构
DROP TABLE `表名`;
字段的相关设定
完整设定一个字段,包括
字段名称 数据类型 属性 约束条件 注释
MySQL数据库,数据类型
输入的数据,与设定的字段的数据类型不符合,无法输入
字段的数据类型,只要设定的合适就行,越小越好
例如:存储年龄,年龄不能是负数, 0-255的范围就基本够用了,没有必要设定更大的存储范围,占用更多的存储空间
哪个字段,使用什么数据类型,会在项目手册中做严格的规定,项目的数据库架构师会设计好
数值类型
整数类型 通过字段的属性,设定字段的数值范围 是否允许是负数
TINYINT(M) 1个字节 存储数值范围 -128 至 127 (默认范围)
或者 0 至 255 (UNSIGNED)
SMALLINT(M) 2个字节 存储数值范围 -32768 至 32767
或者 0 至 65535
MEDIUMINT(M) 3个字节 存储数值范围 -8388608 至 8388607
或者 0 至 16777215
INT(M) 4个字节 存储数值范围 -2147483648 至 2147483647
或者 0 至 4294967295
BIGINT(M) 8个字节 存储数值范围 -9223372036854775808 至 9223372036854775807
或者 0 至 18446744073709551615
浮点数类型
FLOAT(M,D) -3.4e38 至 3.4e38 最多存储7位小数,超出部分无法设定
DOUBLE(M,D) -1.7e308 至 1.7e308 最多存储15位小数,超出部分无法设定
DECIMAL(M,D) 组多存储65位数值 最多存储30位小数
整数的M值,设定数值位数 TINYINT(1) 只允许存储一位数值 只允许有个位 0-9
但是实际中,整合的 M 设定值 不起作用,只要不超出整数的范围,都是可以输入的
TINYINT(1) 想限定只能输入1位数值,实际上只要不超过范围,都能输入
这个 (1) 是没有用的 整数,一般设定数据类型,也不写 (M) 限定值
浮点数的M,D值 : D 值表示 整个数值中,小数部分的位数
输入数据,超出小数部分,不会存储,会只存储设定部分的小数
M 值表示 整个数值中,所有数值的位数
FLOAT(7,3) 存储的小数,整数部分和小数部分,一共是7位
小数部分是3位,整数部分是4位
小数部分多了,可以写入,只存储3位
整数部分多个,不能写入
字符串类型 数值太大的数字,也可以存储为字符串形式,为了节约存储空间
CHAR(M) 定长字符串
用于存储固定长度的字符串内容 手机号,身份证号,银行卡号
存储范围 : 0 至 255个字符
VARCHAR(M) 变长字符串
用于存储不固定长度的字符串内容 姓名,邮箱,地址...
存储范围 : 0 至 65535个字符
如果是中文, 理论上最多存储 21848个字符
同一个表结构中,存储的其他数据类型的长度,也会影响VARCHAR存储的长度
一般都存储不到理论上的最大值
TINYTEXT(M) 255个字符
TEXT(M) 65535个字符
MEDIUMTEXT(M) 16777215个字符
LONGTEXT(M) 4294967295个字符 或者 4G
M 值,设定存储字符串长度,超出设定不能写入存储
一般就是用 CHAR 和 VARCHAR 内容过多,存储成文件的形式,然后读取文件
时间类型
YEAR(2或者4) 2位或者4位年份
TIME() 格式 HH:MM:SS
DATE() YYYY-MM-DD 1001-01-01 至 9999-12-31
DATETIME() YYYY-MM-DD HH:MM:SS
1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP() 自动存储当前时间
特殊类型
ENUM() 枚举类型,设定输入的数据数值范围,必须是规定的数据
性别: 男,女,保密,其他数据不允许输入
单选效果
SET() 集合类型,输入的数据,必须是符合规定的数据
多选效果
BOOLEAN 布尔类型 0 表示 false 非0 表示 true
字段的属性
字段的属性有两个,都是设定给数值类型的字段
UNSIGNED 设定数值是否可以存储负数
默认数值类型是可以存储负数的
设定 UNSIGNED 只能存储 0 至 正整数 范围的数值
ZEROFILL 设定自动补零操作
设定数值为2位数值,当前只输入一位数值,有ZEROFILL属性,会自动在数值前补零
1 --- 01
带有 ZEROFILL 属性的字段 会自动带有 UNSIGNED 属性
字段的约束条件
NOT NULL 不能输入空值 null
DEFAULT 设定默认值,如果要输入默认值,
可以输入 DEFAULT 关键词,就会写入设定的默认值
UNIQUE KEY 唯一约束
字段输入的数值不能是重复数值
PRIMARY KEY 主键约束
一个表结构,默认只能有一个字段设定主键约束
设定主键约束的字段,数据不能重复,不能为空
一般与 AUTO_INCREMENT 配合使用
FOREIGN KEY 外键约束
多个表 执行联合查询时会使用的外键约束
字段的注释
COMMENT 对字段的说明
表结构的引擎 编码格式 注释说明
ENGINE innoDB 或者 MyISAM
CHARSET utf8
COMMENT 注释说明
字段相关操作
修改字段,最好是在字段没有输入数据时修改
如果字段已经有了数据,再来修改字段,如果字段设定与已经存在的字段冲突,会造成修改失败
修改字段: 字段的数据类型,属性,约束条件,注释,都需要重新设计
即时你还是原来的设定,也要重新写一遍
只修改字段名称
ALTER TABLE `表名`
CHANGE `旧字段名` `新字段名` 新字段的所有设定
修改字段的约束条件
ALTER TABLE `表名`
MODIFY `字段名` 字段的所有设定
删除字段
ALTER TABLE `表名` DROP `字段名`;
新增字段
在所有字段之后新增字段
ALTER TABLE `表名`
ADD `字段名` 字段的所有设定;
在所有字段之前新增字段
ALTER TABLE `表名`
ADD `字段名` 字段的所有设定 FIRST;
在指定字段之后新增字段
ALTER TABLE `表名`
ADD `字段名` 字段的所有设定 AFTER `指定的字段名`;
数据写入:
给所有的字段都写入数据
INSERT INTO `表名` VALUES (数据1,数据2....);
数据内容必须与字段内容一一对象,不能多也不能少
如果不想输入,可以使用DEFAULT执行默认值
给指定的字段写入数据
INSERT INTO `表名`(`字段1`,`字段2`....) VALUES (数据1,数据2....);
在()中设定的字段,必须与输入的数据一一对应
如果不想输入,可以使用DEFAULT执行默认值
如果设定为NOT NULL的字段,必须有数据的写入,并且不能是NULL
二.SQL文件
这是一个sql文件
-- 创建库结构
CREATE DATABASE IF NOT EXISTS `2002`;
-- 查看库结构
-- 查看所有库结构
SHOW DATABASES;
-- 查看库结构信息
SHOW CREATE DATABASE IF NOT EXISTS `2002`;
-- 查看正在使用的库结构 需要配合use使用 否则为null
SELECT DATABASE();
-- 指定使用库结构
USE `2002`;
-- 删除库结构
DROP DATABASE IF EXISTS `2002`;
-- 创建表结构
-- 简单的创建表结构,至少有一个字段,多个字段,不要写最后一个逗号.
CREATE TABLE IF NOT EXISTS `user1`(
`name` VARCHAR(50),
`pwd` VARCHAR(50)
);
-- 创建一个稍微正规一点的表结构
CREATE TABLE IF NOT EXISTS `user1`(
`id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键值字段',
`username` VARCHAR(50) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复',
`userpwd` VARCHAR(50) NOT NULL DEFAULT '666666' COMMENT '密码字段,不能为空,默认值是666666',
`userage` TINYINT UNSIGNED DEFAULT 18 COMMENT '用户年龄字段,默认值是18岁,不能传存储负数,为是0-255',
`usersex` ENUM('男','女','保密') DEFAULT '保密' COMMENT '用户性别字段,只能输入男,女,保密,默认值是保密',
`hobby` SET('吃','喝','玩','乐') COMMENT '爱好选项,只能输入 吃 喝 玩 乐',
`phone` CHAR(11) NOT NULL UNIQUE KEY COMMENT '手机号,固定11位,不能为空,不能重复',
`pay` FLOAT(10,3) DEFAULT 8000 COMMENT '薪资字段,最多999万9999',
`time` TIMESTAMP COMMENT '时间字段,默认存储写入数据时的时间'
);
-- 1,id主键值字段是必须的字段,每个表结构默认都需要有一个
-- 2,UNIQUE KEY 唯一约束 输入的数值不能重复
-- 3,DEFAULT 设定默认值,要执行默认值时,可以就写 DEFAULT
-- 4,ENUM 枚举类型 只能输入 () 中规定的数值 , 并且是单选效果
-- 5,SET 集合类型 只能输入 () 中规定的数值 , 可以是多选,也就是一次性输入多个值
-- 6,UNSIGNED 设定输入的数据不能是负数,只能是 0 - 正数
-- 7,TIMESTAMP 默认存储当前时间
-- 查看所有表结构
SHOW TABLES;
-- 查看表结构创建信息
CREATE TABLE `user1`;
-- 查看表结构字段信息
DESC `user1`;
-- 数据的写入 给所有字段写入数据
INSERT INTO `user1` VALUES (DEFAULT,'张三','123456',20,'男','吃,喝,玩,乐','12345678901',8000,DEFAULT);
-- 写入执行字段的数据 有默认值的,要执行默认值的字段,可以不写数据
INSERT INTO `user1`(`username`,`userpwd`,`usersex`,`hobby`,`phone`) VALUES ('李四','123456','男','吃,喝','12345678902');
-- 第一个字段是id主键值,一般不写,使用DEFAULT
-- 时间是 TIMESTAMP 也是会自动存储时间,使用DEFAULT
-- ENUM 枚举类型,只能输入设定的数值,出入其他数值会报错
-- SET 一次可以输入多个数值,使用逗号间隔
-- 修改字段操作
-- 修改字段,最好是在字段没有输入数据时修改
-- 如果字段已经有了数据,再来修改字段,如果字段设定与已经存在的字段冲突,会造成修改失败
-- 修改字段名
ALTER TABLE `user1`
CHANGE `username` `name` VARCHAR(50) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复';
-- 修改字段设定
ALTER TABLE `user1`
CHANGE `name` VARCHAR(150) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复';
-- 删除字段
ALTER TABLE `user1` DROP `name`;
-- 新增字段
-- 在所有字段之后
ALTER TABLE `user1`
ADD `name` VARCHAR(150) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复';
-- 在所有字段之前,新增字段
ALTER TABLE `user1`
ADD `name2` VARCHAR(150) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复' FIRST;
-- 在指定的字段之前,新增字段
ALTER TABLE `user1`
ADD `name3` VARCHAR(150) NOT NULL UNIQUE KEY COMMENT '账号字段,不能为空,不能重复' AFTER `userpwd`;
三.