MySQL---数据类型和表的基本操作

来源:互联网 发布:孔雀公主牙膏知乎 编辑:程序博客网 时间:2024/05/17 23:15

数据类型

整型

  • TINYINT 1个字节
  • SMALLINT 2个字节
  • MEDIUMINT 3个字节
  • INT 4个字节
  • BIGINT 8个字节

可以用UNSIGNED表示无符号整形

浮点型

  • FLOAT[(M,D)] M总共位数,D小数位数,精度时小数点后7位
  • DOUBLE[(M,D)] M总共位数,D小数位数
类型大小范围(有符号)范围(无符号)UNSIGNED用途TINYINT1 字节(-128,127)(0,255)小整数值SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值FLOAT(M,D)4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度
浮点数值M表示总位数,D表示小数位数DOUBLE(M,D)8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度
浮点数值M表示总位数,D表示小数位数DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

日期

类型 大小(字节) 范围 格式 用途 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 ‘-838:59:59’ ~ ‘838:59:59’ HH:MM:SS 时间值或持续时间 YEAR 1 1901 ~ 2155 YYYY 年份值 DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值 TIMESTAMP 4 1970-01-01 00:00:00 ~ 2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符型

  • CHAR(M) : M个字节(0~255)定长
  • VARCHAR(M) : 变长(0~65535)
  • TINYTEXT : 1个字节(0~255)
  • TEXT : 2个字节
  • MEDIUMTEXT : 3个字节
  • LONGTEXT : 4个字节
  • ENUM(‘value1’,’value2’) : 枚举值(最多65535个)
  • SET(‘value1’,’value2’) : 集合,最多64个成员

创建表

  • USE 使用/打开数据库
  • SELECT DATABASE() 显示当前打开的数据库

*CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,

)*

mysql> CREATE TABLE tb1(    -> username VARCHAR(20),    -> age TINYINT UNSIGNED,    -> salary FLOAT(8,2) UNSIGNED    -> );

查看表

SHOW TABLES [FROM db_name] [LIKE ‘pattern’ | WHERE expr]

可以查看其他数据库的表,当前数据库不会改变

查看表结构

  • SHOW COLUMNS FROM tbl_name
  • DESCRIBE

插入记录

INSERT [INTO] tbl_name [(col_name,…)]VALUES(val,…)
如果省略col_name则必须插入所有字段

    mysql> INSERT INTO tb1 VALUES('TOM',20,5000.00);    Query OK, 1 row affected (0.34 sec)
    mysql> INSERT tb1 (username,age) VALUES('jhon',25);    Query OK, 1 row affected (0.09 sec)

查询

SELECT expr,… FROM tbl_name

mysql> SELECT * FROM tb1;+----------+------+---------+| username | age  | salary  |+----------+------+---------+| TOM      |   20 | 5000.00 || jhon     |   25 |    NULL |+----------+------+---------+2 rows in set (0.00 sec)

约束

  • AUTO_INCREMENT 自增
  • [PRIMARY] KEY 主键 自动禁止为null
  • UNIQUE KEY 唯一性,可以存空值
  • DEFAULT 默认值
  • NULL/NOT NULL 是否允许空值

自动增加

AUTO_INCREMENT 起始值为1递增量为1 ,该字段必须是主键

可以自己指定自增主键的值,如果不指定,则在最大的序号上自增

mysql> CREATE TABLE tb2(    -> id INT(5) PRIMARY KEY AUTO_INCREMENT,    -> username VARCHAR(20)    -> );Query OK, 0 rows affected (0.37 sec)

UNIQUE KEY

唯一性约束:

mysql> CREATE TABLE tb3(    -> id INT(5) KEY AUTO_INCREMENT,    -> username VARCHAR(20) UNIQUE KEY ,    -> age INT(5)    -> );mysql> SHOW COLUMNS FROM tb3;+----------+-------------+------+-----+---------+----------------+| Field    | Type        | Null | Key | Default | Extra          |+----------+-------------+------+-----+---------+----------------+| id       | int(5)      | NO   | PRI | NULL    | auto_increment || username | varchar(20) | YES  | UNI | NULL    |                || age      | int(5)      | YES  |     | NULL    |                |+----------+-------------+------+-----+---------+----------------+

DEFAULT 默认

mysql> CREATE TABLE tb4(    -> id INT(5) PRIMARY KEY AUTO_INCREMENT,    -> username VARCHAR(20) UNIQUE KEY,    -> sex ENUM('MEN','WOMEN','NONE') DEFAULT 'MEN'    -> );Query OK, 0 rows affected (0.26 sec)mysql> DESCRIBE tb4;+----------+----------------------------+------+-----+---------+----------------+| Field    | Type                       | Null | Key | Default | Extra          |+----------+----------------------------+------+-----+---------+----------------+| id       | int(5)                     | NO   | PRI | NULL    | auto_increment || username | varchar(20)                | YES  | UNI | NULL    |                || sex      | enum('MEN','WOMEN','NONE') | YES  |     | MEN     |                |+----------+----------------------------+------+-----+---------+----------------+mysql> INSERT INTO tb4 (username) VALUES('TOM');Query OK, 1 row affected (0.07 sec)mysql> select * from tb4;+----+----------+------+| id | username | sex  |+----+----------+------+|  1 | TOM      | MEN  |+----+----------+------+
原创粉丝点击