数据库基本操作
1.创建数据库
语法格式:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification ...]];
说明: [IF NOT EXISTS] 可选,如果不存在同名数据库则创建数据库,如果已存在同名数据库,取消创建。
db_name 数据库名称
create_specification [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collection_name
例如:
CREATE DATABASE mydb;//创建一个mydb数据库
CREATE DATABASE mydb CHARACTER SET gbk;//创建一个mydb数据库,字符编码集是gbk
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_general_ci;//创建一个mydb数据库,字符编码集是utf8,校对规则为utf8_general_ci
2.查看数据库
语法格式:
SHOW DATABASES;//查看当前数据库服务器中所有数据库
SHOW CREATE DATABASE db_name;//查看当前db_name数据库创建信息
3.选择数据库
语法格式:
USE db_name;
4.修改数据库
语法格式:
ALTER DATABASE db_name [alter_specification [, alter_specification ...]];
说明: alter_specification [DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name
5.删除数据库
语法格式:
DROP DATABASE [IF EXISTS] db_name;
6.查看当前所选数据库
语法格式:
SELECT DATABASE();
MySQL数据类型
1.整形类型
MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
数据类型 | 字节数 | 无符号数的取值范围 | 有符号数的取值范围 |
TINYINT | 1 | 0~255 | -128~127 |
SMALLINT | 2 | 0~65535 | -32768~32768 |
MEDIUMINT | 3 | 0~16777215 | -8388608~8388608 |
INT | 4 | 0~4294967295 | -2147483648~2147483648 |
BIGINT | 8 | 0~18446744073709551615 | -9223372036854775808~9223372036854775808 |
2.浮点数和定点数类型
浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。而定点数类型只有DECIMAL类型。
数据类型 | 字节数 | 有符号的取值范围(正数同无符号) | 无符号的取值范围 |
FLOAT | 4 | -3.402823466E+38~-1.175494351E-38 | 0和1.175494351E-38~3.402823466E+38 |
DOUBLE | 8 | -1.7976931348623157E+308~2.2250738585072014E-308 | 0和2.2250738585072014E-308~1.7976931348623157E+308 |
DECIMAL(M,D) | M+2 | -1.7976931348623157E+308~2.2250738585072014E-308 | 0和2.2250738585072014E-308~1.7976931348623157E+308 |
3.日期与时间类型
为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。
数据类型 | 字节数 | 取值范围 | 日期格式 | 零值 |
YEAR | 1 | 1901~2155 | YYYY | 0000 |
DATE | 4 | 1000-01-01~9999-12-3 | YYYY-MM-DD | 0000-00-00 |
TIME | 3 | -838:59:59~838:59:59 | HH:MM:SS | 00:00:00 |
DATETIME | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 0000-00-00 00:00:00 |
TIMESTAMP | 4 | 1970-01-01 00:00:01~2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 0000-00-00 00:00:00 |
如果插入的数值不合法,系统会自动将对应的零值插入数据库中。
(1)YEAR类型:用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型的值:
- 使用4位字符串或数字表示,范围为‘1901’~‘2155’或1901~2155。
- 使用2位字符串表示,范围为‘00’~‘99’,其中,‘00’~‘69’范围的值会被转换为2000~2069范围的YEAR值,‘70’~‘99’范围的值会被转换为1970~1999范围的YEAR值。
- 使用2位数字表示,范围为1~99,其中,1~69范围的值会被转换为2001~2069范围的YEAR值,70~99范围的值会被转换为1970~1999范围的YEAR值。
当使用YEAR类型时,一定要区分'0'和0。因为字符串格式的'0'表示的是YEAR值是2000,而数字格式的0表示的YEAR值是0000。
(2)DATE类型:用于表示日期值,不包含时间部分。:在MySQL中,可以使用以下四种格式指定DATE类型的值:
- 以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示。
- 以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示。YY表示的是年,范围为‘00’~‘99’,其中,‘00’~‘69’范围的值会被转换为2000~2069范围的值,‘70’~‘99’范围的值会被转换为1970~1999范围的值。
- 以YY-MM-DD或者YYMMDD数字格式表示。
- 使用CURRENT_DATE或者NOW()表示当前系统日期。
(3)TIME类型:用于表示时间值,它的显示形式一般为HH:MM:SS,其中,HH表示小时,MM表示分,SS表示秒。在MySQL中,可以使用以下三种格式指定TIME类型的值:
- 以‘D HH:MM:SS’字符串格式表示。
- 以‘HHMMSS’字符串格式或者HHMMSS数字格式表示。
- 使用CURRENT_TIME或NOW()输入当前系统时间。
(4)DATETIME类型:用于表示日期和时间,它的显示形式为‘YYYY-MM-DD HH:MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS表示秒。在MySQL中,可以使用以下四种格式指定DATETIME类型的值:
- 以‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为‘1000-01-01 00:00:00’~‘9999-12-3 23:59:59’。
- 以‘YY-MM-DD HH:MM:SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为‘00’~‘99’,规则同DATE类型。
- 以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。
- 使用NOW()来输出当前系统的日期和时间。
(5)TIMESTAMP类型:用于表示日期和时间,它的显示形式同DATETIME相同,但取值范围比DATETIME小。下面介绍几种TIMESTAMP类型与DATATIME类型不同的形式,具体如下:
- 使用CURRENT_TIMESTAMP来输入系统当前日期和时间。
- 输入NULL时,系统会输入系统当前日期和时间。
- 无任何输入时,系统会输入系统当前日期和时间。
4.字符串和二进制类型
为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。
数据类型 | 类型说明 |
CHAR | 用于表示固定长度的字符串 |
VARCHAR | 用于表示可变长度的字符串 |
BINARY | 用于表示固定长度的二进制数据 |
VARBINARY | 用于表示可变长度的二进制数据 |
BOLB | 用于表示二进制大数据 |
TEXT | 用于表示大文本数据 |
ENUM | 表示枚举类型,只能存储一个枚举字符串值 |
SET | 表示字符串对象,可以有零或多个值 |
BIT | 表示位字段类型 |
(1)CHAR和VARCHAR类型:都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串。
语法格式:CHAR(M) 或VARCHAR(M)
说明:M指的是字符串的最大长度。
注意:VARCHAR(M)所对应的数据所占用的字节数为实际长度加1。
(2)BINARY和VARBINARY类型:表示二进制数据,类型类似于CHAR和VARCHAR。
语法格式:BINARY(M) 或 VARBINARY(M)
注意:BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“\0”补齐,最终达到指定长度。
(3)TEXT类型:用于表示大文本数据,例如,文章内容、评论等,:类型分为四种。
数据类型 | 存储范围 |
TINYTEXT | 0~255字节 |
TEXT | 0~65535字节 |
MEDIUMTEXT | 0~16777215字节 |
LONGTEXT | 0~4294967295字节 |
(4)BLOB类型:一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。BLOB类型分为四种。
数据类型 | 存储范围 |
TINYBLOB | 0~255字节 |
BLOB | 0~65535字节 |
MEDIUMBLOB | 0~16777215字节 |
LONGBLOB | 0~4294967295字节 |
语法格式: ENUM(' 值 1',' 值 2',' 值 3'……' 值 n')
说明:在上述格式中,('值1', '值2', '值3'……'值n')称为枚举列表,ENUM类型的数据只能从枚举列表中取,并且只能取一个。
注意:枚举列举中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。
(7)BIT类型:用于表示二进制数据。
语法格式:BIT(M)
注意:M用于表示每个值的位数,范围为1~64。如果数据的长度小于M,将在数据的左边用0补齐。
数据表基本操作
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)character set charset_name collate collation_name;
desc tab_name;//查看表结构
show tables; //查看当前数据库中所有的表
show create table tab_name; //查看表的建表语句
ALTER TABLE tbl_name ADD (column datatype [DEFAULT expr] [, column datatype] ...);//新增列
ALTER TABLE tbl_name MODIEY (column datatype [DEFAULT expr] [, column datatype] ...);//修改列
ALTER TABLE tbl_name DROP (column);//删除列
ALTER TABLE tbl_name CHANGE [column] old_col_name new_col_name definition;//修改列名称
ALTER TABLE tbl_name character set utf8;//修改表字符集编码
RENAME TABLE old_tbl_name TO new_tbl_name;//修改表名
语法格式:
DROP TABLE tel_name;//删除数据表