数据库的定义

数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库

分类

非结构化数据:

数据相对来说没有固定的特点

半结构化数据:

数据之间有着相同的存储结构 属性 值

每一条数据的属性可以不同

结构化数据:

创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的

数据。

数据之间有着相同的存储结构 属性 值

同一个结构模型中每一条数据的属性都是相同的,但是值有可能不同,这些数据非常便于存储和管理。

SQL结构化查询语言

DDL:数据库定义语言

DML:数据库操作语言

DQL:数据库查询语言

DCL:数据库控制语言

数据库相关操作

  • show databases; 查看当前的所有数据库

  • create database 数据库名 default charset utf8 collate utf8_general_ci; 创建数据库,也可也直接create database 数据库名

  • drop database 数据库名; 删除数据库

  • use 数据库名; 进入数据库

  • show tables; 查看此数据库下的所有表

  • exit; 退出,或者输入ctrl+z

  • 创建一个表

create table tb1(
id int,
name varchar(16) not null, --
age int default 3
)default charset=utf8;
  • drop table 表名; 删除一个表
  • delete from 表名; 或 truncate table 表名;(速度快、无法撤销)
  • 修改表
  1. 添加列

    alter table 表名 add 列名 类型;

    alter table 表名 add 列名 类型 default 默认值;

    alter table 表名 add 列名 类型 not null default 默认值;

    alter table 表名 add 列名 类型 not null primary key auto_increment;
  2. 删除列

    alter table 表名 drop column 列名 类型;
alter table tb3 drop sex;
alter table tb3 drop column age;
  1. 修改列类型

    alter table 表名 modify column 列名 类型;
alter table tb3 modify column sex char(12);
  1. 修改列类型加名称

    alter table 表名 change 原列名 新列名 类型;
alter table tb3 change sex age varchar(12);
  1. 修改列默认值

    alter table 表名 alter 列名 set default 1000;
alter table tb3 alter age set default 1000;
  1. 删除列默认值

    alter table 表名 alter 列名 drop default;
  2. 添加主键

    alter table 表名 add primary key(列名);
alter table tb3 add primary key(id);
  1. 删除主键

    alter table 表名 drop primary key;

常见列类型

(常用的有int,varchar,decimal,datetime)

int[(m)][unsigned][zerofill]

int 表示有符号,取值范围:-2147483648 ~ 2147483647

int unsigned 表示无符号,取值范围:0 ~ 4294967295

int(5)zerofill 仅用于显示,当不满足五位时,按左边补0,例如:00002;满足时,正常显示

tinyint[(m)] [unsigned] [zerofill]`

有符号,取值范围:-128 ~ 127.

无符号,取值范围:0 ~ 255

bigint[(m)][unsigned][zerofill]

有符号,取值范围:-9223372036854775808 ~ 9223372036854775807

无符号,取值范围:0 ~ 18446744073709551615

decimal[(m[,d])] [unsigned] [zerofill]`

准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,最大值为30.

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

单精度浮点数,非准确小数值,m是数字总个数,d是小数点后个数。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。

char(m)

定长字符串,m最大255,即使内容长度小于m,也会占用m长度

varchar(m)

变长字符串,m最大65535,内容小于m时会按真实数据长度存储,如果超出m长度限制会报错。

text

text数据类型用于保存变长的大字符串,长文本会用,如文章、新闻

mediumtext

A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.

longtext

A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)

datetime

YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)

timestamp

YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时,将其又转化为客户端当前时区进行返回。

对于DATETIME,不做任何改变,原样输入和输出。

date

YYYY-MM-DD(1000-01-01/9999-12-31)

time

HH:MM:SS('-838:59:59'/'838:59:59')

DQL数据库查询语言

概念

  • 关系:可以理解为一张二维表,每个关系都有一个关系名,就是通常说的表名
  • 元组:二维表中的一行,在数据库中经常被称为记录
  • 属性:二维表中的一列,在数据库中经常被称为字段
  • 域:属性的取值范围,也就是数据库中某一列的取值限制
  • 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
  • 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

DQL查询语句

格式:

select 列名*N from 表名 where 查询条件1 and/or 查询条件2 group by 列 Having 分组条件 Order by 排序

规则: sql在书写的时候除了查询条件之外,大小写都可以

​ select * from user where uname ='zs';

​ SELECT * FROM USER WHERE UNAME = 'zs';

-- 属于SQL语句的注释

​ 所有的查询条件为字符串时,需要用'xxx'进行修饰,否则就会当做列名去处理

select查询

--查询姓名为bfy的学生信息
select *(通配符,默认查询所有列) from emp(表名) where(过滤符合条件的信息)
name='bfy'(查询条件为字符串时,需要用'xxx'进行修饰) (条件查询:= > < != <> >= <=其中<>和!=是一个意思)
and(并列查询条件) id in(001,002,003)(in 在某个范围中查找)
and phone is null(空值查询用 is null/is not null)
and score between 90 and 100 (范围比较)
and sex like '%S%'(模糊查询,%代表任意个字符,这里的意思是带有s的字符串,
同理,'%S'是最后一个字符是s的字符串,'S%'第一个字符是s的字符串。'_S%'中的
_代表占位符,占一个字符的位置,这里的意思就是第二个字符是S的字符串,由于是模糊查询,字母的大小写都会查询出来,这点要注意)
order by age(结果排序,使用asc是升序排列(默认),使用desc可以降序排序,也可也多列排序如:order by deptno,sal desc)
--显示不带有"R"的员工的姓名
select ename from emp where ename not like '%R%'; --显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.
select ename,job,sal from emp order by job desc,sal;

select结果分页

--每次查询前N行
select * from student limit 4;
--查询第N页,每页显示M个
select * from student limit 0,3;

MySQL数据库的创建和基本的查询语句的更多相关文章

  1. 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句

    在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...

  2. 在mysql数据库中创建oracle scott用户的四个表及插入初始化数据

    在mysql数据库中创建oracle scott用户的四个表及插入初始化数据 /* 功能:创建 scott 数据库中的 dept 表 */ create table dept( deptno int ...

  3. 在mysql数据库中创建Oracle数据库中的scott用户表

    在mysql数据库中创建Oracle数据库中的scott用户表 作者:Eric 微信:loveoracle11g create table DEPT ( DEPTNO int(2) not null, ...

  4. 先排序然后union all失效,mysql数据库多个表union all查询并排序的结果为什么错误

    mysql数据库多个表union all查询并排序的结果为什么错误? 群主,我想进行一个表的查询,先把表中某个字段的内容查出,然后其他的再排序,我用union all连接两个表的查询结果排序是错的 比 ...

  5. MySQL数据库的创建&删除&选择

    1.MySQL数据库的创建 方法1和2      方法3.使用PHP脚本 PHP中使用mysqli_query函数来创建或删除MySql数据库 mysqli_query函数:两个参数 返回值:执行成功 ...

  6. 使用Navicat定时备份mysql数据库和创建报表并邮件自动发送

    数据库备份在现代计算机高速发展的今日变得日益重要,程序员往往因为不重视而忽略备份数据,导致数据丢失,造成非常严重的后果.定时备份无疑是解决备份的最好的途径,本文主要使用Navicat来自动备份数据库和 ...

  7. mysql数据库优化方法大数据量查询轻松解决

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC

    一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...

  9. MySQL 数据库的创建、修改、删除、跳转

    一. 创建数据库 []代表可选项. IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作. <数据库名>:创建数据库的名称.MySQL 的数据存储区 ...

随机推荐

  1. 04 Springboot 格式化LocalDateTime

    Springboot 格式化LocalDateTime 我们知道在springboot中有默认的json解析器,Spring Boot 中默认使用的 Json 解析技术框架是 jackson.我们点开 ...

  2. Java 接口返回值集合防止空指针

    接口 返回值为一个集合 public interface UserSearchService{ List<User> listUser(); } 接口实现 public List<U ...

  3. 云开发中的战斗机 Laf,让你像写博客一样写代码

    各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? 理想的需求应该是可以在线编写.调试函数,不用重启服务,随时随地在 Web 上查看函数 ...

  4. 耗时半年,Eoapi 终于正式发布 API 工具的插件广场

      这是我们的第一篇月报,每个月和每个来之不易的开发者分享产品故事以及产品进展. 在 5.20 这个极具中国特色的"节日"里,Eoapi 发布了 1.0.0 版,三个程序员掉了半年 ...

  5. 《C Primer Plus》第六版笔记--4~6章

    目录 第四章 字符串和格式化输入/输出 第五章 运算符.表达式和语句 第六章 C控制语句:循环 虽然匆匆忙忙,但还是要做笔记,虽然大概都知道...... 挑一些容易忘记的地方 第四章 字符串和格式化输 ...

  6. 如何使用Superset可无缝对接MRS进行自助分析

    摘要:本文主要介绍如何在MRS之上使用Superset进行数据分析. 本文分享自华为云社区<使用商业智能软件Superset分析MRS数据之最佳实践>,作者: 啊喔YeYe . 1. 概要 ...

  7. NetCore框架WTM的分表分库实现

    介绍 本期主角: ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 WTM WalkingTec.Mvvm框架(简称W ...

  8. 【二分图】匈牙利 & KM

    [二分图]匈牙利 & KM 二分图 概念: 一个图 \(G=(V,E)\) 是无向图,如果顶点 \(V\) 可以分成两个互不相交地子集 \(X,Y\) 且任意一条边的两个顶点一个在 \(X\) ...

  9. vue根据后端菜单自动生成路由(动态路由)

    vue根据后端菜单自动生成路由(动态路由) router.js import Vue from 'vue' import Router from 'vue-router' import store f ...

  10. 开发工具-RSA加解密

    更新日志 2022年6月10日 初始化链接. https://toolb.cn/rsa