SQL基础篇

         小弟不才,近日初识数据库,学习SQL略有心得。做些学习笔记,与君共享。

         本文参考材料均来自《head first SQL 》,使用mysql 数据库,WIN7系统操作。文中共享的代码均为书中范例。

第一章 数据和表

一.基本概念

            数据库是保存表和其他相关SQL结构的容器。

             数据库内的信息组成了

二.创建数据库和表

         1.创建数据库CREATE DATABASE gregs_list;/*创建数据库 gregs_list*/

        操作效果:Description: C:\Users\4215hc\Desktop\New folder\1.png

        2.使用数据库   : USE gregs_list;   /*切换到数据库gregs_list*/

         操作效果:Description: C:\Users\4215hc\Desktop\New folder\2.png

说明:

a. SQL要求所有表都放到数据库中,即使只有一张表。这样便于管理。

b. SQL本身不区分大小写,命令如CREATE 不大写也是可以的。但是命令大写是良好的SQL编程习惯。数据库名,表名,列名的规范写法是小写。

c.  数据库,表,列命名时,使用描述性的名称会有不错的效果。如:boys, first_name 等。使用下划线是为了让名称更具有描述性。命名时首字母也不要大写,全部小写。但名称中不能出现空格。

d. 语句结尾的‘;’号表示命令的结束。

       3.创建表CREATE TABLE doughnut_list(

                                 doughnut_name VARCHAR(10),

                                 doughnut_type VARCHAR(6)

                        );

        操作效果:Description: C:\Users\4215hc\Desktop\New folder\3.png

           说明:

a.       doughnut_list是表名,由于刚才使用的是gregs_list数据库,所以这张表创建在了数据库gregs_list中。

b.      doughnut_list中有两列,分别是 doughnut_namedoughnut_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)

                   );

操作效果:Description: C:\Users\4215hc\Desktop\New folder\4.png

SQL数据类型会根据RDBMS不同而稍有不同,具体可问百度,这里就不详细介绍了。

     4.检查表DESC my_contacts;/*检查表的构造*/

       操作效果:Description: C:\Users\4215hc\Desktop\New folder\5.png

5.删除表DROP TABLE my_contacts;/*删除表*/

操作结果Description: C:\Users\4215hc\Desktop\New folder\6.png

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');

操作结果:Description: C:\Users\4215hc\Desktop\New folder\8.png

     其他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');

操作结果:

Description: C:\Users\4215hc\Desktop\New folder\9.png

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');

操作结果:Description: C:\Users\4215hc\Desktop\New folder\10.png

c.省略部分列:INSERT INTO my_contacts(/*省略部分列*/

last_name,first_name,email)

VALUES

('Anderson','Jillian','jill_anderson@breakneckpizza.com');

操作结果:Description: C:\Users\4215hc\Desktop\New folder\11.png

说明:

a.       向表中插入数据时,表必须是已经存在的,否则会报错。

b.      向表中插入值,只与SQl语句相对应,与原表中列的顺序无关。

c.       表名省略情况下,插入值的列顺序默认是表的列顺序。

d.      插入值时,可省略部分列。具体情况要看表的约束条件,这个以后会讲。

7.查看表中数据SELECT * FROM my_contacts;/*查询表my_contacts中的所有内容*/

操作结果:Description: C:\Users\4215hc\Desktop\New folder\1.png

NULL说明:

表中出现了NULLNULL表示未定义。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,

  );

查看表:Description: C:\Users\4215hc\Desktop\New folder\2.png

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');

查看结果:

Description: C:\Users\4215hc\Desktop\New folder\3.png

我们再插入的时候并没有设定doughnut_cost的值,表中采用了默认值1.00.

三.复习要点:

a.可使用DESCdescription)查看表结构

b. DROP TABLE语句可用于丢弃表。慎用!

c.插入数据时,可使用任何一种(3种)INSERT语句。

d. NULL 是未定义的值,不等于零也不等于空值。只可以是NULL,但不是等于NULL

e. 没有在INSERT语句中被赋值的列,取默认值,没有默认值则为NULL

f.创建表时,可使用关键字NOT NULL设置列不接受NULL值,使用DEFAULT设置默认值。