您现在的位置是:首页 > 正文

SQL数据库

2024-02-01 05:06:48阅读 2

一、数据库简介

MySQL数据库,是开放源代码的数据库,免费。功能强大使用方便。

Structured Query Language 简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。

SQL语言的组成部分:

1.DDL(Data Defination Language):数据定义语言,主要用于定义数据库、表、视图、索引和触发器等。像DROP、CREATE、ALTER等语句;

2.DML(Data Manipulation Language):主要包括对数据的增删改。INSERT插入数据、UPDATE更新数据、DELETE删除数据;

3.DQL(Data Query Language):数据检索语句,用来从表中获得数据,确定数据怎样在应用程序中给出。像SELECT查询数据;

4.DCL(Data Control Language):数据控制语言,主要用于控制用户的访问权限。像GRANT、REVOKE、COMMIT、ROLLBACK等语句。

二、MySQL语句的规范及常用命令

关键词与函数名称全部大写;数据库名称、表名称、字段名称等全部小写;SQL必须以分隔符结尾;支持折行操作,只要不把单词、标记或引号字符串分割为两部分,可以在下一行继续写;数据库名称、表名称、字段名称等尽量不使用MySQL的保留字,如果需要使用的时候需要使用反引号(``)将名称括起来

MySQL常用命令

SELECT VERSION():显示当前版本

SELECT NOW():显示当前日期

SELECT USER();显示当前用户

三、数据类型

1.整数类型

2.浮点类型

 3.字符串类型

 4.日期时间类型

5.二进制类型

6.如何选择合适的数据类型

        1)整数类型和浮点数类型:如果要表示小数只能用浮点数类型,整数类型不能表示小数;浮点类型DOUBLE精度比FLOAT类型高,如果需要精确到10位以上,就应该选择DOUBLE类型。

        2)浮点数类型和定点数类型:对于精度要求较高的时候需要使用定点数存,因为定点数内部是以字符串形式存储的。

        3)CHAR类型和VARCHAR类型和TEXT类型:CHAR定长字符串,占用空间大,速度快;VARCHAR变长字符串,占用空间小,速度慢;TEXT类型是一种特殊的字符串类型。只能保存字符数据,而且不能有默认值;它们3个存储和检索数据的方式都不一样,数据检索的效率CHAR>VARCHAR>TEXT;CHAR在保存的时候,后面会用空格填充到指定的长度,在检索的时候后面的空格会去掉;VARCHAR在保存的时候,不进行填充。当值保存和检索时尾部的空格仍保留。

        4)日期和时间类型:YEAR只保存年份,占用空间小;其它和日期时间有关的可以通过整型保存时间戳,方便计算。

四、MySQL存储引擎

1.存储引擎:存储引擎就是指表的类型。数据库的存储类型决定了表在计算机中的存储方式。用户可以根据不同的存储方式、是否进行事务处理等来选择合适的存储引擎。

2.如何查看MySQL的存储引擎:查看MySQL支持的存储引擎:SHOW ENGINES;查看显示支持的存储引擎信息:SHOW VARIABLES LIKE 'have%';查看默认的存储引擎:SHOW VARIABLES LIKE 'storage_engine'。

3.MySQL常用存储引擎及特点:InnoDB存储引擎;MyISAM存储引擎;MEMORY存储引擎

4.选择合适的存储引擎

五、数据库操作(DDL,Data Defination Language)

常用命令

        查看上一步操作产生的警告信息:SHOW WARNINGS;

        得到当前打开的数据库名称:SELECT DATABASE()|SCHEMA();

1.创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name]

注意:数据库名称在一个目录名允许的任何字符,除斜线或点等特殊字符,也不要起中文,最大长度64

2.查看当前服务器下的数据库列表

SHOW {DATABASES|SCHEMAS}

3.查看指定数据库的定义

SHOW CREATE {DATABASE|SCHEMA} db_name

4.修改指定数据库的编码方式

ALTER {DATABASE|SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name

5.打开指定数据库

USE db_name

6.删除指定数据库

DROP {DATABASE|SCHEMA} [IF EXISTS] db_name

六、数据表相关操作

1.什么是表

数据表是数据库最重要的组成部分之一,是其他对象的基础;

数据表是存储数据的数据结构;

数据表是包含了特定实体类型的数据;

数据表由行(row)和列(column)构成的二维网络;

数据表一定先有表结构,再有数据;

数据表至少有一列,可以没有行或多行;

数据表名称要求唯一,而且不要包含特殊字符。

2.如何创建数据表?

CREATE TABLE [IF NOT EXISTS] tbl_name(字段名称 字段类型 [完整性约束条件]
...)ENGINE=引擎名称 CHARSET='编码方式';

完整约束条件:PRIMARY KEY主键 ,AUTO_INCREMENT自增长   , FOREIGN KEY外键, NOT NULL非空,UNIQUE KEY唯一,DEFAULT默认值

3.如何查看数据库中的数据表及表结构?

查看数据库下的数据表 : SHOW TABLES ;

查看指定表的表结构  :  DESC tbl_name  ;    DESCRIBE tbl_name   ;  SHOW COLUMNS FROM tbl_name;

4.如何修改表结构?

修改表名:ALTER TABLE tbl_name RENAME [TO|AS] new_name;RENAME TABLE tbl_name TO new_name

添加字段:ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]

删除字段:ALTER TABLE tbl_name DROP 字段名称

修改字段:ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]

修改字段名称:ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]

添加默认值:ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值

删除默认值:ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

添加主键:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY[index_type] (字段名称,...)

删除主键:ALTER TABLE tbl_name DROP PRIMARY KEY

添加唯一:ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [索引名称](字段名称,...)

删除唯一:ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

修改表的存储引擎:ALTER TABLE tbl_name ENGINE=存储引擎名称

设置自增长的值:ALTER TABLE tbl_name AUTO_INCREMNET=值
 

七、数据的操作(DML)

1.插入数据

        1)不指定具体的字段名:INSERT [INTO] tbl_name VALUES|VALUE(值...)

        2)列出指定字段:INSERT [INTO] tbl_name(字段名称1,...) VALUES|VALUE(值1,...)

        3)同时插入多条记录:INSERT [INTO] tbl_name[(字段名称...)] VALUES(值...),(值...)...;

        4)通过SET形式插入记录:INSERT [INTO] tbl_name SET 字段名称=值,...

        5)将查询结果插入到表中:INSERT [INTO] tbl_name[(字段名称,...)] SELECT 字段名称 FROM tbl_name [WHERE 条件]

2.更新数据:UPDATE tbl_name SET 字段名称=值,... [WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数]

3.删除数据

        1)DELETE FROM tbl_name [WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数]

        2)彻底清空数据表:TRUNCATE [TABLE] tbl_name
 

 八、查询数据操作(DQL)

1.查询记录

SELECT select_expr [, select_expr ...]
     [
         FROM table_references
         [WHERE 条件]
         [GROUP BY {col_name | position}  [ASC | DESC], ... 分组]
         [HAVING 条件 对分组结果进行二次筛选]
         [ORDER BY {col_name | position} [ASC | DESC], ...排序]
         [LIMIT 限制显示条数]
     ]

2.查询表达式

        每一个表达式表示想要的一列,必须至少有一列,多个列之间以逗号分隔;

        *表示所有列,tbl_name.*可以表示命名表的所有列

        查询表达式可以使用[AS]alias_name为其赋予别名

3.WHERE条件

4.GROUP BY查询结果分组

        配合GROUP_CONCAT()得到分组详情

        配合聚合函数:COUNT();MAX();MIN();AVG();SUM()

        配合WITH ROLLUP记录上面所有记录的总和

5.HAVING语句

        通过HAVING子句对分组结果进行二次筛选

6.ORDER BY排序

        通过ORDER BY对查询结果排序

7.LIMIT限制查询结果显示条数

        LIMIT 显示条数;LIMIT 偏移量,显示条数

九、MySQL连接查询

1.什么是连接查询:连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据。连接查询是同时查询两个或两个以上的表时使用的。当不同的表中存在相同意义的字段时,可以通过该字段连接这几个表

2.内连接查询:JOIN|CROSS JOIN INNER JOIN;通过ON 连接条件;显示两个表中符合连接条件的记录;

3.外连接查询

        左外连接  LEFT [OUTER] JOIN   显示左表的全部记录及右表符合连接条件的记录

        右外连接  RIGHT [OUTER] JOIN  显示右表的全部记录以及左表符合条件的记录

4.联合查询

        UNION

        UNION ALL

        UNION和UNION ALL 区别是UNION去掉相同记录,UNION ALL 是简单的合并到一起。

5.外键

        外键是表的一个特殊字段。被参照的表是主表,外键所在字段的表为子表。设置外键的原则需要记住,就是依赖于数据库中已存在的表的主键。外键的作用是建立该表与其父表的关联关系。父表中对记录做操作时,子表中与之对应的信息也应有相应的改变。

        外键的作用保持数据的一致性和完整性

        可以实现一对一或一对多的关系

        注意:父表和子表必须使用相同的存储引擎,而且禁止使用临时表;数据表的存储引擎只能为InnoDB;外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

        外键约束的参照操作:1)CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行。2)SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。3)RESTRICT:拒绝对父表的删除或更新操作。4)NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。

十、MySQL中的子查询

1.什么是子查询:子查询是将一个查询语句嵌套在另一个查询语句中。内层查询语句的查询结果,可以作为外层查询语句提供条件。

2.引发子查询的情况:

        1)使用[NOT]IN的子查询;

        2)使用比较运算符的子查询  =、>、 <、>=、 <=、 <>、 !=、 <=>  ;

        3)使用[NOT]EXISTS的子查询;

        4)使用ANY|SOME或者ALL的子查询

3.将查询结果写入到数据表

        INSERT [INTO] tbl_name [(col_name,...)]
SELECT ...

4.创建数据表同时将查询结果写入到数据表

        CREATE TABLE [IF NOT EXISTS] tbl_name
        [(create_definition,...)]
        select_statement 

十一、MySQL中使用正则表达式查询

1.REGEXP '匹配方式'

2.常用匹配方式

 十二、MySQL中的运算符

1.算数运算符

2.比较运算符

3.逻辑运算符

4.运算符的优先级

 可以通过括号()改变优先级

 

十三、MySQL中的函数

1.数学函数

 2.字符串函数

3.日期时间函数

 4.条件判断函数

5.系统信息函数

 6.加密函数

7.其它常用函数

 

 十四、MySQL中的索引

1.什么是索引?

        索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度

        索引的优点是可以提高检索数据的速度

        索引的缺点是创建和维护索引需要耗费时间

        索引可以提高查询速度,会减慢写入速度

2.索引的分类?

        普通索引;唯一索引;全文索引;单列索引;多列索引;空间索引;

3.如何创建索引?

       1) 创建表的时候创建索引;

CREATE TABLE tbl_name(
字段名称 字段类型 [完整性约束条件],
…,
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [索引名称](字段名称[(长度)] [ASC|DESC])
);

       2)在已经存在的表上创建索引

 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON 表名 {字段名称[(长度)] [ASC|DESC]}

ALTER TABLE tbl_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称(字段名称[(长度)] [ASC|DESC]);

4.如何删除索引?

DROP INDEX 索引名称 ON tbl_name

十五、图形化工具管理MySQL

1.PHPMyAdmin的安装及使用

        phpMyAdmin 是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库

2.SQLyog的安装及使用

        SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。

        特点:基于C++和MySQLAPI编程;方便快捷的数据库同步与数据库结构同步工具;易用的数据库、数据表备份与还原功能;支持导入与导出XML、HTML、CSV等多种格式的数据;直接运行批量SQL脚本文件,速度极快;新版本更是增加了强大的数据迁。

网站文章

  • Spring AOP 中的两种动态代理

    Spring AOP 中的两种动态代理

    Spring AOP 主要用到的 动态代理,在spring aop的实现中,采用了两种方式,一种是基于接口的动态代理,另外一种是基于类的动态代理。在谈动态代理前,先谈下设计模式中的代理模式:代理模式:为另一对象提供一个替身或占位符以控制对这个对象的访问。类图如下:1,基于接口的动态代理必须首先要定义接口:代码如下:package co...

    2024-02-01 05:06:41
  • NotNull、NotBlank、NotEmpty的使用

    NotNull:校验对象不为nullNotBlank:校验字符串是否为null、或者空字符串,去除空格NotEmpty:校验集合是否为null、或者长度是否为0

    2024-02-01 05:06:33
  • access数据类型转换

    Access数据类型转换  (2012-02-09 20:51:31)转载▼标签: 杂谈分类: 数据库每个函数都可以将表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)强制转换为特定的数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类

    2024-02-01 05:06:03
  • 初中计算机授课教案模板,初中课程教案模板

    第二课哭泣的自然《环境被破环》说课教案一、教材的地位与作用《环境被破坏》是教科版八年级下册第一单元第二课第二部分的内容。本单元主要对学生进行环境科学教育,贯穿着“正确认识自然和人类的关系”这一思想。整...

    2024-02-01 05:05:57
  • 总结Windbg常用命令

    1.symfix命令自动将符号路径设置来指向Microsoft 符号存储。系统强制把Microsoft 符号存储的路径覆盖了原有的路径,那么,要使用追加,请使用.symfix+,把原有的路径设回去再保存,再调用.symfix+.2..cls用于清屏3. reload4. lastevent 输出最后一个调试事件所在的进程、线程等简单信息//断点相关

    2024-02-01 05:05:49
  • Java实现word、excel、ppt转pdf文件,pdf转图片(无水印)

    Java实现word、excel、ppt转pdf文件,pdf转图片(无水印)

    在网上也是找了好久才找到的一些比较好的资料,我自己总结梳理了一下,方便后面各位小伙伴使用。 1、效果图 所需的架包百度网盘: 百度网盘连接http:// https://pan.baidu.com/s...

    2024-02-01 05:05:20
  • SQL:从入门到“精通”

    SQL:从入门到“精通”

    SQL:从入门到“精通”

    2024-02-01 05:05:13
  • HTML5会取代App应用吗?

    HTML5会取代App应用吗?

    大量新生移动设备的兴起,改变了互联网的未来。在技术的发展上,HTML5会取代App应用吗?或者说能够在多大程度上取代呢?在HTML5规范中,已经加入了相机、磁力罗盘、GPS信息的支持。很多新兴浏览器也已经开始支持这些新特性。能否用一个统一的HTML5来替代android和ios并行开发的双重成本呢?以下译自Michael Mahemoff的一篇文章,详细分析了HTML5能否取代Android和iO

    2024-02-01 05:04:45
  • OSG HUD实时显示视点坐标

    OSG HUD实时显示视点坐标

    OSG HUD实时显示视点坐标 代码 #include &lt;osgDB/ReadFile&gt; #include &lt;osgViewer/Viewer&gt; #include &lt;os...

    2024-02-01 05:04:39
  • java毕业生设计学习资源下载管理计算机源码+系统+mysql+调试部署+lw

    java毕业生设计学习资源下载管理计算机源码+系统+mysql+调试部署+lw。前端技术:Layui、HTML、CSS、JS、JQuery等技术。springboot基于互联网的图书管理系统—借阅管理...

    2024-02-01 05:04:09