一、表操作:
1.MySQL表的数据类型:
MySQL的数据类型分为3种:
- 数值
- 时间/日期
- 字符/字符串
(1)数值类型:
包括:TinyInt、SmallInt、MediumInt、Int、BigInt、Float、Double、Decimal
(2)时间/日期类型:
- 包括:DateTime、Date、TimeStamp、Time、Year。
- 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
- TimeStamp类型有专有的自动更新特性。
(3)字符/字符串类型:、
包括:Char、VarChar、Binary、VarBinary、Blob、Text、Enum和Set.
其中:
- CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
- BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
- BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BL
2. 创建表:
(1)表创建基础:
Create Table 表名 (列名1 数据类型1 是否空值1 默认值1, 列名2 数据类型2 是否空值2 默认值2, ........);
eg:
1 Create Table Products
2 (
3 prod_id char(10) not null,
4 vend_id char(10) not null,
5 prod_name char(254) not null,
6 prod_price decimal(8,2) not null,
7 prod_desc text(1000) null
8 );
注意:
- 表名,在关键字Create Table 之后给出
- 新表的定义在圆括号之中,各列之间,用逗号分隔
- 每列的定义:以列名开始,后面跟该列的数据类型
- 整条建表语句,以圆括号后面的分号结束
- 建议使用缩进格式
- 创建的新表的表名,必须不存在,否则会出错
- 替换现有的表,要求先删除现有表,然后再创建,而非直接替换
(2)使用Null值:
- 每个列要么是Null列,要么是Not Null列
- 允许Null值的列,允许在插入行时,不给出该列的值;
- 不允许Null值的列,在插入或者更新行时,该列必须有值。
- Null为默认设置,如果不指定Not Null,则该列就认为指定的是Null
- 主键列必须不能Not Null
eg:
Create Table Vendors
(
vend_id char(10) Not Null,
vend_name char(50) Not Null,
vend_address char(50) Null,
vend_city char(50) Null,
vend_state char(5) ,
vend_zip char(10) ,
vend_country char(50)
);
关于Null:
Null值是没有值,不是空字符串""。在Not Null的列中,允许空字符串。空字符串是一个有效的值,它不是无值。Null值,用关键字Null指定,而不是空字符串。
(3)指定默认值:
默认值用关键字Default指定。
如果在插入行时,不给出这列的值,则自动使用该列的默认值
eg:
Create Table OrderItems
(
order_num integer Not Null,
pord_id char(10) Not Null,
quantity integer Not Null Default 1,
price Decimal(8, 2) Not Null
);
(4)自动增长:Auto_Increment
(5)设定主键:Primary(字段名)
3.用SQL语句向表中添加数据——插入行数据:
使用Insert语句,插入数据。
插入数据的几种方式:
- 插入完整的行
- 插入行的一部分
- 插入某些查询结果
(1)插入完整的行:
Insert Into 表名 Values(值)
eg: