创建表:

注:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型 例;user表
id 整型
name 字符串
password 字符串
birthday 日期
sql
#使用指令创建表
#注意创建的表位于哪个数据库
CREATE TABLE `user01` (
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
`birthday` DATE)
CHARACTER SET utf8
COLLATE utf8_bin
ENGINE INNODB
修改表:
使用ALTER TABLE语句追加,修改,或删除列的语法
添加列:

修改列:

删除列:

查看表的结构:desc 表明; --可以查看表的列
修改表名:Rename table 表名 to 新表明
修改表字符集:alter table 表明 character set 字符集
应用案例:
创建一个员工表(emp),选用适当的数据模型


sql
CREATE TABLE t08(
id INT,
`name` CHAR(10),
sex CHAR(1),
birthday DATE,
entry_date DATE,
job VARCHAR(255),
salary FLOAT,
`resume` TEXT);
ALTER TABLE t08 ADD image VARCHAR(255);
ALTER TABLE t08 MODIFY job VARCHAR(60);
ALTER TABLE t08 DROP sex;
RENAME TABLE t08 TO employee;
ALTER TABLE employee CHARACTER SET utf8;
ALTER TABLE employee CHANGE `name` user_name CHAR(10);
SELECT * FROM employee
MySQL常用的数据类型(列类型):



数值型(整数)的基本使用:
在能够满足需求的情况下,尽量选择占用空间小的类型

sql
#演示整型的使用
#演示tinyint 范围 有符号的 -128 - 127 无符号的 0 - 255
#表的字符集,校验规则,存储引擎全部使用默认的`id`
#如果没有指定unsigned,则tinyint就是有符号的类型
#如果指定unsigned,则tinyint就是无符号的类型
CREATE TABLE t3(
id TINYINT)
CREATE TABLE t4(
id TINYINT UNSIGNED)
#在-129行添加
INSERT INTO t3 VALUES(-128);
SELECT * FROM t3
数值型(bit)的使用:
基本使用:
mysql> create table t02(num bit(8))
mysql> insert into t02(1,3)
mysql> insert into t02 values(2,65)
细节说明:
bit字段显示时,按照 位的方式显示
查询的时候仍然可以 使用添加的数值
如果一个值只有0,1 可以考虑使用bit(1),可以节约空间
位类型 M指定位数,默认值1,范围1-64
sql
#说明:
#bit(m) m在1-64
#显示按照bit
#添加数据范围按照你给定的位数来确定,比如m=8,表示一个字节(0-255)
#查询时,仍然可以按照数字查询
CREATE TABLE t02(num BIT(8))
INSERT INTO t02 VALUES(3)
数值型(小数)的基本使用
1.FLOAT/DOUBLE(UNSIGNED)
Float单精度,Double双精度
2.DECIMAL[M,D](UNSIGNED)
可以支持更加精确的小数位,M是小数位数(精度)加整数的总长度,D时小数点(标度)后面的位数
如DECIMAL[5,2],则表示能存储进去的整数位数与小数位数之和为5,其中小数位数为2
如果D是0,则值没有小数点或分数部分,M最大65.D最大30.如果D被省略,默认是0,如果M被省略,默认是10
如果希望小数的精度高,建议使用Decimal
sql
#演示Decimal,float,double的使用
#创建表
CREATE TABLE t04(
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL(30,20));
#添加数据
INSERT INTO t04 VALUES(88.12345678912345,88.12345678912345,88.12345678912345);
#查询
SELECT * FROM t04
字符串的基本使用:
CHAR(size) 0-255
固定长度字符串,最大255字符
VARCHAR(size) 0-65535
可变长度字符串,最大65532字节(utf8编码最大21844字符 1-3个字节用于记录大小)
sql
#演示字符串类型使用 char/varchar
#如果表的编码是utf8, varchar(size) = (65535-3)/3 = 21844
#如果是GBK,应该除以2 = 32766
CREATE TABLE t05 (
`name` CHAR(255));
CREATE TABLE t06 (
`name` VARCHAR(21844));
字符串使用细节:
一.
char(4)这个4表示字节数(最大255),不是字节数,无论是中文还剩字母都是放四个,按字符计算
varchar(4)这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据.
不管是中文还剩英文字母,都是最多存放4个,是按照字符来存放的
二.
char(4)是定长(固定大小),也就是说,即使插入'aa',也会占用分配的四个字符空间
varchar(4)是变长,也就是说,即使插入'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(varchar本身还需要占用1-3个字节来记录存放内容长度)
三.
什么时候使用char,什么时候使用varchar?
1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等,
2.如果一个字段的长度不确定,推荐使用varchar,比如留言,文章
查询速度,char > varchar
四.
在存放文本时 ,也可以使用Text数据类型, 可以将TEXT列视为VARCHAR列, 注意Text不能有默认值,大小为0-2^16字节,如果需要存放更多字符,可以选择MEDIUMTEXT 0-2^24 或者LONGTEXT 0-2^32
日期类型的基本使用:

日期类型的细节说明:
TimeStamp在Insert和update时,自动更新
sql
#演示时间相关的类型
#创建一张表date datetime timestamp
CREATE TABLE t07(
birthday DATE, #年月日
jobtime DATETIME, #年月日 时分秒
login_time TIMESTAMP #登陆时间 自动更新
#如果希望login_time自动更新,需要配置
NOT NULL DEFAULT CURRENT_TIMESTAMP #不允许为空 默认为当前时间
ON UPDATE CURRENT_TIMESTAMP #修改时自动以当前时间更新
);
#添加数据
INSERT INTO t07(birthday,jobtime) VALUES ('2002-11-11','2002-11-11 10:10:10');
#查询
SELECT * FROM t07;
#如果我们更新了t07的某条记录,那么login_time会自动以当前时间进行更新