MySQL表操作及字段數據類型
mysql> show tables;
2、創建表,id字段為整型無符號,不能有負數並且是主鍵(主鍵唯一),引擎為InnoDB,字符集是utf8,註釋信息為"學生表",int括號中的3表示字段的寬度為3,以100開始自增,zerofill意思是自動補零
mysql> create table student(
id int(3) unsigned zerofill not null auto_increment,
name varchar(30) not null,
primary key(id)
)engine=InnoDB auto_increment=100 charset=utf8 comment="學生表";
3、刪除表
mysql> drop table if exists student;
4、查看表結構
mysql> desc student;
5、查看建表代碼
mysql> show create table student;
6、插入數據
mysql> insert into student(name) values ("jack"),("王五"),("趙六");
7、簡單查詢數據
mysql> select * from student;
8、顯示表的所有列,比desc要詳細
mysql> show full columns from student;
9、刪除多個表,表名用逗號分隔
mysql> drop table if exists stu,a,b;
字段數據類型
1>整型:tinyint(1字節,0-255)、smallint(2字節,0-65535)、mediumint(3字節,0-16777215)、int(4字節,0-4294967295)、bigint(5字節,0-18446744073709551615)
tinyint:最多能存到255,比如創建表的時候用tinyint的話,在存256的時候會報錯,這種類型存年齡、部門編號比較合適,例如:
mysql> create table stu(
-> id int(3) unsigned auto_increment,
-> name varchar(30),
-> age tinyint(2) zerofill,
-> primary key(id)
-> )engine=InnoDB default charset=utf8;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into stu(name,age) values ("張三",256); //如果插入數據超過了tinyint範圍就會報錯,存小數的話會四舍五入
ERROR 1264 (22003): Out of range value for column 'age' at row 1
2>小數類型:decimal(p,s)、numeric(p,s),兩個選一即可,例如
mysql> create table stu(
id int(3) unsigned auto_increment,
name varchar(30),
money decimal(4,2), //money字段用小數類型,(4,2)代表4位數字,其中2位整數和2位小數,也就是說最高存99.99
primary key(id)
)engine=InnoDB default charset=utf8;
mysql> insert into stu (name,money) values ("李四",200);
ERROR 1264 (22003): Out of range value for column 'money' at row 1
mysql> show errors; //查看錯誤
3>字符串類型:char()、varchar()、text()、longtext()
char()為固定長度字符串(如果存1個字符會補5個0),最大為255,手機號、身份證號可以使用char類型,例如
mysql> create table stu(
-> id int unsigned not null auto_increment primary key,
-> name char(6) //如果char範圍超過255會報錯,(6)代表6個字符,超出6會報錯
-> )engine=InnoDB default charset=utf8;
varchar()為可變長度字符串,最大為65535,例如:
mysql> create table stu(
id int unsigned not null auto_increment primary key,
name varchar(2) //采用varchar類型
)engine=InnoDB default charset=utf8;
mysql> insert into stu (name) values ("張三");
Query OK, 1 row affected (0.00 sec)
mysql> insert into stu (name) values ("齊天大聖");
ERROR 1406 (22001): Data too long for column 'name' at row 1
註意:以上插入數據四個字也會報錯,可變長字符串並不是說想變多長變多長,比如定義char(3),存入一個字符a,系統會自動補兩個空位,結果是一個a和兩個空格補齊了三個字符;而定義varchar(3),存入a後,不會自動補齊空位,就是實實在在存入了一個字符,但是存入的最大字節數還是3,存入4個字符也會報錯。大家註意兩個概念。
text()也是可變長的,最大為65535;longtext()最大為4G,存文章可以使用。。。
簡單說以下enum參數,這個參數代表枚舉,比如我要存一個性別,除了男就是女,例如:
mysql> create table stu(
id int unsigned not null auto_increment primary key,
name varchar(5) not null,
gender enum("男","女")
)engine=InnoDB default charset=utf8;
mysql> insert into stu (name,gender) values ("張三","中"); //必須存enum()內定義的選項
ERROR 1265 (01000): Data truncated for column 'gender' at row 1
mysql> insert into stu (name,gender) values ("張三","男");
4>二進制類型:blob、longblob,比如我要存一個MP3格式的文件,就需要用到此類型,一般沒有往數據庫直接存這些東西的,數據庫存的只是這些文件的地址。
5>日期時間類型:date、datetime,date只能存年月日,而datetime能存年月日時分秒
mysql> create table stu(
id int unsigned not null auto_increment primary key,
name varchar(5) not null,gender enum("男","女"),
birthday datetime //出生日期采用datetime類型
)engine=InnoDB default charset=utf8;
mysql> insert into stu (name,gender,birthday) values ("張三","男","2018-02-26 00:00:00");
如果字段類型有註冊時間,而且我們想要自動添加怎麽辦?如下:
mysql> create table stu(
id int unsigned not null auto_increment primary key,
name varchar(5) not null,
gender enum("男","女"),
registered datetime default now()
)engine=InnoDB default charset=utf8;
mysql> insert into stu (name,gender) values ("張三","男"); //再添加數據時就不需要再添加registered字段信息了
註意:datetime類型的數據在修改數據時,時間不會改變,而時間戳類型會改變,例如:
mysql> create table stu(
id int unsigned not null auto_increment primary key,
name varchar(5) not null,
gender enum("男","女"),
registered timestamp //時間戳類型,這時使用update語句修改數據時,時間戳會改變,如果不想它改變,應該寫成registered timestamp default current_timestamp()
)engine=InnoDB default charset=utf8;
MySQL表操作及字段數據類型