1 第一章 数据和表:保存所有东西的地方
数据库
数据库是保存表和其他相关SQL结构的容器。
查询(query)
数据库由表构成。
表是在数据库中包含数据的结构,由列和行组成。
每个分类都变成表中的一列;
表的行包含了表中某个对象的所有信息;
数据库内的信息组成了表
字段(field)=列,记录(record)=行
关系型数据库管理系统(relational database management system,RDBMS)
SQL语句
使用SQL创建数据库:
CREATE DATABASE gregs_list;
使用数据库:
USE gregs_list;
命令大写是良好的SQL编程惯例;
创建具有描述性的名称通常有不错的效果;
有时候要多用几个单词来命名,但所有名称都不能包含空格,所以使用下划线能够让你创建更具描述性的名称
CREATE DATABASE gregs_1st:
USE gregs_list;
创建表:
CREATE TABLE doughnut_list
(
doughnut_name VARCHAR(10),
doughnut_type VARCHAR(6)
);
VARCHAR”是可变动宇符(VARiable CHARacter)的意思,用于保存以文本格式存储的信息;
“(6)”是指这段文字的长度最多只能有6个字符
CREATE TABLE my_contacts
(
last_name VARCHAR(30),
first_name VARCHAR(20),
email VARCHAR(50),
birthday DATE,
profession VARCHAR(50),
location VARCHAR(50),
status VARCHAR(20),
interests VARCHAR(100),
seeking VARCHAR(100)
);
数据类型:
CHAR或CHARACTER,他很严谨,负责的数据必须是事先设定好的长度;
INT或INTEGER认为数字应该都是整数,不过他也可以处理负数;
DEC,DECIMAL的缩写。他会提供数值空间,直到装满为止;
BLOB,他最喜欢大量文本数据了;
DATE记录日期,但是她不喜欢插手TIME的事情;
VARCHAR存储文本数据,最大长度可达255个宇符,她很灵活,而且可以配合我们的数据长度进行调整;
在不同SQL RDBMS中,她的名宇可能是DATETIME,也可能是TIMESTAMP,她负责记录日期和时何,她有一个双胞姐妹TIME,但TIME不喜欢插手管DATE的事情,TIMESTAMP通常用于记录”当下这个时刻,DATETIME更适合存储将来的时间
DEC(6,2):这里的两个数字表示数据库希望的浮点数格式,前者代表总位数,后者是小数点后的位数
DESC my_contacts;
DESC是DESCRIBE的缩写,检查创建的表:
CREATE TABLE my contacts
(
last_name VARCHAR (20),
first_name VARCHAR(30),
email VARCHAR(50),
birthday DATE,
gender CHAR(1),
profession VARCHAR(50),
location VARCHAR(50),
status VARCHAR(20),
interests VARCHAR(100),
seeking VARCHAR(100)
);
不可以重建已经存在的表或数据库!
删除表:
DROP TABLE my_contacts;
DROP TABLE会删除你的表和表里面所有的数据!
把数据添加进表:
INSERT INTO `my_contacts`
(`last_name`,`first_name`,`email`,`gender`,`birthday`,`profession`,`location`,`status`,`interests`,`seeking`)
VALUES
('Anderson','Jillian','jill_anderson@ \nbreakneckpizza.com','F','1980-09-05','Technical Writer',
'Palo Alto, CA','single','kayaking, reptiles','relationship, friends');
任何属于VARCHAR,CHAR,DATE、BLOB列类型的值都需要加单引号,DEC、INT等数值不需要加上单引号
三种insert格式:
1.改变列顺序
我们可以改变列名的顺序,只要记得数据值的顺序也要一起调整!
2.省略列名
列名列表可以省赂,但数据值必须全部填入,而且必须与当初创建表时的列顺序完全相同。
3.省略部分列
也可以只填入一部分列值就好了。
INSERT INTO my_contacts
(last_name,first_name,email)
VALUES
('Anderson','Jillian','jill_andersone@breakneckpizza.com');
查看表中数据:
SELECT * FROM my_contacts;
NULL会出现在没有被赋值的列中
把列改为不接受NULL:
CREATE TABLE my_contacts
(
last_name VARCHAR(30) NOT NULL,
first_name VARCHAR (20) NOT NULL
)
用DEFAULT设置默认值:
跟在DEFAULT关键字后的值会在每次新增记录时自动插人表中----只要没有另外指派其他值。
默认值的类型必须和列的类型相同。
复习要点