SQL数据库

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,044评论 0 5
  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,445评论 0 33
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,301评论 2 22
  • 春天的花事 少女的心事 随着春风的吹拂 像河岸边的柳树条儿 悄悄地抽出了嫩枝 那娇羞的眼神 那甩来甩去 乌黑的 马...
    一叶茶阅读 757评论 0 1
  • 什么时候能够活成这样一种浅淡而馨香的姿态就算成了。
    和尘之尘阅读 640评论 4 13