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、表的改名换姓
> 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);