MySQL

前言(一些废话,可以不看)

为什么学习数据库呢,大家都知道,为了学习删库跑路,因为数据库在工作中起着至关重要的作用,只会写代码的是码农;学好数据库,基本能混口饭吃;在此基础上再学好操作系统和计算机网络,就能当一个不错的程序员。 如果能再把离散数学、数字电路、体系结构、数据结构/算法、编译原理学通透,再加上丰富的实践经验与领域特定知识,就能算是一个优秀的工程师了。(这是百度的)

在没有认识到数据库之前,我们程序运行的数据需要我们每次的输入,但是程序一旦结束,数据也就消失不见了,所以我们才要学习数据库,这样才能在网络中,混口饭吃真正的步入程序开发的一步

数据库 ( DataBase , 简称DB )

概念 : 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。(废话)

数据库根据类型分为关系型数据库非关系型数据库

常用关系型数据库(SQL)有:MySQL、Oracle、SQL Server等等,通过外键关联实现行与行、列与列、表与表的关系

常用的非关系型数据库(NOSQL )有:Redis 、MongoDB等等,以对象的方式存储

数据库管理系统 ( DataBase Management System )

数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据,MySQL其实就是一个数据库管理系统。

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

对于数据库的操作大概也分为了这四种,增删查改,大体又分为,操作数据库操作数据库中的表操作表中的数据

操作数据库

  • 创建数据库

首先在Navicat上新建一个查询

create database wostos;# 创造一个database(数据库) 数据库的名字叫wostos
#当我们数据库中有这个名字的话,那么我们就会创建失败
#为了避免这种错误的发生,我们在建立数据库的时候,可以按照下面这种方式创建
create database if not exists wostos;#加上if not exists,就会先判断是否有这个名字存在,没有才会创建
  • 删除数据库
drop database wostos;#删除数据库
#同理,如果没有这个名字,也会报错,所以我们通常也加上一个判断
drop database if exists wostos;#如果存在,我们就删除
  • 查看数据库
show databases;#查看所有数据库,会把你的数据库一一列出来

show create database `数据库名称`;# 查看数据库定义
show create table `表名`;# 查看表的定义

数据类型

#均可以加unsigned使其变成无符号,并范围加倍
  • 粗体记一下就可以了,其他可以先不急
MySQL数据类型 含义(有符号)
tinyint 1个字节 范围(-128~127)
smallint 2个字节 范围(-32768~32767)
mediumint 3个字节 范围(-8388608~8388607)
int 4个字节 范围(-2147483648~2147483647)
bigint 8个字节 范围(+-9.22*10的18次方)
float 单精度浮点型 8位精度(4字节) m总个数,d小数位
double 双精度浮点型 16位精度(8字节) m总个数,d小数位
char 固定长度,最多255个字符
varchar 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
特殊类型 含义
date 日期 '2008-12-2' ,YYYY-MM-DD
time 时间 '12:25:36',HH-mm-ss(h小写表示12小时制,H大写表示24小时制)
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 时间戳 1970.1.1到现在的毫秒数
year 年份表示
MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 设置主键
AUTO_INCREMENT 自动递增,适用于整数类型,通常用于设置主键 , 且为整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

操作数据库中的表

提示:在数据库中也有很多关键字,不管是取什么名称,尽量不要取关键字的名称,实在要取的话,需要在名字两边加上这个反引号`

表的建立与删除

create table if not exists test (id int(4) primary key, `name` varchar(255), age int(4));
# create新建表,括号中是表的表的属性比如这里就是有三个属性id、name、age,类型分别为int、varchar、int,同理if not exists是判断当没有这个表的时候才创立,防止出错
drop table if exists test cascade;# drop删除表,cascade表示一种删除方式,不细讲,差不多是强制删的意思吧

表的修改

alter table test rename as test01;#修改表名称,将test改为了test01
alter table test add email varchar(255);# alter修改表,add表示添加字段
alter table test drop email;# 同理可以删除
#还有一个change,有兴趣可以搜索一下

增删改查

对这个表操作

select * from student;# select查询表(所有),*代表查询student表中所以信息

select id as 学号, `name` as 姓名 from student;# 查询列,起别名,这样我们查询出来结果,就是以我们起的别名显示(as可以省略)

select distinct `name` 姓名 from student;# distinct表示去重,有时候我们查出的结果会有重复,这样查询出内容并不重复的显示

select `name` 姓名 from student where sex = "男";# where待条件查询 where后跟条件(大部分条件会在代码下方放出来)

select count from student;# 查询表有多少行,还可以加一下修饰

select count(distinct `name`) from student;# 查询表有多少行name不重复的

select `name` from student group by `name` having name="张三";# 了解即可,group by分组查询会自动去掉重复的,条件需要用having,且只能但对象查询,比如这里只能看name

常用条件

AND、OR、NOT分别对应且、或、非

=,!=,<>分别对应等于、不等于、不等于

between and一起用,例如查询时where age between 15 and 20;表示查询年龄在15到20之间的

in, not in,分别表示包含、不包含

查询时也可以接受正则表达式,例如_表示一个通用字符,%可以表示任意个字符,但是需要用到like

where name like '__a'; 表示谁的name是三个字符,并且第三个是a

where name like '%a'; 表示谁的name中含有a在最后一个

对于判断是否为空需要使用 is NULL,值得一提的是没有判断NULL相等的

增删改

insert into student (ID, `name`, age, sex) values (1005, '哈哈', 19, '未知');# insert into插入 列可以省略表示全部插入
insert into test values # 批量插入 这里省略了指定列,所以表示全部插入,每一行的数据都要写全
(001, 'zhangshan', 18, 123),# 用,号隔开,最后一个不要加,
(002, 'wangwu', 19, 234),
(003, 'lisi', 20, 345); update test set `name` = '哈哈' where id = 3;# update修改单个字段,可以配合where使用
update test set `name` = '哈哈', age = 666 where id = 3;# 修改多个字段 delete from test where id = 3;#delete删除,如果不指定where会全部删除

MySQL基本类型、操作的更多相关文章

  1. MySQL json 类型操作快速入门

    MySQL 5.7.8开始支持 json类型. create table t(id int,js json,PRIMARY KEY (`id`)) 插入数据insert into t values(1 ...

  2. MySQL JSON 类型数据操作

    1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...

  3. MySQL字段类型与操作

    MYSQL字段类型与操作 字符编码与配置文件 操作 代码 功能 查看 \s 查看数据库基本信息(用户.字符编码) 配置(配置文件层面) my-default.ini windows下MySQL默认的配 ...

  4. MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...

  5. MySQL服务 - MySQL列类型、SQL模式、数据字典

    MySQL列类型的作用: 列类型可以简单理解为用来对用户往列种存储数据时做某种范围"限定",它可以定义数据的有效值(字符.数字等).所能占据的最大存储空间.字符长度(定长或变长). ...

  6. MySQL Server类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  7. mysql的常用操作的封装

    1.概述: 为了把繁琐的操作简化成简单的类,设计了2个类用来封装了mysql的常用操作,以便使用者可以方便地使用. 2.组成 1)数据库操作类CDatabaseConnect 2)SQL对象类CSql ...

  8. mysql基础:mysql列类型--时间和日期

    mysql列类型--整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--字符串http://blog.csdn.net ...

  9. 第三章(附)mysql表类型MyISAM和InnoDB区别(决定了是否支持事务)

    mysql表类型MyISAM和InnoDB区别 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问 ...

  10. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

随机推荐

  1. 易车网实战+【保姆级】:Feapder爬虫框架入门教程

    今天辰哥带大家来看看一个爬虫框架:Feapder,看完本文之后,别再说你不会Feapder了.本文辰哥将带你了解什么是Feapder?.如何去创建一个Feapder入门项目(实战:采集易车网轿车数据) ...

  2. Linux云计算-03_必备基础命令

    Linux系统启动默认为字符界面,一般不会启动图形界面,所以对命令行的熟练程度能更加方便.高效的管理Linux系统. 本章介绍Linux系统必备命令各项参数及功能场景,Linux常见命令包括:cd.l ...

  3. 使用Flash Builder 4.6出现 新建配置 失败 java.lang.NullPointerException错误

    当看到这个错误的时候有点莫名奇妙的感觉,随后的第一反应是: 这跟我前些天安装的java的jre 1.8 有没有关联性.修改了设定,方法如下 "运行" -> "外部工 ...

  4. JNI小记

    本文参考<较详细的介绍JNI>一文,并添加了一些方法,代码已经过测试,留待日后工作使用.关于JNI的HelloWorld的例子,就不赘述了. java代码: 1 package com.c ...

  5. webpack(11)配置文件分离为开发配置、生成配置和基础配置

    前言 上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境 webpac ...

  6. 利用PE破解系统密码

    1.利用pe制作工具制作pe启动盘或者ios镜像 2.制作好后,在虚拟机设置里面加载镜像 3. 3.开启时选择打开电源进入固件 4.开启后依次选择:Boot--->CD-ROM Drive并按F ...

  7. mongodb在双活(主备)机房的部署方案和切换方案设计

    1. 概述 现在很多高可用系统为了应对极端情况,比如主机宕机.网络故障以及机房宕机等灾难的发生,通常会部署主备架构(双机房),或者双活架构(双机房),甚至多活架构(三个机房或者以上),mongodb天 ...

  8. java集合(3)-Java8新增的Predicate操作集合

    Java8起为Collection集合新增了一个removeIf(Predicate filter)方法,该方法将批量删除符合filter条件的所有元素.该方法需要一个Predicate(谓词)对象作 ...

  9. 在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.2)

    在我们 service mesh 之旅的第一部分中,我们讨论了"什么是服务网格以及我们为什么选择 Linkerd2?".在第二部分,我们将讨论我们面临的问题以及我们如何解决这些问题 ...

  10. UnitTest+HTMLTestRunner实战

    框架 步骤 先建立images,reports,tools文件夹 把HTMLTestRunner.py放进tools中  文件内容  https://www.cnblogs.com/wangxue13 ...