美文网首页
SQL数据库

SQL数据库

作者: 慧玲说 | 来源:发表于2018-03-01 08:40 被阅读0次

SQL-what
1.结构化查询语言
2.ANSI标准计算机语言
3.访问数据库
区别:
关系型数据库系统,oracle,mysql,sql server等都是增加自定义语句

作用:
CRUD
create,drop,update

创建数据库;
库中创建新表;
库中创建存储过程;
库中创建视图;
设置表、存储过程和视图的权限;

SQL数据库体系结构

基本表

关系模式(模式),Excel表格行列,多个实体+实体属性形成的表

存储文件

内模式(存储模式),数据存放的物理文件

视图

子模式(外模式),视图,
用户角度:查看数据库中的数据:表
数据库系统内部:虚拟表,使用查询语句构成的表

  • 有用?因为复杂查询语句将查询的表保存在数据库中

一条记录,元组,实体

属性,字段,实体人-属性(名字等)

-- 可以在视图或表的基础上建立新视图,导出新的视图。

SQL语言从功能上可以分为数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)四部分,具体介绍如下:

  • DQL (Data Query Language),主要是SELECT。
  • DML(Data Manipulation Language),包括UPDATE、INSERT和 DELETE,用来对数据库里的数据进行操作。
  • DDL(Data Definition Language),DDL比DML要多,主要的命令有CREATE、ALTER、DROP等。主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,大多在建立表时使用。
  • DCL(Data Control Language),用来设置或更改数据库用户或角色权限,包括grant,deny,revoke等语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

-- 修改结构,DDL,重新定义
-- 创建呢,DML,uid ,update,insert,delete

create 数据库的语法

1.window 少于24个字符,特殊字符不可创建 /,<>,符合文件夹名称
2.mysql 不区分大小写,
3.character set 字符集,可省略,使用默认
4.collate指的是校验规则,可省略,使用默认
5.show databases 展示当前all的数据库
6.show create database <数据库名 db_name> 查看该数据库的信息
show create database studentinfo ;查看数据库studentinfo的信息
例如:

  • 创建studentinfo 数据库之前检查是否存在
    CREATE database IF NOT EXISTS studentinfo ;
    create database studentinfo;

  • 检验all 数据库
    show databases;

修改数据库ALERT

修改名称

  • 不安全操作,容易丢失和损坏
  • 先导出 sql dump, 后导入

修改字符集和校验规则

  • 修改字符集默认字符集utf-8-> gbk
    ALERT database studentinfo character set gbk;

  • 查看是否修改成功
    show create database studentinfo;

删除数据库

DROP database if exists db_name;

  • 删除数据库系统中已存在的数据库(表,数据),原来分配的空间会回收

  • 创建一个big5 字符集,名为studentinfo 数据库,然后查看数据库的详细信息,修改为gbk字符,然后删除数据库

create database if no exists studentinfo character set big5;
show create database studentinfo;
alert database studentinfo character gbk;
drop database studentinfo;

数据库的数据类型

各个字段的类型:

  • 整数类型-年龄
  • 小数类型
    -- 定点数(DECIMAL)
    -- 浮点数- (双精度double-8字节,单精度float-4字节)成绩、余额
整数类型
  • 根据取值范围不同,可分为TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT5种。

其中,占用字节数最小的是TINYINT0(0-255无符号,-128~127有符号),最大的是BIGINT

  • 注意:不同整数类型的取值范围可以根据字节数计算出来。例如,TINYINT类型的整数占用1个字节,1个字节是8位,那么,TINYINT类型无符号数的最大值就是:2 *8-1

  • DEC(M,D)
    -DECMIAL(M,D)

M > D ,字节数M+2,
M <=D,字节数D+2,
总结大的数D/M+2

  • 注意,数字类型的选择应遵循如下原则:

(1) 优先选择最小的可用类型,如果该字段的值不会超过127,则使用TINYINT比INT效果好。

(2) 在无小数点时,可以选择整数类型,比如年龄。

(3) 浮点类型用于包含小数部分的数,比如学生成绩。

(4) 在需要表示 金额 等货币类型时,优先选择DECIMAL数据类型。另外:DEC和DECIMAL这两个定点数类型是同名词。

时间和日期数据类型被广泛使用,MySQL主要支持DATE、TIME, YEAR、DATATIME和TIMESTAMP5种类型。

DATE表示日期,默认格式为’YYYY-MM-DD’;
TIME表示时间,默认格式为’HH: ii: ss’;
YEAR表示年份;
DATETIME是日期和时间的混合类型,默认格式为’YYYY-MM-DD HH: ii: ss’。

  1. DATE 类型

DATE 类型用于表示日期值,不包含时间部分。可以使用以下4种格式指定 DATE 类型的值:

(1)以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示。

     例如,输入‘2014-01-21’或‘20140121’,插入数据库的日期都为 2014-01-21。 

(2)以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示。

      YY 表示的是年,范围为‘00’~‘99’,其中‘00’~‘69’范围的值会被转换为 2000~2069 范围的值,‘70’~‘99’范围的值会被转换为              1970~1999范围的值。例如,输入‘14-01-21’或‘140121’,插入数据库的日期都为 2014-01-21。

(3)以 YY-MM-DD 或者 YYMMDD 数字格式表示。

      例如,输入 14-01-21 或 140121,插入数据库的日期都为 2014-01-21。

(4)使用 CURRENT_DATE 或者 NOW()表示当前系统日期。

  1. TIME 类型

TIME 类型用于表示时间值,它的显示形式一般为 HH:MM:SS,其中,HH 表示小时,MM 表示分,SS 表示秒。可以使用以下3种格式指定 TIME 类型的值。

(1)以‘D HH:MM:SS’字符串格式表示。其中,D 表示日,可以取 0~34 之间的值,插入数据时,小时的值等于(D*24+HH)。 例如,输入‘2 11:30:50’,插入数据库的日期为 59:30:50。

(2)以‘HHMMSS’字符串格式或者 HHMMSS 数字格式表示。例如,输入‘345454’或 345454,插入数据库的日期为 34:54:54。

(3)使用 CURRENT_TIME 或 NOW()输入当前系统时间。

  1. YEAR 类型

YEAR 类型用于表示年份,可以使用以下3种格式指定 YEAR 类型的值。

(1)使用 4 位字符串或数字表示,范围为‘1901’~‘2155’或 1901~2155。

      例如,输入‘2014’或 2014,插入到数据库的值均为 2014。 

(2)使用 2 位字符串表示,范围为‘00’‘99’,其中,‘00’‘69’范围的值会被转换为 2000~2069

      范围的 YEAR 值,‘70’~‘99’范围的值会被转换为 1970~1999 范围的 YEAR 值。例如,输入‘14’,插入到数据库的值为 2014。 

(3)使用 2 位数字表示,范围为 199,其中,169 范围的值会被转换为 2001~2069 范围的 YEAR 值, 70~99 范围的值会被转换为 1970~1999 范围的 YEAR 值。例如,输入 14,插入到数据库的值为2014。

注意:使用 YEAR 类型时,一定要区分‘0’和 0。因为字符串格式的‘0’表示的是 YEAR 值是 2000,而数字格式的 0 表示的 YEAR 值是 0000。

  1. DATETIME 类型

DATETIME 类型用于表示日期和时间,它的显示形式为‘YYYY-MM-DD HH:MM:SS’,其中,YYYY表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分,SS 表示秒。可以使用以下4种格式指定 DATETIME 类型的值:。

(1)以‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为‘1000-01-01 00:00:00’~‘9999-12-3 23:59:59’。

     例如,输入‘2014-01-22 09:01:23’或20140122090123,插入数据库的DATETIME值都为2014-01-22 09:01:23。

(2)以'YY-MM-DD HH:MM:SS’或者‘YYMMDDHHMMS S’字符串格式表示的日期和时间,其中YY表示年,取值范围 为‘00’一‘99'。与DATE类型中的YY相同,‘00’一‘69’范围的值会被转换为2000~2069范围的值,’70’一‘99’范围的值会被转换为 1970~1999范围的值。

(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。例如,插入20140122090123或者 140122090123,插入数据库的DATETIME值都为2014-01-22 09:01:23。

(4)使用NOW来输入当前系统的日期和时间。

5、TIMESTAMP 类型

TIMESTAMP 类型用于表示日期和时间,它的显示形式与 DATETIME 相同,但取值范围比 DATETIME小。下面介绍3种 TIMESTAMP 类型与 DATATIME 类型不同的形式,具体如下:

(1)使用 CURRENT_TIMESTAMP 来输入系统当前日期和时间。

(2)输入 NULL 时,系统会输入系统当前日期和时间。

(3)无任何输入时,系统会输入系统当前日期和时间。

字符串

字符串类型的数据分为普通的文本字符串类型(CHAR和VARCHAR)和可变类型(TEXT和BLOB)。

BLOB 二进制长文本

  1. CHAR和VARCHAR

CHAR类型和VARCHAR类型长度范围都是0~255之间的大小。他们之间的差别在于MySQL处理存储的方式,CHAR把这个大小视为值的准确大小(用空格填补比较短的值),而VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。所以,较短的值当被插入一个语句为VARCHAR类型的字段时,将不会用空格填补(然而,较长的值仍然被截短 )。

varchar (len=实际大小+长度一字节)

  1. TEXT和BLOB

TEXT和BLOB类型,大小可以改变。其中TEXT类型适合存储长文本,而BLOB类型适合存储二进制数据,支持任何数据,如文本、声音和图像等。BLOB按照二进制编码排序(区分大小写),TEXT按照字符文本模式排序(不区分大小写)。

3.字符串类型的选取原则

在创建表时,使用字符串类型时应遵循以下原则:

(1) 从速度方面考虑,要选择固定的列,可以使用CHAR类型。

(2) 要节省空间,使用动态的列,可以使用VARCHAR类型。

(3) 如果要搜索的内容不区分大小写,可以使用TEXT类型。

(4) 如果要搜索的内容区分大小写,可以使用BLOB类型。

字符串_1.png

相关文章

  • 数据库SQL语言入门(一)

    系列文章 数据库SQL语言入门(二)数据库SQL语言入门(三) SQL简介 SQL 是 Structure Que...

  • Sqlite数据库

    SQL 是用于访问和处理数据库的标准的计算机语言 SQL 能做什么? SQL 面向数据库执行查询SQL 可从数据库...

  • iOS进阶第二天 (数据库)

    一、数据库管理系统 二、SQL语句 三、 iOS的数据库技术实现 数据库常用概念: SQL:SQL是Structu...

  • SQL基础<一>

    前言 计划 传送门:SQL基础教程 数据库和SQL 1.数据库 提到SQL,首先必须谈到数据库,那么什么是数据库?...

  • SQLServer基础

    系统数据库 SQL Server 系统自带以下数据库: master数据库master数据库用来保存SQL Ser...

  • SQL 和 NoSQL 的区别

    概念 SQL (Structured Query Language) 数据库,指关系型数据库 - 主要代表:SQL...

  • SQL预编译

    1.数据库预编译起源 (1)数据库SQL语句编译特性:数据库接受到sql语句之后,需要词法和语义解析,优化sql语...

  • MySQL

    数据类型 sql基础 数据库表 SQL SELECT 语句: SQL WHERE 子句: SQL AND & OR...

  • MySQL的笔记(一)

    SQL语句的定义:简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。 SQL的分类: ...

  • sql和noslq的区别

    一、概念 SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL...

网友评论

      本文标题:SQL数据库

      本文链接:https://www.haomeiwen.com/subject/nimuxftx.html