Mysql基本使用语法和基本类型

1.创建数据库的SQL语句如下:

CREATE DATABASE database_name;

      (其中参数database_name表示所要创建的数据库的名称)

2.查看数据库

查看数据库在上面已提及,SQL语句如下:

      SHOW DATABASES;

3.选择数据库

在数据库管理系统中一般会存在许多数据库。在操作数据库对象之前,需要先选择一个数据库。

在MySQL中选择数据库可以通过SQL语句USE来实现,其语法形式如下:

    USE database_name;  

注:在上述语句中,database_name参数表示所要选择的数据库名字。

在选择具体的数据库之前,首先要查看数据库管理系统中已经存在的数据库,然后才能从这些已经存在的数据库中进行选择。如果选择一个不存在的数据库,就会出现错误。

4.删除数据库

在删除数据库之前,首先需要确定所操作的数据库对象已经存在。在MySQL中删除数据库可以通过SQL语句DROP DATABASE来实现,其语法形式如下:

    DROP DATABASE database_name 

注:在上述语句中,database_name参数表示所要删除的数据库名字。

切记: 删除数据库时mysql 不会确认,千万要小心!!!

MySQL数据库命名规范

       可以采用26个英文字母 (不区分大小写) 0-9的自然数 (一般不需要) 加上下划线 ‘_’ 组成,命名简介明确 (School),多个单词用下划线 ‘_’ 分隔,一个项目一个数据库,多个项目慎用同一个数据库!

 

表的创建

基本语法:

CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];

其中,[表定义选项]的格式为:

<列名1> <类型1> [,…] <列名n> <类型n>

CREATE TABLE 命令语法比较多,其主要是由表创建定义(create-definition)、表选项(table-options)和分区选项(partition-options)所组成的。

列如:

create table class(class_id int, class_name varchar(128), class_teacher varchar(64));

注意:

  • 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。
  • 提示:使用 CREATE TABLE 创建表时,必须注意以下信息:

- 要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

- 数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。

 

列名

  1. 采用26字母和0-9的自然数加上下互相 ‘_’ 组成,命名简洁明确,多个单词用下划线 ‘_’ 隔开
  2. 全部小写命名,尽量避免出现大写
  3. 字段必须填写描述信息
  4. 禁止使用数据库关键字
  5. 字段名称一般采用名词或动宾短语
  6. 采用字段的名字必须是易于理解,一般不超过三个英文单词
  7. 在命名表的列时,不要重复表的名称(如:在 class 表中,出现 class_name 字段),列如上述表创建语句,只是为了方便理解.

create table class(id int, name varchar(128), teacher varchar(64));这是正确的创建命名,字段命名使用完整名称.

 

表的插入

插入数据记录是常见的数据操作,可以显示向表中增加的新的数据记录。在MySQL中可以通过“INSERT INTO”语句来实现插入数据记录,该SQL语句可以通过如下4种方式使用:插入完整数据记录、插入部分数据记录、插入多条数据记录和插入JSON结构的数据记录(暂且不讲)。

插入完整数据记录

在MySQL中插入完整的数据记录可通过SQL语句INSERT来实现,其语法形式如下:

INSERT INTO tablename(field1, field2, field3, ..., fieldn) VALUES(value1, value2, value3, ..., valuen);

可以缩写为:

INSERT INTO tablename VALUES(value1, value2, value3, ..., valuen);

参数: tablename表示所要插入完整记录的表名,参数fieldn表示表中的字段名字,参数valuen表示所   要插入的数值,并且参数fieldn与参数valuen一一对应。

插入部分数据记录

语法形式:

INSERT INTO tablename(field1, field2, field3, ..., fieldn) VALUES(value1, value2, value3, ..., valuen);

注意: 如果域没有设定默认值,也没有设定为自增长,则插入记录时必须插入值.

插入多条数据记录

语法形式:

INSERT INTO tablename(field1, field2, field3, ..., fieldn)

VALUES(value11, value12, value13, ..., value1n),  

(value21, value22, value23, ..., value2n),         

... ....                                            

(valuen1, valuen2, valuen3, ..., valuenn);     

更新表中的数据记录

更新数据记录是数据操作中常见的操作,可以更新表中已经存在数据记录中的值。在MySQL中可以通过UPDATE语句来实现更新数据记录,该SQL语句可以通过如下几种方式使用:更新特定数据记录、更新所有数据记录、更新JSON结构的数据记录。

更新特定数据记录

在MySQL中更新特定数据记录可通过SQL语句UPDATE来实现,其语法形式如下:

UPDATE tablename SET field1 = value1, field2 = value2, field3 = value3, ..., fieldn = valuen WHERE CONDITION;  

上述语句中,参数tablename表示所要更新数据记录的表名,参数field表示表中所要更新数值的字段名字,参数valuen表示更新后的数值,参数CONDITION指定更新满足条件的特定数据记录。

更新所有数据记录

在MySQL中更新特定数据记录可通过SQL语句UPDATE来实现,其语法形式如下:

UPDATE tablename SET field1 = value1, field2 = value2, field3 = value3, ..., fieldn = valuen WHERE CONDITION;       

 

UPDATE tablename SET field1 = value1, field2 = value2, field3 = value3, ..., fieldn = valuen

在上述语句中,参数tablename表示所要更新数据记录的表名,参数field表示表中所要更新数值的字段名字,参数valuen表示更新后的数值,参数CONDITION表示满足表tablename中的所有数据记录,或不使用关键字WHERE语句。

 

删除表中的数据记录

删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录。在MySQL中可以通过DELETE语句来删除数据记录,该SQL语句可以通过以下几种方式使用:删除特定数据记录、删除所有数据记录。

删除特定数据记录

在MySQL中删除特定数据记录可通过SQL语句DELETE来实现,其语法形式如下:

DELETE FROM tablename WHERE CONDITION;   

在上述语句中,参数tablename表示所要删除数据记录的表名,参数CONDITION指定删除满足条件的特定数据记录。

 

删除所有数据记录

在MySQL中删除所有数据记录同样可通过SQL语句DELETE来实现,其语法形式如下:

DELETE FROM tablename WHERE CONDITION;          

DELETE FROM tablename

 

在上述语句中,为了删除所有的数据记录,参数CONDITION需要满足表tablename中所有数据记录,如id>0; 或者无关键字WHERE语句。

整形类型

整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。 

参数: tablename表示所要插入完整记录的表名,参数name表示表中的字段名字,参数valuen表示所   要插入的数值,并且参数name与参数valuen一一对应。

整数类型的附带属性

  1. 类型名称后面的小括号   指定显示宽度(并不是该类型占用字节数)。如果不显示指定宽度则默认为tinyint(3)、 smallint(5)、 mediumint(8)、 int(11) 和 bigint(20)。一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。
  2. UNSIGNED(无符号)  如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,它的取值范围是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符号范围是-128~+127,而无符号范围是 0~255。如果一个列指定为 zerofill,则 MySQL 自动为该列添加 UNSIGNED 属性。 

浮点类型和定点数类型

数据表中用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是DECIMAL型。下面从这三种类型的字节数、取值范围等方面进行对比,如下表所示。 

 

三种类型的区别:

  1. float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;
  2. MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。对于decimal,M是最大位数(精度),范围是1到65。可不指定,默认值是10。D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M,可不指定,默认值是0。
  3. FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0,即(10, 0)。
  4. 忠告: 当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型!

 

日期和时间类型

日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型。其中,YEAR类型表示年,DATE类型表示日期,TIME类型表示时间,DATETIME和TIMESTAMP表示日期和时间。下面从这5种日期与时间类型的字节数、取值范围和零值等方面进行对比,如下表所示。

 

每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统就会报错,并将零值插入到数据库中。不同的日期与时间类型均有不同的零值.

插入日期时间时,日期年月日和时间时分秒可以使用 “: - _ / ”中的任意字符来分隔,如果单独插入时间,则会报错!!!

也可以通过mysql 本身提供的时间函数获取:

常用的时间函数:

CURDATE()  - 获得当前的DATE, 可直接插入DATE 类型中.

NOW() - 获得当前的DATETIME, 可直接插入DATETIME 和TIMESTAMP类型中.

TIME() - 获取参数给定时间串中的时分秒,可直接插入TIME 类型中.

YEAR() - 获取参数给定时间串中的年份,可直接插入YEAR类型中.

MONTH() 、DAY()、HOUR()、MINUTE()、SECOND() 获取参数给定时间串中的月、日、时、分、秒值.

 

GHAR类型和VARCHAR类型

CHAR类型和VARCHAR类型都在创建表时指定了最大长度,其基本形式如下:

    字符串类型(M)

其中,“字符串类型”参数指定了数据类型为CHAR类型还是VARCHAR类型;M参数指定了该字符串的最大长度为M。例如,CHAR(4)就是数据类型为CHAR类型,其最大长度为4。

CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~255的任意值。例如,CHAR(100)就是指定CHAR类型的长度为100。CHAR 存储值时,它们会用空格右填充到指定的长度。 

VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100,但是不是每条记录都要占用100个字节,而是在这个最大值范围内使用多少就分配多少。VARCHAR类型实际占用的空间为字符串的实际长度加1或2,这样即可有效节约系统的空间。

CHAR(4)

存储字节数

VARCHAR(4)

存储字节数

‘’

‘’

4

‘’

1

‘ab’

‘ab’

4

‘ab’

3

‘abcd’

‘abcd’

4

‘abcd’

5

‘abcdefgh’

-

#插入失败

-

#插入失败 

  • 1、 char一定会使用指定的空间,varchar是根据数据来定空间
  • 2、 char的数据查询效率比varchar高:varchar是需要通过后面的记录数来计算
  • 3、  如果确定数据一定是占指定长度,那么使用char类型;
  • 4、  如果不确定数据到底有多少,那么使用varchar类型;
  • 5、  如果数据长度超过255个字符而在65535之内,直接使用varchar
  • 6、  如果字符串尾部要保留空格,必须选择varchar

 

TEXT类型

 TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其长度和存储空间的对比下表所示:

各种TEXT类型的区别在于允许的长度和存储空间不同。因此,在这几种TEXT类型中,根据需求选取既能满足需要又节省空间的类型即可。

特别注意

1.以上各类型无须指定长度!

2.允许的长度是指实际存储的字节数,而不是实际的字符个数,比如假设一个中文字符占两个字节,那么TEXT 类型可存储 65535/2 = 32767  个中文字符,

而varchar(100)可存储100个中文字符,实际占200个字节,但varchar(65535) 并不能存储65535个中文字符,因为已超出表达范围.

二进制类型

二进制数据和文本数据在mysql 中的最大区别在于:

二进制类型存储原始的二进制数据(如图片,视频,exe文件等)。文本类型(TEXT)用来存储字符字符串(如由英文字符、中文字符或其它语言字符组成的字符串)。

二进制类型没有字符集,并且排序和比较基于列值字节的数值。而TEXT类型有字符集,并且根据字符集的校对规则对值进行排序和比较。

二进制类型是存储二进制数据的数据类型,包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。二进制类型之间的对比如下表所示。

BINARY和VARBINARY类型

BINARY类型和VARBINARY类型都是在创建表时指定最大长度,其基本形式如下:

    类型 (M)  

其中,“字符串类型”参数指定数据类型为BINARY类型还是VARBINARY类型;M参数指定该二进制数的最大字节长度为M。这与CHAR类型和VARCHAR类型相似。例如,BINARY(10)就是指数据类型为BINARY类型,其最大长度为10。

  1. BINARY类型的长度是固定的,在创建表时就指定了,不足最大长度的空间由″\0″补全。例如,BINARY(50)就是指定BINARY类型的长度为50。
  2. VARBINARY类型的长度是可变的,在创建表时指定了最大的长度,其长度可以在0到最大长度之间,在这个最大值范围内使用多少就分配多少。
  3. BIT类型

    BIT类型在创建表时指定最大长度,其基本形式如下:

        BIT(M)

    其中,“M”指定该二进制数的最大存储长度为M,M的最大值为64。例如,BIT(4)就是指数据类型为BIT类型,长度为4。若字段的类型BIT(4)存储的数据是0~15,因为变成二进制之后15的值为1111,则其长度为4。如果插入的值为16,其二进制数为10000,长度为5,超过了最大长度,因此大于16的数是不能插入BIT(4)类型字段中的。

    操作要点:

  4. 插入数据时,使用 b’位串’的方式插入相应值!
  5. 查询时,可以使用 bin() 、oct() 、hex() 函数讲字段的值转成相应的二进制、八进制和十六进制.

BLOB类型

1.BLOB类型无须指定长度!

2.允许的长度是指实际存储的字节数,不用考虑字符编码。

使用方面:

  1.  binary长度固定, 即每条数据占用等长字节空间;保存长度不超过255字节的二进制数据;
  2.  varbinary可变长度,可以设置最大长度,最大长度65535;适合用在长度可变的二进制数据;
  3.  blob不设置长度, 当不知道属性的最大长度时,适合用blob, 能用varbinary的地方不用blob;
  4.  如果都可以选择,按照查询速度: binary最快, varbinary次之,blob最慢。

ENUM类型

ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下:

    属性名  ENUM('值1',  '值2', …, '值n')

其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!

Enum(‘男’,’女’,‘选择保密’)  # ‘男’=>1  ‘女’=>2  ‘选择保密’=> 3

如果ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。

SET类型

在创建表时,SET类型的取值范围就以列表的形式指定了,其基本形式如下:

    属性名  SET('值1',  '值2', …, '值n')

其中,属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是由64个元素构成的组合。

ENUM 和SET区别在于插入数据ENUM取一个元素,SET取多个元素

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值