数据库的定义

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

分类

非结构化数据:

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

半结构化数据:

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

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

结构化数据:

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

数据。

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

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

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. 139_Power BI之某制造企业HR相关数据年度复盘

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近在忙一个关于制造企业HR年度数据复盘分析:数据已脱敏. 先来看看效果. 1.视频效果 [video widt ...

  2. 关于ECharts图表反复修改都无法显示的解决方案

    解决方案:清空浏览器所有记录,再次刷新即可

  3. 一起看 I/O | Flutter 3 更新详解

    作者 / Kevin Jamaul Chisholm, Technical Program Manager for Dart and Flutter at Google 又到了 Flutter 稳定版 ...

  4. 第06组Alpha冲刺(3/6)

    目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2.鲍凌函 3.曾丽莉 4. 曹兰英 5. 方梓涵 6.董翔云 7.杜筱 8.黄少丹 9. 詹鑫冰 10.吴沅静 1.3 冲刺成果展示 1.1 ...

  5. CMU 15-445 数据库课程第四课文字版 - 存储2

    熟肉视频地址: CMU数据库管理系统课程[熟肉]4.数据库存储结构2(上) CMU数据库管理系统课程[熟肉]4.数据库存储结构2(下) 1. 面向日志的存储 上节课我们讲完了面向元组的存储,这节课从面 ...

  6. 贝塞尔曲线在Unity中的应用

    前言:国庆放假后基本整个人的散掉了.加之种种原因,没时间没心情写博客.最近研究了一下3d的一些效果.其中有类似翻书撕纸的操作,可是一个panel怎么由平整的变成弯曲的呢? 两点可以确定一条直线,三点可 ...

  7. JS - 使用 html2canvas 将页面转PDF

    JS - 使用 html2canvas 将页面转PDF 本方法可以将页面元素块转为pdf. 网站地址 jspdf.js 官网地址:http://jspdf.com GitHub 主页:https:// ...

  8. 分布式机器学习:PageRank算法的并行化实现(PySpark)

    1. PageRank的两种串行迭代求解算法 我们在博客<数值分析:幂迭代和PageRank算法(Numpy实现)>算法中提到过用幂法求解PageRank. 给定有向图 我们可以写出其马尔 ...

  9. 论文解读(ARVGA)《Learning Graph Embedding with Adversarial Training Methods》

    论文信息 论文标题:Learning Graph Embedding with Adversarial Training Methods论文作者:Shirui Pan, Ruiqi Hu, Sai-f ...

  10. 使用 DartPad 制作代码实践教程

    DartPad 是一个开源的.在浏览器中体验和运行 Dart 编程语言的线上编辑器,目标是为了帮助开发者更好地了解 Dart 编程语言以及 Flutter 应用开发. DartPad 项目起始于 20 ...