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. Centos查看端口占用情况

    Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令:   lsof -i tcp:80   列出所有端口   netstat -ntlp   结束进程: kill 进程代码

  2. Idea操作与问题解决

    1,.properties文件汉字编码出错 主要是Editer的Encoding出错,可在File->settings->Editer->FileEncoding中修改为: 可参考: ...

  3. Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法

    题目链接:http://codeforces.com/contest/731/problem/D D. 80-th Level Archeology time limit per test 2 sec ...

  4. 如何把wecenter的推荐的问题模块单独调取出来?

    查阅文档: http://wenda.wecenter.com/question/1893 http://www.zhidiu.com/article/1012 http://wenda.wecent ...

  5. c++变量定义

    float **a 表示a是一个“指针的指针”,也可以理解为是一个二维数组的指针,***a具有类似的解释,可以理解为是一个三维数组的指针.

  6. html5--5-6 绘制圆/弧

    html5--5-6 绘制圆/弧 学习要点 掌握arc() 方法创建圆弧/曲线(用于创建圆或部分圆) 矩形的绘制方法 rect(x,y,w,h)创建一个矩形 strokeRect(x,y,w,hx,y ...

  7. mongodb给我们提供了fsync+lock机制把数据暴力的刷到硬盘上

    能不能把数据暴力的刷到硬盘上,当然是可以的,mongodb给我们提供了fsync+lock机制就能满足我们提的需求. fsync+lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实 ...

  8. WebRTC学习

    1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/web ...

  9. codeforces 665A A. Buses Between Cities(水题)

    题目链接: A. Buses Between Cities time limit per test 1 second memory limit per test 256 megabytes input ...

  10. Java中String args[]起什么作用?

    在百度知道上看到这样一个答案: 在命令提示符中运行该程序时 可以附加参数运行 输入的参数会存入到字符传数组 args[]中例如:在命令提示符中运行该程序的时候假设该程序在D的JAVA文件夹中D:JAV ...