一、MySQL概述

1、MySQL体系结构图

2、与数据库相关的几个名词数据库:database

数据表:table

字段:field(列信息)

记录:record(行信息)注:1)一个MySQL数据库实例,可以同时创建多个database数据库

​ 2)一个database数据库可以同时拥有多个table数据表

​ 3)每个表都有自己的表头信息,如ID、Name、Gender、Addtime,称为field字段

​ 4)每个表可以拥有多个记录,如Tom、King、Kylie、Jennie等个人信息

通过以上信息,我们可以得出,数据记录是如何保存和存储在数据库里的,即:

数据(记录record) —> 数据表(table) —> 数据库(database)

那么由此可知,想要存放一条记录,那么必须得先有==数据库—>数据表—>数据记录==

二、MySQL语句

1、什么是SQL语句

SQL 是 Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言,由 IBM 在 20 世纪 70 年代开发出来,作为 IBM 关系数据库原型 System R 的原型关 系语言,实现了关系数据库中的信息检索。

20 世纪 80 年代初,美国国家标准局(ANSI)开始着手制定 SQL 标准,最早的 ANSI 标准于 1986 年完成,就被叫作 SQL-86。标准的出台使 SQL 作为标准关系数据库语言的地位得到了 加强。SQL 标准目前已几经修改更趋完善。

正是由于 SQL 语言的标准化,所以大多数关系型数据库系统都支持 SQL 语言,它已经发展 成为多种平台进行交互操作的底层会话语言。

2. SQL语句的分类DDL(Data Definition Languages)语句:

数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter、rename、truncate。DML(Data Manipulation Language)语句:

==数据操纵语句==,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、update等。DCL(Data Control Language)语句:

数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。DQL(Data Query Language)语句:

数据查询语句,用于从一个或多个表中检索信息。主要的语句关键字包括 select

3. MySQL中如何求帮助亘古不变的官档man文档

man文档可以对mysql的一些基本工具及后台命令求帮助,比如:

[root@db01 ~]# man mysql

[root@db01 ~]# man mysql_install_db

[root@db01 ~]# man mysqldump

[root@db01 ~]# man mysqldMySQL的命令行求帮助

mysql> help;

mysql> ?

mysql> help create table;

根据内容进行查找帮助

mysql> ? contents

Account Management

Administration

Data Definition

Data Manipulation

Data Types

Functions

Functions and Modifiers for Use with GROUP BY

Geographic Features

Language Structure

Storage Engines

Stored Routines

Table Maintenance

Transactions

Triggers

寻求账户管理的帮助(一级一级的向内部查)

mysql> ? Account Management

mysql> ? CREATE USER

三、数据库操作

1、创建数据库

创建db1库

create database db1;

创建db1库并指定默认字符集

create database db1 default charset gbk;

如果存在不报错(if not exists)

create database if not exists db1 default character setutf8;

说明:不能创建相同名字的数据库!

2、查看数据库

查看所有数据库:

mysql> show databases;

3、更新数据库

所谓的更新数据库,主要是更新数据库的字符集。

更改db1库的默认字符集

alter database db1 default character setgbk;

alter database db2 default charset utf8;

注:数据库名称不能更新,只能删除后在重新创建。

4、删除数据库

删除db1库

drop database db1;

四、数据表操作

1、创建数据表

第一步:选择数据库

选择数据库

mysql> use db1;

第二步:创建数据表

create table 表名 (字段1,字段2,...)

create table 表名 (字段1 数据类型(字符长度),字段2,...)

create table 表名 (字段1 数据类型(字符长度) 约束条件,字段2,...)

案例:创建数据包

create table t1(

id int not null auto_increment primary key,

name varchar(40) not null,

age tinyint unsigned default 0,

mobile char(11),

remark varchar(255)

);

备注:

not null,当前字段插入或更新数据时不能为空

auto_increment,自动增长,插入时设置为null即可

primary key,主键,要求此字段的每个值必须唯一

unsigned,无符号型,说白了就是必须为0或正整数

default,默认值,不写默认就是这个值

2、字段类型(了解)

☆ 整数型

☆ 小数型

① 定点类型(精确值)=> DECIMAL和NUMERIC

DECIMAL和NUMERIC 类型的存储精确的数值数据。使用这些类型时,重要的是要保留精确的精度,例如使用货币数据。在MySQL中, NUMERIC被作为DECIMAL来应用,所以下面的举例DECIMAL同样适用于 NUMERIC 。

price DECIMAL(5,2)

在上面的例子中,薪水字段的类型为decimal,表示精确的数字。其中,5代表精度,2代表刻度。

精度表示数值存储的有效位数,刻度表示小数点后面可存储的位数。

DECIMAL(5,2)能够存储五位数和两位小数的任何值,因此可以存储在price列中的值的范围-999.99是 999.99

特殊注意:

DECIMAL(M)和DECIMAL(M,0)是相等的,存储长度取决于M的值,默认情况下M值为10.刻度为0表示没有小数。

② 浮点类型(近似值)=> FLOAT和DOUBLE

FLOAT和DOUBLE类型代表近似数字数据值。MySQL对于单精度值使用四个字节,对于双精度值使用八个字节。 FLOAT单精度浮点数精确到约7位小数,DOUBLE双精度浮点数精确到大约15位小数 。FLOAT类型会随着数值的增大精度会减小。

FLOAT(M,D),其中,M表示存储的有效位数,D代表小数点后面的位数;即整数位数+小数部分不能超过M值。

colum1 FLOAT(7,4)

上面例子中,如果你插入为999.00009到cloum1列,那么mysql在存储时会四舍五入变为999.0001插入。

③ 对比总结

☆ 字符串类型

① CHAR类型

CHAR类型的字符串为定长.长度范围是0到255之间的任何值.占用定长的存储空间,不足的部分用空格填充;读取时删掉后面的空格。

存储空间:CHAR(M)类型的存储空间和字符集有关系,一个中文在utf8字符集中占用3个bytes、gbk占用2个bytes、数字和字符统一用一个字符表示。

存储机制:在不够M长度时,MySQL在存储数据时,需要填充特殊的空格.

举个栗子:

name CHAR(M),M表示字符数

② VARCHAR类型

VARCHAR是变长存储,仅使用必要的存储空间。

存储空间:VARCHAR(M)类型的存储空间和字符集有关系,一个中文在utf8字符集中占用3个bytes、gbk统一占用2个bytes、数字和字符一个字符表示。

存储机制:VARCHAR(M)字段存储实际是从第二个字节开始存储,然后用1到2个字节表示实际长度,剩下的才是可以存储数据的范围,因此最大可用存储范围是65535-3=65532字节;

第一个字节标识是否为空.(长度小于255字节,使用一个字节来表示长度;大于255字节使用两个字节来表示长度)。

③ TEXT类型

长度超过VARCHAR最大长度的字符,都可以使用TEXT类型进行保存。

☆ 日期时间类型

日期时间类型字段定义主要看需要哪种格式!

3、查看数据表

查看所有表

mysql> show tables;

4、更改数据表

更改表属性(修改字段、修改引擎)

增加一列成为第一列

alter table t1 add id int first;

在age后面增加一列叫sex

alter table t1 add sex enum('男','女','保密') after age;

删除age这个列

alter table t1 drop age;

修改列名和数据类型

alter table t1 change id ID bigint;

修改列的数据类型

alter table t1 modify ID int;

查看数据库有哪些存储引擎

show engines;

修改表的存储引擎

alter table t1 engine MyISAM;

查看修改存储引擎是否成功

show create table t1;

修改表的默认字符集

alter table t1 default charset=utf8;

更改表名称:

移动表到另一个库里并重命名

rename table db01.t1 to db02.t11;

或者

alter table db01.t1 rename db02.t11;

只重命名表名不移动

rename table tt1 to tt2;

或者

alter table tt1 rename tt2;

5、删除数据表

drop table 表名;

五、数据操作

1、添加数据

以下是往表里插入数据的几种不同方法

insert into 表名 set字段1=xx,字段2=xx;

insert into t1 setid=3,name='li';

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

insert into t1 values(1,'zhang'),(2,'wang');

insert into 表名 (指定字段1,指定字段2) values(字段1值,字段2值);

insert into t2 (id,name) values(3,'li');

insert into t1 select* from t2;

insert into t1(name) selectname from t2;

说明:

1.插入的数据来自于另外一张表

2.一定要保证两张表的结构一致(插入表里字段数和后面表查找出来的字段要相匹配)

3.两张表结构完全一致;或者人造让两边字段一致

2、查询数据

查询表里所有记录

select* from t1;

3、更新数据

update 表名 set字段1=新值,字段2=新值,... where条件;

案例:

update t1 setname='harry' whereid=1;

update t1 setname='jack',id=33 whereid=3;

update t1 setid=222,name='wanger' whereid=2;

4、删除数据

删除表里所有的记录

delete from 表名;

delete from t1;

truncate 表名;

根据条件删除

delete from t1 whereid>3;

注意:

truncate不能加where条件删除数据;只能全部删除表里的所有记录。

5、delete与truncate

- delete:删除数据记录

- 数据操作语言(DML)

- 在事务控制里,DML语句要么commit,要么rollback

- 删除大量记录速度慢,只删除数据不回收高水位线

- 可以带条件删除

- truncate:删除所有数据记录

- 数据定义语言(DDL)

- 不在事务控制里,DDL语句执行前会提交前面所有未提交的事务

- 清里大量数据速度快,回收高水位线(high water mark)

- 不能带条件删除

韩忠康 5天玩转mysql_玩转MySQL数据库5天就够了(2)相关推荐

  1. c语言多线程mysql_多线程读写mysql数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 unsigned int __stdcall scan(PVOID pM) { char ip[20]; strcpy(ip, (char*)pM); M ...

  2. 树莓派如何卸载mysql_树莓派安装MySQL数据库与卸载

    出处: 1.http://www.cnblogs.com/liyangLife/p/4500115.html 2.https://blog.csdn.net/huayucong/article/det ...

  3. c 多线程mysql_多线程读写mysql数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 unsigned int __stdcall scan(PVOID pM) { char ip[20]; strcpy(ip, (char*)pM); M ...

  4. 下载了一堆mysql_干掉一堆mysql数据库,仅需这样一个shell脚本

    一大早就被电话吵醒了,云某项目数据库全挂了,启动不了(睡得太死,没听到报警短信),吓得不轻啊! 电话中说所有mysql数据库主库都启动不了,但从库正常,怀疑是主库去连其它阿里云的主库了.这些数据库,以 ...

  5. the serveice mysql_解决重启MySQL数据库The server quit without updating PID file问题

    今天遇到一个网友求助,提到自己的网站可能是被攻击或者是其他问题导致网站无法打开.这里我也有看到他的网站打开之后提示"Error establishing a database connect ...

  6. d3.js和mysql_如何从mysql数据库中提取数据并使用D3.JS进行可视化?

    以下是一个php脚本,您应该可以将其保存在某个文件中(假设您称之为"getdata.php"),可以从您的HTML文件中访问,其中包含D3代码.调用时,它将以json格式从MySQ ...

  7. 使用jsp循环查询mysql_[JSP] 创建mysql数据库利用JSP进行数据库查询(1)

    1. 链接数据库, 并创建新表 mysql>create database people; mysql>use people; mysql>create table peoples ...

  8. 华信mysql_华信Mysql数据库修复工具

    华信Mysql数据库修复程序是由北京华信数据恢复中心独立研发,主要针对Mysql数据库损坏的恢复.本程序可用于由于各种误操作而导致数据丢失的恢复,以及由于断电.陈列损坏.硬盘坏道等各种原因导致数据库无 ...

  9. e4a怎么建立mysql_如何建立MYSQL数据库的连接?

    我们有两种方法:一种是在ODBC数据源中建立一个DSN.具体方法是:1.打开控制面板中的ODBD数据源:2.选择系统DSN,添加一个新的DSN驱动程序:3.选择MyODBD,出现一个对话框供输入MyS ...

最新文章

  1. 实现搜索框记录搜索历史_三个案例告诉你:“搜索框”该如何设计?
  2. boost::python::pointee相关的测试程序
  3. 制作类似QQ截图软件
  4. I want go to school
  5. ip和端口的本质与作用,网络协议栈
  6. 深度神经进化大有可为?Uber详解如何用它优化强化学习 | 5篇论文
  7. linux管道和tee命令
  8. bzoj4009: [HNOI2015]接水果
  9. markdown语法学习---半小时就能掌握--宋成光
  10. ArcGis——资源三号卫星的DSM提取流程
  11. python两台电脑文件传输_两台电脑怎么互相连接传送文件?
  12. vscode下载太慢,修改下载地址提速
  13. 身份证号码校验(前端,java)
  14. 【MyBatis基础】(09)- 逆向工程(代码自动生成)
  15. QQ群排名霸屏技术居然是这样简单
  16. 韩寒《三重门》精彩语录
  17. win7家庭版升级win7旗舰版
  18. 《深度学习之美》第3章
  19. 区块链时代的大数据生态
  20. 升级windows11后wireshark显示wireshark Can‘t get list of interfaces: PacketGetAdapterNames报错

热门文章

  1. 第二十一天 认识一维数组part3
  2. oracle 修改字段类型方法
  3. android intent sender,Android7.0以上调PendingIntent.getIntent()报错
  4. ad中装配图如何导出_如何把endnote中的research note和title等一起导出成表格或者txt?...
  5. 属于哪个单元_到底怎么挑?动铁、动圈、动铁动圈混合买耳机哪个更好?
  6. 平衡查找树C语言程序,C语言数据结构之平衡二叉树(AVL树)实现方法示例
  7. Python+OpenCV:形态学变换
  8. warning LNK4070的解决办法
  9. java中为什么同步_如何在Java中同步工作
  10. 升级插件_全新界面全面升级不能错过 摄影后期插件 CameraRaw12.3 最新版