深入浅出数据库——数据和表2

认识一下其他数据类型,前面介绍了VARCHAR和DATE

常用数据类型:CHAR、VARCHAR、BLOB、INT、DEC、DATE、DATETIME。每种数据类型的存储规则都不一样。

列名说明范例最佳数据类型
price某物品价格5678.39DEC(5,2)
zip_code5至10个字符90210-0010VARCHAR(10)
atomic_weight原子量可能是小数点后超过6位的浮点数4.002602DEC(10,6)
comments长文本,超过255个字Joe,I'm at the shareholder's meeting.They just gave a demo... BLOB
quantity某项物品的库存量239INT
tax_rate百分比3.755DEC(5,3)
book_title文本字符串HeadFirst SQLVARCHAR(50)
gender单个字符,F或Mm

CHAR(1)

phone_number10位数,不加标点符号TX,CACHAR(2)
anniversary月、日、年11/22/2023DATE
games_won以数字表示获胜的比赛场数15INT
meeting_time时间和日期 10:30 a.m.4/12/2020DATETIME

看完这个数据类型,我们感觉应该在检查下我们创建的my_contacts表,查看已创建的表,可以用DESC命令。

DESC my_contacts;

mysql> desc my_contacts;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| last_name  | varchar(30)  | YES  |     | NULL    |       |
| first_name | varchar(20)  | YES  |     | NULL    |       |
| email      | varchar(50)  | YES  |     | NULL    |       |
| birthday   | date         | YES  |     | NULL    |       |
| profession | varchar(50)  | YES  |     | NULL    |       |
| location   | varchar(50)  | YES  |     | NULL    |       |
| status     | varchar(20)  | YES  |     | NULL    |       |
| interests  | varchar(100) | YES  |     | NULL    |       |
| seeking    | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
9 rows in set (0.01 sec)

此时我们想加入性别列,在email的下面(右边),birthday的上面(左边),重建表格可以吗?

不可以,会报错,也很麻烦。当然你了解后hi知道,可以将数据库整张表删除,但这是一件比较危险的行为,可能导致数据丢失。那么,这需要用哪些方法囔?

如果是刚刚建立的表,删除表比创建表简单很多。

DROP TABLE my_contacts;

DROP TABLE会删除表和表里的所有数据。DROP TABLE无论表中是否有数据,都会执行,小心使用,小心使用,小心使用!!!(还不明白去网上看看那些删库跑路的故事)

> DROP TABLE my_contacts;
Query OK,0 rows affected(0.02 sec)

方法1:重新创建,并插入需要的列字段。

CREATE TABLE my_contacts
(
last_name VARCHAR(30),
first_name VARCHAR(20),
email VARCHAR(50),
gender CHAR(1),
birthday DATE,
profession VARCHAR(50),
location VARCHAR(50),
status VARCHAR(20),
interests VARCHAR(100),
seeking VARCHAR(100)
 );
Query OK, 0 rows affected (0.03 sec)

 这时,my_contacts表已经具备了,但是它里面没有数据,我们现象下它变成表的样子,应该是

last_namefirst_nameemail genderbirthdayprofessionlocationstatusinterestsseeking

我们下一步就需要将数据填写进去,使用INSERT语句

INSERT INTO your_table(column_name1,column_name2,...) VALUES('value1','value2',...);

表名后面跟着列名,VALUES后面跟着是对应列的值。输入时,只要确保列名和数据对应。

INSERT INTO my_contacts
(last_name,first_name,email,gender,birthday,profession,location,status,interests,seeking) 
VALUES
('Anderson','Jillian','jill_anderson@breakneckpizza.com','F','1980-09-05','Technical Writer','Palo Alto,CA','Single','kayaking,Reptiles','Relationship,Friends');

用Enter换行控制语句的可读性是个好办法

三种INSERT语句形式

        1. 改变列顺序

INSERT INTO my_contacts

(interests,first_name,last_name,gender,email,birthday,profession,location,status,seeking)

VALUES

('Kayaking,Reptiles','Jillian','Anderson','F','jill_anderson@breakneckpizza.com','1980-09-05','Technical Writer','Palo Alto,CA','Single','Relationship,Friends');

列名顺序不同,只要数值对应一起调整,结果一样正常显示! 

        2. 省略列名

INSERT INTO my_contacts

VALUES

('Anderson','Jillian','jill_anderson@breakneckpizza.com','F','1980-09-05','Technical Writer','Palo Alto,CA','Single','Kayaking,Reptiles','Relationship,Friends');

列名可以省略,只要数据值按列顺序全部填入,必须与列名顺序完全对应。 

        3. 省略部分列

INSERT INTO my_contacts
(last_name,first_name,email) 
VALUES
('Anderson','Jillian','jill_anderson@breakneckpizza.com');

只填入一部分列值,一样是数值对应相应的列。那么问题来了?那些没有填入数据的列会存入什么囔?


mysql> INSERT INTO my_contacts(last_name,first_name,email) VALUES('Anderson','Jillian','jill_anderson@breakneckpizza.com');
Query OK, 1 row affected (0.01 sec)

这时候需要需要查看表数据,怎么做囔?

当当当~~~~以SELECT语句窥探表

SELECT * FROM my_contacts;

这里只有表名,这语句看起来非常简介,我们执行一下看看结果。

mysql> select * from my_contacts;
+-----------+------------+----------------------------------+--------+------------+------------------+--------------+--------+-------------------+----------------------+
| last_name | first_name | email                            | gender | birthday   | profession       | location     | status | interests         | seeking              |
+-----------+------------+----------------------------------+--------+------------+------------------+--------------+--------+-------------------+----------------------+
| Anderson  | Jillian    | jill_anderson@breakneckpizza.com | F      | 1980-09-05 | Technical Writer | Palo Alto,CA | Single | kayaking,Reptiles | Relationship,Friends |
| Anderson  | Jillian    | jill_anderson@breakneckpizza.com | NULL   | NULL       | NULL             | NULL         | NULL   | NULL              | NULL                 |
+-----------+------------+----------------------------------+--------+------------+------------------+--------------+--------+-------------------+----------------------+
2 rows in set (0.00 sec)

 这两条数据一个是一开始INSERT全部数据,另一个是第3种省略部分列的数据插入,其他的示例并未执行,所以这里我们看到的两条,同时,我们看到省略后,没有数据的列显示的内容为NULL。后面我们再详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值