1 第一章 数据和表:保存所有东西的地方

发布时间 2023-05-08 15:21:46作者: Artwalker

数据库

数据库是保存表和其他相关SQL结构的容器。
查询(query)

数据库由表构成。
img
表是在数据库中包含数据的结构,由列和行组成。
每个分类都变成表中的一列;
表的行包含了表中某个对象的所有信息;
数据库内的信息组成了表

字段(field)=列,记录(record)=行
img

关系型数据库管理系统(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更适合存储将来的时间
img
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关键字后的值会在每次新增记录时自动插人表中----只要没有另外指派其他值。
默认值的类型必须和列的类型相同。
img

复习要点

img
img