美文网首页
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数据库

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