「时光不负,创作不停,本文正在参加2021年终总结征文大赛」
常用的管理的命令
1.显示当前所有的数据库
show databases
2.进入指定的数据库
use 数据库名
3.显示当前数据库下所有的表
show tables
4.查询表内行数据
describe 表名; #下面这条指令是缩写,与上面这条指令是一样的
desc 表名;#具体显示详情如下图所示
SQL命令
结构化查询语言,用于操作关系型数据库服务器,主要是数据进行增删改查。
SQL命令的执行方式
-
交互模式
- 客户端输入一行,点击回车,服务器端会执行一行,适用于临时性的查看数据。
-
脚本模式
-
客户端把要执行的命令写在一个脚本文件中,然后一次性的提交给服务器执行,适用于批量的操作数据。
-
建立连接之前:mysql -uroot<拖拽脚本文件
-
若有一行代码出问题,后面代码不执行。
-
#语句 单行注释
-
/* */ 多行注释
-
注释的代码服务器不执行的。
-
查询数据库详情
SHOW CREATE DATABASE 数据库名;
创建一个数据库
create database 数据库名;
删除数据库
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名; #一般来说,采用脚本模式尽量使用该语句,防止数据库后期修改时报错,先删除表,在重新创建表。
创建表
CREATE TABLE 表名(
值1 类型,
值2 类型,
值3 类型
)charset utf8;
插入数据
INSERT INTO 表名 VALUES(值1,值2,值3);
-
MySQL中文乱码产生的原因
- mysql默认使用Latin-1.
-
解决MySQL乱码问题
- 脚本文件格式为utf8.
- 客户端连接服务器编码为utf8.
- 服务器创建数据库使用的存储编码为utf8.
-
列类型
-
创建表的时候,指定的类所能存储的数据类型。
-
数值型
-
tinyint 微整型 占1个字节,范围-128~127
TB GB MB KB byte bit
1byte=8bit
-
smallint 小整型 占2个字节,范围-32768~32767
-
int 整型 占4个字节,范围-2147483648~2147483647
-
bigint 大整型 占8个字节
-
float 单精度浮点型 4个字节 值越大精度越低
-
double 双精度浮点型 8个字节
-
decimal(M,D) 定点小数,小数点不会改变,M表示有效位数,D代表小数点后的有效位数
-
boolean/bool 布尔型,用于存储只有两个值的数据,分别是true和false,在使用的时候会自动转换成tinyint型。
-
数值型引号可以省略,别的都需要加引号。
-
-
日期时间型
- date 日期型 '2021-09-02'
- time 时间型 '08:22:10'
- datetime 日期时间型 '2021-09-02 08:22:10'
-
字符串型
- varchar(M) 变长字符串 几乎不会产生空间浪费,数据操作速度较慢 max(M)=65535
- char(M) 定长字符串 可能产生空间浪费,数据操作速度相对快,存储定长的数据。max(M)=255
- text(M) 大型变长字符串 max(M)=2G
-
-
-
列约束
- MySQL可以对要插入的数据进行验证,只有符合条件的才允许插入
create table 表名( 属性 列类型 列约束 );-
主键约束
- primary key
- 声明了主键约束的列上不允许出现重复的值,也不允许为null。
- 会自动进行排序
- 一个表只能有一个主键约束
- null🈳,表示一个暂时无法确定的值,
null是关键字,使用的时候不能加引号
-
非空约束
-
not null
-
声明了非空约束的列上禁止插入null
-
列约束
-
-
唯一约束
- unique
- 声明了唯一约束的列不可以出现重复的值,可以重复定义
-
默认值约束
-
可以使用的default关键字设置默认值
-
通过default关键字调用
insert into laptop values(70,defult); -
没有出现的列自动生成默认值
insert into(fid) laptop values(70);
-
-
-
检查约束
- check
- 也称为自定义约束,用户可以根据实际需求添加约束条件
- mysql不支持检查约束,会严重的影响插入速度,后期可以使用js来实现
create table student( id int check(id>0 and id<100) ); -
外键约束
-
外键列出现的值必须在另一个表中的主键列上出现过的值
FOREIGN **KEY(familyid)** REFERENCES **family(fid)** -
外键列和主键列的列类型要保持一致。
-
-
自增列
- auto_increment
- 自动增长,声明自增列,只需要赋值为null,就会获取最大值然后加1插入。
- 注意事项:必须是添加在主键形式的整数列,允许手动添加
-
简单查询
-
查询特定的列
- select 列名1,列名2... from 表名;
-
查询所有的列
- select * from 表名;
-
给列起别名
- select eid as 编号,ename as 姓名 from emp;
- as可以省略的
-
显示不同的记录
- select distinct sex from emp;
-
查询是执行计算
- select 1+2+3+4;
-
查询的结构排序
- select * from dept order by did asc;升序排列ascendant
- select * from dept order by did desc;降序排列descendant
- 默认是按升序排列
-
条件查询
- select * from emp where eid=5;
- 运算符 < > ≤ ≥ ≠
- select * from emp where deptid is null;
- select * from emp where deptid is not null;
select * from emp where deptid!='null';这个为什么可以- and/&& 并且;都满足
- or / || 或者;满足其中之一即可
- deptid in(值1,值2);
- deptid not in(值1,值2);
-
模糊条件查询
-
select * from emp where ename like '%a%';
- % 匹配任意个字符
- _ 匹配任意1个字符
-
-