数据库 MySQL基础

数据库 MySQL

  • 健康码
  • 公安系统
  • 支付宝微信支付
  • 酒店
  • 12306 买票
  • 网易云 收藏歌曲
  • 手机通话记录 地铁卡余额
  • 吃鸡 、王者荣耀 皮肤 装备

Mysql 5.7当前主流数据库

  • mysql 被Oracle 收购
  • sqlserver
  • oracle
  • sqlite3

数据库语法都差不多

mysql、sqlite 开源免费

安装数据库

五个基本单位

  • 数据库服务器 mysql server
  • 数据库
  • 数据表
  • 数据字段
  • 数据行

娱乐化讲解表关系

数据库的操作

mysql 以;为结束

连接数据库

mysql -u  用户名 -p密码 mysql -u  用户名 -p   输入密码  mysql -u root -h ip地址 -p 输入密码  -u 用户名-p密码-h host ip地址

退出数据库

exit

创建数据库

mysql>   database 数据库名;Query OK, 1 row affected (0.00 sec)mysql> create database if not exists 数据库名;Query OK, 1 row affected (0.01 sec)

查看数据库

show databases;

删除数据库

不要删除 mysql数据库

drop database 数据库名;

选中数据库

mysql> use 数据库名字;Database changed

查看里边的数据表

show tables;

数据表操作

use 数据库名字;show tables;

查看表结构

mysql> desc 表名; ---------- -------------- ------ ----- --------- ---------------- | Field    | Type         | Null | Key | Default | Extra          | ---------- -------------- ------ ----- --------- ---------------- | id       | int(11)      | NO   | PRI | NULL    | auto_increment || username | varchar(255) | NO   |     | NULL    |                || password | varchar(255) | NO   |     | NULL    |                || age      | tinyint(4)   | YES  |     | NULL    |                | ---------- -------------- ------ ----- --------- ---------------- 4 rows in set (0.00 sec)Field 字段名  Type  字段的类型  int 整数   varchar 字符串  tinyint微整型     Null 字段是否可以为空   Key  主键  外键 等     Default 默认值    Extra 额外的  比如自动递增 

查看创建表的语句

mysql> show create table 表名; ------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Table | Create Table                                                                                                                                                                                                                      | ------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | users | CREATE TABLE `users` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(255) NOT NULL,  `password` varchar(255) NOT NULL,  `age` tinyint(4) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 | ------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 row in set (0.00 sec)engine mysql 引擎   charset mysql 编码   

创建数据表

mysql> create table if not exists 表名(字段名 类型(长度),字段2 类型(长度),字段3 类型(长度))engine=innodb default charset=utf8mb4; # mysql 只有 utf8 没有utf-8
Query OK, 0 rows affected (0.04 sec)

mysql> create table if not exists person(id int(11),username varchar(64),password varchar(128))engine=innodb default charset=utf8mb4;Query OK, 0 rows affected (0.04 sec)

删除表

drop table 表名;  

数据表字段操作

alter table 表名

修改表字段类型

alter table 表名 modify 字段名 类型(长度);

mysql> alter table 表名 modify 字段名 类型(长度);mysql> alter table users modify age bigint(10); #示例

增加表字段

alter table 表名 add column 字段名 类型(长度); # column 可写可不写

mysql> alter table users add sex tinyint; #默认加到最后面 mysql> alter table users add column tel varchar(11) after password; #指定加到某个字段的后边ysql> alter table users add column height varchar(11) first; #加到第一个位置   

删除表字段

alter table 表名 drop column 字段名; #column 可加 可不加

mysql> alter table users drop column sex;

修改表字段

alter table 表名 change 原表名 新名字 类型(长度);

mysql> alter table users change username user_name varchar(128);

change、add 、 modify 都支持后边 加 first 、after

mysql> alter table users modify tel char(11) first;

修改表名

alter table 旧表名 rename 新表名;

数据类型 、引擎、字符集 、索引

数据类型

  1. 数值类型
  2. 字符串类型
  3. 日期类型
  4. 复合类型
  5. 空间类型 (了解 不做讲解)

数值类型

类型 所占字节 范围
tinyint 1 -128~127
smallint 2个字节 -32768-32767
mediumint 3个字节 -8388608~8388607
int 4个字节 -2147483648~2147483647
bigint 8个字节

ps: 性别 要么 男 要么 女用 0表示女 1表示男 tinyint就够了

​ 年龄 要使用无符号整型 年龄没有负数

​ 在实际开发过程中 为了避免浪费空间 选择合适的类型

浮点类型

类型 字节 范围
float(m,d) 4 单精度 m 总个数,d 小数位 float(10,2)
double(m,d) 8 双精度m 总个数,d 小数位 double(10,2)
decimal(m,d) 存储的是字符串的浮点数

ps: 浮点型是非精确值 会存在不太准确的情况

​ decimal 定点数 mysql内部 本质上字符串存储 开发过程中我们 要对 金额等精度要求高的浮点数进行存储 建议使用decimal

字符串

类型 字节 范围
char 0-255字节 定长
varchar 0-255字节 变长
tinyblob 0-255字节 不超过255字节的二进制字符串
tinytext 0-255字节 短文本字符串
blob 0-65535字节 二进制形式的长文本
text 0-65535字节 长文本
mediumblob 0-16777215字节 二进制形式的中等长度文本
mediumtext 0-16777215字节 中等长度文本
longblob 二进制形式的极大长度文本
longtext 极大长度文本
varbinary(M) 允许长度0-M个字节的定长字符串 指的长度 1个字节
binary(M) 允许长度0-M个字节的定长字符串

ps: char(100) 如果 字符串长度只有10 剩下的90用空格补齐

​ varchar(100) 如果字符串长度只有10 剩下的90不用空格补齐 别的字符串可以占用

​ text blob : text 普通字符串不区分大小写

​ blob 二进制字符串 区分大小写

​ 大小写修饰符 不适用于 TEXT blob类型

时间类型

类型 字节 范围
date 3个字节 2021-01-04
time 3个字节 16:08:58
datetime 8个字节 2021-01-04 16:08:58
timestamp 4个字节 自动存储记录的修改时间
year 1个字节 年份

ps:

1. 网站、app 很多人喜欢用int 来存储时间  int存的是时间戳 方便计算  哪怕前端语言后端语言不一样 只需要将时间转化一下就好   2.  也有人喜欢用datetime 站在数据库角度 方便查看   3. 具体根据实际情况选择 

总结

  1. 论占据空间的大小 从大到小 字符串 日期 数值
  2. 根据实际情况选择合适的类型 避免浪费 但是也要考虑到后期的扩展情况

复合类型

类型 说明 举例
set 集合 set(‘num1’,‘num2’)
enum 枚举 enum(‘num1’,‘num2’)

ps:区别 enum只允许从一个集合中取一个

​ set 允许从一个集合中取任意多个

字段其它属性设置

unsigned 主要适用于 整型 和浮点型 使用无符号 也就说 前面没有 负号 -

​ 可以是 存储的位数更长 以tinyint为例子 -128~127 使用无符号 可以存储 0-255个长度

​ 只需要在创建表的时候 整型或者浮点字段后边加上 unsigned

​ create table user(id int(11) unsigned);

zerofill 0 不是空格 使用它可以阻止里边填负数 在创建表的时候 在int 或者浮点 后边加上 zerofill

default 设置默认值

​ mysql> alter table test1 add column age tinyint default 18;

not null 不能为空 精确的说法是 无 其中 0 空格 空字符串’’ 不代表无

字符集

  • 常用字符集
  • 数据库我们用什么字符集

常用字符集

  1. ascii 使用指定的7位或者 8位 二进制数(只包含 0 1)组合来表示128或者 256种可能的字符

    https://www.cnblogs.com/xmxu/archive/2012/07/10/2584032.html 对照表

  2. GBK GB2312的升级版 中国定义的 汉字编码规范 早期 就是gb2312 gbk向下兼容 gb2312

  3. Unicode(统一码 万国码 单一码) 国际定义可以容纳世界上所有的文字和符号的字符编码方案,满足跨语言、跨平台文字处理方案

  4. utf-8(通用转换格式) 万国码 针对 Unicode的可变长度字符编码 空间比ASCII 大一倍 对ASCII 来说 高字节 0 没有任何意义 为了解决这个问题 出现了中间格式字符集 也叫通用转换格式

中文常用的字符集

  • gbk
  • utf-8
开发中
字符集 说明
utf8_general_ci Unicode 多语言 不区分大小写
gbk_chinese_ci 简体中文 不区分大小写

ci 存储 排序的时候 不区分大小写

mysql 没有 utf-8 只有utf8

来源:https://www.icode9.com/content-2-814301.html

(0)

相关推荐

  • ECSHOP数据库MYSQL现有数据表增加新的字段

    执行查询语句: ALTER TABLE `ec_order_info` ADD COLUMN `trade_no`  varchar(100) NOT NULL DEFAULT '' AFTER `p ...

  • Mysql基础01-语法

    数据库 数据的存储:将数据放到表中,表再放到库中. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己.表名具有唯一性. 表由列组成,我们也称为字段.每个字段描述了它所含有的数据的意义表由列组 ...

  • 【竺】数据库笔记15——MySQL创建数据库并插入数据(二)

    一.操作简介 1.1 操作内容 本次将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识. 本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employ ...

  • Mysql:初识MySQL

    转载自:https://www.cnblogs.com/hellokuangshen/archive/2019/01/09/10246029.html Mysql:初识MySQL 只会写代码的是码农: ...

  • Mysql数据库的索引类型有哪些?

    Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言.如今Java已经广泛应用于各个领域的编程开发. MySQL索引类型: 1.普通索引 最基 ...

  • MySQL快速回顾:数据库和表操作

    前提要述:参考书籍<MySQL必知必会> 利用空闲时间快速回顾一些数据库基础. 4.1 连接 在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码). 连接 ...

  • MySQL数据库优势特点是什么?mysql基础知识笔记

    现下市场中,大多数使用Linux操作系统的互联网企业都使用MySQL作为后端的数据库.提升MySQL数据库职业技能的人们也非常多.那么,MySQL数据库到底有哪些优势和特点,得以如此深受青睐呢? My ...

  • MySQL基础知识学习之创建MySQL数据库和表

    虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...

  • (46条消息) 学习数据库MySQL,与SQLite数据库作对比

    MySQL与SQLite对比 SQLite功能简约,小型化,追求最大磁盘效率:MySQL功能全面,综合化,追求最大并发效率.如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的 ...

  • MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  • 14、数据库备份基础知识

    备份工具 1.mysqldump 2.xtrabackup 3.select 语句部分备份 > select * from a into outfile '/testdir/a.back'; & ...

  • (8条消息) MySQL基础

    一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MySQ: 首先在打开cmd窗口,输入mysql -uroot -p ,然后空格进入MySQL控制台, ...

  • (8条消息) mysql 基础教程 很全

    (一)数据库操作 1.创建数据库 create database 数据库名; create database runoob; 2.选择数据库 use 数据库名; use runoob; 3.删除数据库 ...

  • MySQL基础架构和执行流程分析

    MySQL执行一条插入语句或者查询语句,实际上会经过哪些流程和部件,MySQL的架构是怎么样的,本文就一起从一条查询语句的执行流程开始来揭开面纱. 如以下的执行语句: select * from te ...

  • MySQL基础SQL命令---增删改查

    MySQL基础SQL命令---增删改查