SQL基础篇
小弟不才,近日初识数据库,学习SQL略有心得。做些学习笔记,与君共享。
本文参考材料均来自《head first SQL 》,使用mysql 数据库,WIN7系统操作。文中共享的代码均为书中范例。
第一章 数据和表
一.基本概念
数据库是保存表和其他相关SQL结构的容器。
数据库内的信息组成了表。
二.创建数据库和表
1.创建数据库:CREATE DATABASE gregs_list;/*创建数据库 gregs_list*/
操作效果:
2.使用数据库 : USE gregs_list; /*切换到数据库gregs_list中*/
操作效果:
说明:
a. SQL要求所有表都放到数据库中,即使只有一张表。这样便于管理。
b. SQL本身不区分大小写,命令如CREATE 不大写也是可以的。但是命令大写是良好的SQL编程习惯。数据库名,表名,列名的规范写法是小写。
c. 数据库,表,列命名时,使用描述性的名称会有不错的效果。如:boys, first_name 等。使用下划线是为了让名称更具有描述性。命名时首字母也不要大写,全部小写。但名称中不能出现空格。
d. 语句结尾的‘;’号表示命令的结束。
3.创建表:CREATE TABLE doughnut_list(
doughnut_name VARCHAR(10),
doughnut_type VARCHAR(6)
);
操作效果:
说明:
a. doughnut_list是表名,由于刚才使用的是gregs_list数据库,所以这张表创建在了数据库gregs_list中。
b. 表doughnut_list中有两列,分别是 doughnut_name和doughnut_type。
c. VARCHAR表示的是列中能够存储的数据类型。后面口号中的10表示数据长度。
如下例:CREATE TABLE my_contacts(
last_name VARCHAR(30), /*第一例,列名为last_name,类型是VARCHAR,长度为30*/
first_name VARCHAR(20),/*第二例*/
email VARCHAR(50),
birthday DATE, /*第四列,类型是DATE*/
profession VARCHAR(50),
locationg VARCHAR(50),
status VARCHAR(20),
interests VARCHAR(100),
seeking VARCHAR(100)
);
操作效果:
SQL数据类型会根据RDBMS不同而稍有不同,具体可问百度,这里就不详细介绍了。
4.检查表:DESC my_contacts;/*检查表的构造*/
操作效果:
5.删除表DROP TABLE my_contacts;/*删除表*/
操作结果
6.表中插入数据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');
操作结果:
其他INSERT语句:
a.改变顺序: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');
操作结果:
b.省略列名: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');
操作结果:
c.省略部分列:INSERT INTO my_contacts(/*省略部分列*/
last_name,first_name,email)
VALUES
('Anderson','Jillian','jill_anderson@breakneckpizza.com');
操作结果:
说明:
a. 向表中插入数据时,表必须是已经存在的,否则会报错。
b. 向表中插入值,只与SQl语句相对应,与原表中列的顺序无关。
c. 表名省略情况下,插入值的列顺序默认是表的列顺序。
d. 插入值时,可省略部分列。具体情况要看表的约束条件,这个以后会讲。
7.查看表中数据SELECT * FROM my_contacts;/*查询表my_contacts中的所有内容*/
操作结果:
NULL说明:
表中出现了NULL,NULL表示未定义。NULL不是0,也不等于任何值,并且NULL也不等于NULL。
8.NULL控制
如果不希望在部分列中出现NULL值,可以在创建表时,做设定:
CREATE TABLE my_contacts(
last_name VARCHAR(30) NOT NULL,
first_name VARCHAR(20) NOT NULL,
email VARCHAR(50) NOT NULL,
gender CHAR(1)NOT NULL,
birthday DATE NOT NULL,
profession VARCHAR(50)NOT NULL,
location VARCHAR(50)NOT NULL,
status VARCHAR(20)NOT NULL,
interests VARCHAR(100)NOT NULL,
seeking VARCHAR(100)NOT NULL,
);
查看表:
9.设定默认值
如果某些列常有特定值,可在创建表时,设定其默认值:
CREATE TABLE doughnut_list(
doughnut_name VARCHAR(10) NOT NULL,
doughnut_type VARCHAR(6) NOT NULL,
doughnut_coat DEC(3,2) NOT NULL DEFAULT 1.00);/*设定doughnut_cost列的默认填充值为1.00*/
插入数据INSERT INTO doughnut_list(doughnut_name,doughnut_type)
VALUES ('Cinnamondo','ring');
查看结果:
我们再插入的时候并没有设定doughnut_cost的值,表中采用了默认值1.00.
三.复习要点:
a.可使用DESC(description)查看表结构
b. DROP TABLE语句可用于丢弃表。慎用!
c.插入数据时,可使用任何一种(3种)INSERT语句。
d. NULL 是未定义的值,不等于零也不等于空值。只可以是NULL,但不是等于NULL。
e. 没有在INSERT语句中被赋值的列,取默认值,没有默认值则为NULL。
f.创建表时,可使用关键字NOT NULL设置列不接受NULL值,使用DEFAULT设置默认值。