MYSQL指令

xiaoxiao2021-02-27  473

启动数据库 net start mysql 关闭数据库 net stop mysql 进入数据库 mysql -uroot -p 退处数据库 \q

mysql会自动寻找分号作为语句结束符。 注释(单行注释):双中划线+空格(-- );也可以使用# 查看警告 show warnings;

创建数据库 create database数据库名字 charset utf8; 删除数据库 Drop database 数据库名; 查看创建数据库信息 Show create database 数据库名字;

当删除数据库语句执行之后,发生了什么? 1.数据库被删除,查看不到该数据库 2.在对应的数据库存储的文件夹内:数据库名字对应的文件夹也被删除(级联删除:里面的数据全被删除) 3.删除不可逆,应先备份再删除

表操作:表与字段密不可分. 新增数据表 create table [if not exists] 表名(字段名字 数据类型;字段名字 数据类型)[表选项] if not exists:如果表名不存在,那么就创建,否则不执行创建代码:检查功能 表选项:控制表的表现 字符集:charset/character set 具体字符集; 保证表中数据存储的字符集 校对集:collate 具体校对集; 存储引擎:engine 具体的存储引擎(innodb和myisam)

新增表前必须进入某个数据库,然后在操作 进入数据库 use 数据库名字; 然后创建表如: create table class( name varchar(10), room varchar(10) )charset utf8;

查看数据表 show tables; 查看部分表 模糊查询pattern show tables like ’%s’;

查看表的创建语句 show create table 表名\G 查看表结构:查看表中的字段信息(以下四种方式都可以) Desc/describe/show columns from 表名; desc class; describe class; show columns from class;

修改数据表 重命名表 rename table 旧表名 to 新表名; 修改表选项 alter table 表名 值; 新增字段 alter table 表名 add[column] 字段名 数据类型 [ 列属性][位置] 修改字段 alter table 表名 modify 字段名 数据类型 [属性][位置] 重命名字段 alter 表名 change 旧字段 新字段名 数据类型 [属性][位置]; 删除字段 alter 表名 drop 字段名; 删除数据表 drop table 表名1,表名2,表名3…;

数据操作 新增数据 方案1.给全表字段插入数据,不需要指定字段列表:要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致:凡是非数值数据,都要使用引号(建议是单引号) insert into 表名 valuse(值列表)[,(值列表)]; 方案2.给部分字段插入数据,需要选定字段列表出现的顺序与字段的顺序无关;但是值列表的顺序必须与选定的字段的顺序一致. insert into 表名(字段列表)values(值列表)[,(值列表)];

查看数据 select */字段列表 from 表名 [where条件]; 更新数据 update 表名 set 字段=值[where条件]; 删除数据 delete from 表名 [where条件];

查看服务器识别哪些字符集 show character set; 查看服务器默认对外处理字符集 show variables like ‘character_set%’; 改变服务器默认的客户端字符集 set character_set_client=gbk; 改变服务器给定数据的字符集为GBK set character_set_results=gbk;

校对集问题 校对集:数据比较方式 校对集有三种方式 _bin:binary二进制比较,取出二进制位u,一位一位的比较,区分大小写 _cs:case sensitive,大小写敏感,区分大小写 _ci:case insensitice,大小写不敏感,不区分大小写 查看数据库支持的校对集 show collation; 校对集应用:只有数据产生比较的时候,校对集才会生效。 比较:根据某个字段进行排序:order by 字段名[asc|desc];asc 升序,desc 降序,默认是升序

web乱码问题: 动态网站由三部分构成:浏览器,apache浏览器(PHP),数据库服务器,三个部分 都有自己的字符集,数据需要在这三个部分之间来回传递:很容易产生乱码。 解决:统一编码(三码合一),事实不可能

数据类型(列类型) 数值型数据:都是数值 数值型:整数型和小数型 整数型数据:在SQL中为考虑节省磁盘空间,系统将整型又细分5类 Tinyint:迷你整型,使用一个字节存储,表示的状态最多为256种(常用) smallint:小整型,使用2个字节存储,表示的状态最多为65536种 mediumint:中整型,使用3个存储字节 int:标准整型,使用4个字节存储(常用) bigint:大整型,使用8个字节存储

SQL中的数据类型都是默认有符号的:分正负 有时候需要使用无符号数据:需要给数据类型限定:int unsigned

查看表结构的时候,发现每个字段的数据类型之后都会自带一个括号,里面有指定的数字是指显示宽度:数据最终显示的位数

小数型(浮点型) SQL中:将小数型细分为两种:浮点型和定点型 浮点型:小数点浮动,精度有限,会丢失精度 定点型:小数点固定,精度固定,不会丢失精度

浮点型 浮点型数据是一种精度数据,因为超出指定范围之后,会丢失精度(自动四舍五入) 浮点型:理论分为两种精度 float:单精度,占用4个字节存储数据,精度范围大概为7位左右 double:双精度,占用8个字节存储数据,精度范围大概为15位左右 浮点型数据的插入:整型部分不可以超出长度,但是小数部分可以超出(系统会自动四舍五入)

定点型 定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论小数部分也不会丢失精度) 插入数据:定点数的整数部分一定不能超出长度(进位不可以),小数部分的长度可以随意超出(系统自动四舍五入)

时间日期类型 datetime:时间日期 插入数据:时间time可以是负数如: insert into my_date values('2017-4-26 17:29:08','2017-4-26','17:30:13','2017-4-26 17:30:39',2017); insert into my_date values('2017-4-26 17:29:08','2017-4-26','-17:30:13','2017-4-26 17:30:39',2017); insert into my_date values('2017-4-26 17:29:08','2017-4-26','-177:30:13','2017-4-26 17:30:39',2017); insert into my_date values('2017-4-26 17:29:08','2017-4-26','-2 17:30:13','2017-4-26 17:30:39',2017) insert into my_date values('2017-4-26 17:29:08','2017-4-26','17:30:13','2017-4-26 17:30:39',69); insert into my_date values('2017-4-26 17:29:08','2017-4-26','17:30:13','2017-4-26 17:30:39',70); timestamp:只要当前所在的记录被更新,该字段一定会自动更新成当前时间 – timestamp update my_date set d1=‘2017-4-26 17:41:40’ where d5=2069;

字符串类型 在SQL中,将字符串分成了6类:char,varchar,text,blob,enum和set

定长字符串:char,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。 char(L):L代表length。可以存储的长度,单位为字符,最大长度值可以为255.

变长字符串:varchar,在分配空间的时候,按照最大的空间分配:但是实际上最终用了多少,是根据具体的数据来确定 varchar(L):L表示字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度 定长与变长字符串的区别:定长的磁盘空间比较浪费,但是效率高:如果数据基本上确定长度都一样,就是使用定长 变长的磁盘空间比较节省,但是效率低:如果数据不能确定长度(不同数据有变化)

文本字符串 如果数据量非常大,通常说超过255个字符就会使用文本字符串 文本字符串根据存储的数据的格式进行分类:text和blob Text:存储文字(二进制数据实际上都是存储路径) Bolb:存储二进制数据(通常不用)

枚举字符串 枚举:enum,事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个 枚举原理:枚举进行数据规范的时候(定义的时候),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后进行数据 插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统自动将数值转换成对应的字符串显示.

集合字符串 集合跟枚举类似:实际存储的是数值,而不是字符串(集合是多选) 集合使用方式: 定义:set(元素列表) 使用:可以使用元素列表中的元素(多个),使用逗号分隔

列属性 列属性:真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束来更加保证数据的合法性。 列属性:NULL/NOTNULL,default,primary key,unique key,auto_increment,comment 空属性:NULL(默认的)和NOT NULL(不为空)

列描述:comment,描述,没有实际含义:是专门用来描述字段,会根据表创建语句保存:用来给数据库管理员来进行了解的。

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好:在需要真实数据的时候,用户可以选择性的使用默认值。 默认值关键字:default

主键:primary key,一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能-重复:这种称之为主键。 一张表只能最多一个主键。 增加主键: 1.在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不允许为空) 2.复合主键 3.当表已经创建好,再次额外追加主键:可以通过修改字段属性,也可以直接追加

主键约束 主键对应的字段中数据不允许重复:一旦重复,数据操作失败(增改) 删除主键: alter table 表名 drop primary key;

主键分类: 在实际创建表中,很少使用真实业务数据作为主键字段(业务主键,如学号,课程号); 大部分的时候是使用逻辑的字段(字段没有业务含义),将这种字段称之为逻辑主键

自动增长 自增长:当对应的字段,不给值,或者给默认值,或者给NULL的时候,会自动的被系统触发, 系统会从当前字段中已有的最大值在进行+1操作,得到一个新的不同的字段 自增长通常是跟主键搭配. 自增长特点:auto_increment 1.任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值) 2.自增长字段必须是数字(整型) 3.一张表最多只能有一个自增长 修改自增长 自增长如果涉及到字段改变:必须先删除自增长,后增加(一张表只能有一个自增长) 修改当前自增长已经存在的值:修改只能比当前以有的自增长的最大值大,不能小(小不生效)可以修改变量实现不同的效果:修改是对整个数据库修改,而不是单张表(修改是会话级)

唯一键 一张表往往有很多字段需要具有唯一性,数据不能重复:但是一张表中只能有一个主键:唯一键(unique key)就可以解决表中有多个字段需要唯一性约束问题 增加唯一键: 1.在创建表的时候,字段之后直接跟unique/unique key 2.复合唯一键

删除唯一键 alter table 表名 drop index 索引名子;

索引 mysql中索引: 1.主键索引:primary 2.唯一索引:unique key 3.全文索引:fulltext index 4.普通索引:index

连接查询 分成四类: 1.内连接 2.外连接 3.自然连接 4.交叉连接

交叉连接:cross join,从一张表中循环取出每一条记录,每条记录都去另外一张表进行匹配; 匹配一定保留(没有条件匹配),而连接本身字段就会增加(保留),最终形成的结果叫做:笛卡尔积. 基本语法:左表 cross join 右表;======from 左表,右表; select * from my_student cross join my_class;

内连接:inner join,从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留,否则不保留 基本语法:右表 join on 左表.字段=右表.字段;on表示连接条件;条件字段就是代表相同业务含义。

外连接:outer join,以某张表为主,取出里面所有的记录,然后每条与另外一张表进行连接; 不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其他表的字段都置空NULL. 外连接:以主表为主:有主表 left join:左连接,以左表为主表 right join:右连接,以右表为主表 基本语法:左表 left/right join 右表 on 左表.字段=右表.字段;

自然连接:natural join,自然连接,就是自动匹配连接条件:系统以字段名字作为匹配模式(同名字字段就作为条件,多个同名字字段都作为条件) 自然连接分为:自然内连接,自然外连接 基本语法: 自然内连接:左表 natural join 右表; 自然外连接:左表 natural left/right 右表;

转载请注明原文地址: https://www.6miu.com/read-1771.html

最新回复(0)