MySQL 命令(一)

mysql

数据库:保存有组织的数据的容器。(通常是一个文件或一组文件)

表:某种特定类型数据的结构化清单。数据库中的每个表都有一个名字,用来标识自己,此名字是唯一的

列:表中的一个字段。所有表都是由一个或多个列组成。数据库中每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。

行:表中的一个记录。

数据类型:数值、字符串、时间

SQL:是一种专门用来与数据库通信的语言。

1、SQL不是某个特定数据库专有的语言。几乎所有重要的数据库都支持SQL

2、SQL简单易学。。。语句全是描述性很强的英文单词组成。

范式:符合高一范式的设计,必定符合低一级范式。。eg:符合2NF的关系模式,必定符合1NF

1NF:符合1NF的关系中的每个属性都不可再分。字段不可再分。是所有数据库的最基本要求。

2NF:主键依赖,就是一张表里面的字段,必须是跟主键相关的,不能把无关的数据放进来。

3NF:就是不能重复相同的信息。是在一个对象里引用了另外一个对象。主外键关联。

数据库分为两种:关系型 和 非关系型

关系型: MySQL、Oracle、sqlite

非关系型:Redis、MongoDB

数据库模型:

关系型数据库存储想象成Excel:

一个excel就相当于一个数据库

一个sheet相当于数据库中的一张表

#登录数据库
mysql -uroot -p
#显示mysql中所有数据库,注意封号,必须要加,不然认为你没有结束
show databases;
#创建数据库
create database dbname;
#指定编码格式为utf-8
create database dbname charset=utf8;
#删除一个数据库
drop database 数据库名字
#切换数据库,提示database changed代表切换成功
use 数据库名字
#查看当前所在的数据库
select database();
#查看数据库中的表
show tables;
#创建表
create table 表名 (字段 数据类型,id int primary key auto_increment);
#显示列  show也可以用来显示列,show columns from 表名
show columns from student;
#显示列2,算是上面一条语句的快捷方式
describe student;
 

表操作

1、创建表 :create table table_name(name text,id int primary key auto_increment);

2、table_name 后 使用圆括号去书写表中的数据结构

3、每个字段用 逗号,隔开

4、字段声明格式:字段名 字段类型

5、每个表中都必须包含一个主键。主键是唯一的,主键通常使用数字类型。在被当做主键的字段后面加上 primary key

6、主键通常 是 自增长 auto_increment。。MySQL可以自动地为每个行分配下一个可用编号,不用在添加一行时,手动分配唯一值。

7、插入数据:insert into table_name values(value1,value2...);value一定要和创建表时的字段顺序要完全吻合,个数要完全吻合

8、insert into table_name(字段名1,字段名2) value (value1,value2...);

注意:字段名和value要一一对应。。没有声明出来的字段名一定要有默认值

可视化工具

 
#fn+左方向键 回到行首
#ctl + /  注释
#ctl + shift +/ 取消注释
#f7  从这里运行一个语句
#shift + ctl + r 运行已选择的
SHOW DATABASES;
CREATE DATABASE test03 charset=utf8;
#切换到test03
use test03;
#创建一个表
create table usermodel(id int primary key auto_increment,
                                                u_name text,
                                                u_password text);
#插入一条数据
insert into usermodel(u_name,u_password) values ('daisy11','120');
#查询
SELECT * FROM usermodel;
 

数据类型

tinyint 一般用来存年龄之类的小的整数,其他用int

decimal(12,4) 总的长度是12位,4是小数。整数就是12-4-1=7

字符串:

char:长度范围是0~255,当你想要存储一个长度不足255的字符串时,mysql会用空格填充剩下的字符。

varchar:类型在5.0以下的版本中最大长度是255,在5.0以上的版本中,数据类型的长度支持到了65535(字节).

text :text没有默认值,最大长度是2的16次方-1

总结起来,知道固定长度的是用char,超过255字符只能用varchar或者text。(能用varchar的地方就不要用text)

char(50):存放的不足50,会拿空格填充。占用空间更多,但是长度固定,参与运算时速度更快。

varchar(50):是一种比char更加灵活的数据类型。表示的是可以存储的最大字符串长度为50个字节。存储的是实际的长度,为传进来的数据的长度。

文本的比较相同的规则:首先比较的是长度,之后才是按位比较。

crud

1、新增数据

insert into 语句用于向表中插入一行数据

insert into 表名称 values (值1,值2)

我们还可以指定所要插入的列:

insert into 表名称(列1,列2,。。。。)values (值1,值2.。。)

不管使用哪种insert语法,都必须给出values的正确数目。如果不提供列名,则必须给其提供一个默认值。如果提供了列名,则必须给每个列对应出一个值。否则会报错。

省略列的条件:

该列定义为允许NULL

在表定义中给出默认值。这表示如果不给出值,将使用默认值

 
 
INSERT into student VALUES(10,'green',18,1,1)
insert into grade (g_name,g_student_num) values ('python1804',55);
insert low_priority into grade (g_name,g_student_num) values ('python1804',55);
 

可以通过在insert和into之间添加关键字 low_priority,指示MySQL降低insert语句的优先级。

多条插入

insert语句有多组值,每组值用一对圆括号括起来,用逗号分隔。

可以提高数据库处理的性能,因为MySQL用单条insert语句处理多个插入比用多条insert语句要快。

 
 
insert LOW_PRIORITY into grade (g_name,g_student_num) VALUES ('python1803',33),
                                                                                                                        ('HTML51805',70),
                                                                                                                        ('python1807',44);
 

修改数据

更新(修改)表中的数据,使用update语句

1、更新表中特定行

2、更新表中所有行

不要省略where,否则更新表中所有行。用set命令来将新值赋给被更新的列

语法:update 表名称 set 列名称 = 新值 where 列名称 = 某个值

update语句由3部分组成:

1、要更新的表

2、列名和他们的新值

3、确定要更新行的过滤条件。

在更新多个列时,只需要使用单个set命令。每个 “列=值”之间用逗号分隔(最后一列不用逗号)

 
update grade set g_name = 'h51801' where id = 4;
update grade set g_name = 'bigdata' where g_student_num = 33;
update grade set g_student_num = 99;
update grade set g_name = 'VR1801' ,g_student_num = '100' WHERE id = 5;
#为了删除某个列的值,可设置它为NULL(表定义允许为null)
update grade set g_student_num = NULL WHERE id = 4;
 

删除数据

delete 语句用于删除表中的行。需要where条件,来删除表中的指定的行。delete不需要列名,delete删除整行而不是删除列。为了删除指定的列,请使用update语句。

语法:delete from 表名字 where 列名 = 值

 
DELETE from grade WHERE g_name = 'bigdata';
DELETE from grade;
#更快的删除,如果想从表中删除所有行,不要使用delete。
#使用truncate 表名 语句。它能完成相同的工作,但是速度更快。
#truncate实际上是删除原来的表并重新创建一个表,而不是逐行删除表中的数据
truncate grade;

数据库引擎

mysql的存储 是以文件的形式。

innoDB

.frm 后缀:存储表的框架结构

.ibd后缀:存储表的数据和索引

show create table student;

myisam

.frm 后缀:存储表的框架结构,该文件与数据库引擎无关

.MYD :用来存储表的数据

.MYI :用来存储表的索引

myisam表可以存储行记录数。innoDB不保存具体行数。执行slecte count(*) from table

时需要全表扫描。。myisam用一个变量保存了整个表的行数。执行上面语句时只需要读出该变量即可,速度很快

两者区别:

1、innoDB支持事务处理,比较安全。数据文件和索引绑在一起的,必须要有主键,通过主键索引效率会很高。但是要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应过大。

2、大访问率的查询,如果表中绝大多数都只是读查询,可以考虑myisam。

3、写频繁,用innoDB

4、myisam不支持外键。

网址组成(四部分):

​ 协议 http,https(https是加密的http)

​ 主机 g.cn zhihu.com 之类的网址

​ 端口 http协议默认是80,因此一般不用填写,ip相当于地址,端口就是收信人的名字

​ 路径 /question/43567890 都是路径

http://www.zhihu.com/

http://www.zhihu.com/question/43567890

原文地址:https://www.cnblogs.com/gugubeng/p/9714497.html