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

MySQL 命令(一)的更多相关文章

  1. Mysql命令大全

    格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...

  2. ****Linux MySQL命令运用个人总结

    1.xampp在linux下如何使用mysql命令 A: 解决方法(推荐第二个方法): 1.xampp中的命令工具在/opt/lampp/bin/目录中,所以可以这样运行mysql命令 /opt/la ...

  3. MySQL命令行登录的例子

    环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL命令行登录 解决: 命令 行登录语法: mysql –u用户名 [–h主机名或者IP地址] –p密码 说明:用户名是你登 ...

  4. MySQL命令行下执行.sql脚本详解

    本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sq ...

  5. Mysql 命令大全

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root - ...

  6. mysql 在windows下,使用 net start mysql 命令发生错误 服务名无效 或 1067

    mysql 在windows下,使用 net start mysql 命令发生错误 :服务名无效 或 1067  先使用mysqld -install安装一下 删除data目录下的日志等文件(因为之前 ...

  7. MySQL命令大全:MySQL常用命令手册、MySQL命令行大全、查询工具

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  8. MYSQL命令行使用指南

    一.连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -u ...

  9. mysql命令行以及mysql workbence查询结果中文乱码的解决方法

    最近正在学习mysql,安装环境是windows server 2003 32位操作系统+mysql 5.1.47同时也安装了mysql命令行以及mysql workbench这里是test数据库cr ...

  10. MySQL命令行导出数据库

    MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server ...

随机推荐

  1. ssh服务器终端乱码

    在使用 iTerm2 ssh 连接远程服务器的终端时,终端中文显示乱码.但是本地使用却没有出现中文乱码的问题,在网络上寻找了一番发现应该是服务器字符集和本地 iTerm2 设置的字符集不一致导致的,于 ...

  2. mtk6589显示子系统笔记(一)

    拿到MT6589的版本不久,发现显示系统代码结构改变很大.做些备忘,后续不忙的时候可以继续看. MT6589之前的MTK的Android系统显示系统同featurePhone基本一致. 先来回顾下MT ...

  3. Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf —— DP

    题目链接:http://codeforces.com/contest/294/problem/B B. Shaass and Bookshelf time limit per test 1 secon ...

  4. “cannot be resolved to a type” 错误解决方法

    (1)jdk不匹配(或不存在) 项目指定的jdk为“jdk1.6.0_18”,而当前eclipse使用的是“jdk1.6.0_22”.需要在BuildPath | Libraries,中做简单调整. ...

  5. 使用grunt js进行js的链接和压缩

    1,http://nodejs.org/download/ 安装nodejs 2,配置环境变量,将nodejs的安装目录放置在Path环境变量中 3,在cmd中 npm install -g grun ...

  6. 为什么要把页面放在 WEB-INF 路径下?

    1.基于不同的功能 JSP 被放置在不同的目录下 这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用.某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患.用户可以绕过Strut ...

  7. Linux下C语音实现socket发送和接收的小程序

    1.什么是socket套接字 socket其实就是计算机通信的端口,可以实现两个计算机之间的通信的一个接口,应用程序在网络上传输就是通过这个借口实现. socket分为三种类型: 字节流套接字(Str ...

  8. bzoj2957楼房重建——线段树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2957 线段树维护原点到楼顶的斜率,可以知道答案就是从原点开始斜率递增的个数: 记录一个mx数 ...

  9. bzoj3625

    fft 分治虽然是万能的,但是太慢了 分治是nlog^2n的,太慢了,于是我们用求逆和开根 设f(x)表示答案为x的方案数 c表示物品的生成函数 那么f=f*f*c+1 f*f表示左右儿子的方案数 c ...

  10. Sense2vec with spaCy and Gensim

    如果你在2015年做过文本分析项目,那么你大概率用的是word2vec模型.Sense2vec是基于word2vec的一个新模型,你可以利用它来获取更详细的.与上下文相关的词向量.本文主要介绍该模型的 ...