1、

CREATE TABLE drink_info(drink_name VARCHAR(30),cost DEC(8,2),carbs DEC(8,2),color VARCHAR(20),ice CHAR(1),calories INT);


2、对char varchar进行运算符比较运算,比较运算符会按字母顺序地评估所有事物的大小。

假设你要选出所有名称以“L”开头的饮料,查询语句如下:

SELECT drink_name FROM drink_info WHERE drink_name >= 'L' AND drink_name < 'M';


3、不可以直接选择NULL,但可以利用关键字选择NULL

SELECT drink_name FROM drink_info WHERE calories IS NULL;


4、LIKE 喜欢和通配符在一起,第一通配符是%,它是任意数量的未知字符的替身

SELECT first_name FROM my_contacts WHERE first_name LIKE '%im';


LIKE喜欢的第二个通配符是下划线 _ ,它是一个未知字符的替身。

SELECT first_name FROM my_contacts WHERE first_name LIKE '_im';


5、BETWEEN 查询某一范围内的语句,范围的起止值也会包含在查找范围内。

SELECT drink_name FROM drink_info WHERE calories BETWEEN 30 AND 60;


6、IN  NOT IN 注意NOT 要放在WHERE AND OR 的后面,NOT IN 中的NOT除外;

SELECT drink_name FROM easy_drinks WHERE main = IN ('peach nectar','soda');

SELECT drink_name FROM easy_info WHERE NOT carbs BETEWEEN 3 AND 5;

SELECT date_name FROM black_book WHERE NOT date_name LIKE 'A%'

AND NOT date_name LIKE 'B%';


7、我负责你的数据                       DEC,INT

   我可以扔掉你不想要的表               DROP TABLE

   T或F是我的最爱                       CHAR(1)

   我帮你记住你母亲的生日               DATE

   我手上拥有所有表                     CREATE DATABASE

   我跟一般数字的感情不错,但我讨厌分数 INT

   我喜欢长篇大论                       BLOB  

   这里是存储所有东西的地方             CREATE TABLE

   我知道下星期的牙医门诊在什么时候     DATETIME

   会计师最爱我了                       DEC(6,2)

   我可以让你看到表的格式               DESC

8、DELETE语句就是从表中删除一行数据所需的工具。

DELETE FROM clown_info WHERE activities = 'dancing';

DELETE的规则:

   DELETE不能删除单一列中的值或表中某一列的所有值;

   DELETE可用于删除一行或多行,根据WHERE子句而定

   我们已经知道如何从表中删除一行,也可以删除多行。为了实现这个目标,我们利用WHERE子句告诉

   DELETE该选择哪些行。WHERE子句和搭配SELECTE时的使用方法完全相同,凡是用于WHERE子句中的关    键字,如LIKE、IN、BETWEEN,都可以在此处使用,而且所有条件都能更准确地要求RDBMS删除特定      行。

   还有,这一段语句可以删除表中的每一行;

9、UPDATE 它能更新一列或多列的值。就像SELECT和DELETE,UPDATE也能通过使用WHERE子句来精确地制定要更新的行。

  UPDATE doughnut_ratings SET type='glazed' WHERE type = 'plain glazed';

关键字SET告诉RDBMS,它主要把WHERE子句提到的原始列值改为它这一句中的值。


UPDATE的规则:

 使用UPDATE,你可以改变单一列或所有列的值。 在SET子句中加入更多column=value组,其间以逗号分隔:

 UPDATE可用于更新单一行或多行,一切都交给WHERE子句决定。

 UPDATE语句能运用在表的多条记录上。它可以和基础数学运算符一起使用,可以操作数值数据。


10、创建表的步骤:

    1)挑出事物,挑出你希望表描述的某样事物。(什么事你希望表说明的主要事物呢?)

    2)列出一份关于那样事物的信息列表,这些信息都是使用表时的必要信息

          (你将如何使用这张表)

    3)使用信息列表,把关于那样事物的综合信息拆分成小块信息,以便用于组织表。

           (如何才能最轻松地查询这张表)


1:你的表在描述什么事物?(是描述小丑、乳牛、甜甜圈或人)

2:以何种方式使用表取得描述的事物呢?(设计表时要让查询容易一点)

3:列是否包含原子性数据,可让查询既简短又直逼要害?


规范化表的优点:

1:规范化表中没有重复的数据,可以减小数据库的大小。

2:因为查找的数据较少,你的查询会更为快速。


11、主键规则

即将成为主键的列必须在创建时一并设置。

主键是表中的某个列,它可以让每一条记录成为唯一的。

主键不可以为NULL

插入新记录时必须指定主键值

主键必须简洁

主键值不可以被修改


12、CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(20),last_name VARCHAR(30),PRIMARY KEY(id));

AUTO_INCREMENT 会忽略NULL


13、ALTER TABLE my_contacts

    ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,

    ADD PRIMARY KEY(contact_id);


这里的FIRST,也可以用LAST SECOND替代。

ALTER 命令几乎能让你改变表里的一切,而且不需要重新插入数据。但也要小心,如果改变列的类型,

你可能就会有遗失数据的风险。



14、SHOW CREATE TABLE 使用这个命令来呈现创建现有表的正确语法。

    PRIMARY KEY      主键 一个或一组能识别唯一数据行的列

    AUTO_INCREMENT    若在列的声明中使用这个关键字,则每次执行INSERT命令来插入数据时,它都会自动给列赋予唯一的递增整数值


15、ALTER TABLE my_contacts ADD COLUMN phone VARCHAR(10) AFTER last_name;

关键字AFTER 紧跟在新添加的列的名称后面。 AFTER 是可选关键字,如果不使用它,新列则会添加至表的最后。

16、DESCRIBE 查看这个表的构成。它会说明此列是否为主键,并且告诉我们每列存储的数据类型。

DESCRIBE tablename;

17、表的改名换姓

    ALTER TABLE projekts RENAME TO project_list;

projekts是旧的表名,project_list 表新的名字。


18、把number列改名为proj_id,并把它设置为AUTO_INCREMENT,然后将它标注为主键

ALTER TABLE project_list CHANGE COLUMN number proj_id INT NOT NULL AUTO_INCREMENT,

ADD PRIMAY KEY (proj_id);


用一条语句改变两个列。要修改descriptionofproj和contractoronjob列的名称,同时更改它们的数据类型。我们所要做的只是在一条ALTER TABLE语句中放入两个CHANGE COLUMN,并在中间加上分隔用的逗号。

ALTER TABLE project_list CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100),

CHANGE COLUMN contractoronjob con_name VARCHAR(30);


注意: 如果把数据改成另一种类型,你可能会丢失数据

       如果你想改变的数据类型和原始类型不兼容,命令则不会执行,SQL软件也会抱怨语句有问题

       但真正的惨剧可能发生在类型兼容的情况下,你的数据可能被截断。

19、MODIFY 它只会修改列的类型而不会干涉它的名称

    例如你要把proj_desc列的字符长度修改为VARCHAR(120)以容纳更长的说明文字。只要这样做:


ALTER TABLE project_list MODIFY COLUMN proj_desc VARCHAR(120);


20、你的列越多,RDBMS的工作就越累,数据库所占用的空间就越大。当表还小时,这种情况并不明显,但随着数据的增长,你会发现查询跑的越来越慢,而计算机的处理器也会运作的越来越辛苦。


21、删除表project_list中的start_date列

ALTER TABLE project_list 

DROP COLUMN start_date;



ALTER TABLE hooptie 

RENAME TO car_table,

ADD COLUMN car_id INT NOT NULL AUTO_INCREMENT FIRST,

ADD PRIMARY KEY (car_id),

ADD COLUMN vin CHAR(16) AFTER car_id,

CHANGE COLUMN mo model VARCHAR(20),

MODIFY COLUMN color AFTER model,

MODIFY COLUMN year SIXTH,

CHANGE COLUMN howmuch price DECIMALIT(7,2);



移除主键的设置

ALTER TABLE your_table DROP PRIMARY KEY;


移除自动添加功能

ALTER TABLE your_table CHANGE you_id

your_id INT(11) NOT NULL;

注意,每个表中只有一列可以加上AUTO_INCREMENT,该列必须为整数类型而且不能包含NULL。


22、想同时改变列的名称和类型时请用  CHANGE

    只想改变数据类型时请用 MODIFY

    DROP COLUMN的功能是从表中卸除指名的列

    使用RENAME 改变表的名称

    使用 FIRST,LAST,BEFORE column_name,AFTER column_name,SECOND,THIRD,FOURTH等关键字,可以

    调整列的顺序。

    有些RDBMS只有在添加新列时才允许改变列的顺序。


23、下面列出较常用的字符串辅助函数


SUBSTRING(your_string,start_position,length)能截取一部分your_string字符串,截取的起始位置为

start_position,截取长度当然由length指定。


  SELECT SUBSTRING('San Antonio,TX',5,3);


UPPER(your_string)和LOWER(your_string)分别可把整组字符串改为大写或小写。


REVERSE(your_string)的作用正如其名:反转字符串里的字符排序


LTRIM(your_string)与RTRIM(your_string)会返回清除多余空格后的字符串,他们分别清除字符左侧(前面)和右侧(后面)的多余空格。


LENGTH(your_string)返回字符串中的字符数量。


注意,字符串函数不会改变存储在表中的内容,他们只是把字符串修改后的模样当成查询结果返回。


例子,我们要试着把location列中的信息取出,然后分开存储到两个新列中(city和state)


UPDATE my_contacts

SET state = RIGHT(location,2);


UPDATE my_contacts

SET city = SUBSTRING_INDEX(location,',',1);