SQL知识总结

1、数据类型

CHAR、 CHARACTER 通常使用单引号

INT、INTEGER 从不用引号

DEC、DECIMAL千万不能使用引号

DATATIME、TIME或TIMESTAMP必用引号

VARCHAR 必用单引号

DATE 必用单引号

BLOB 必用单引号

2、SQL语句

创建数据库  CREATE DATABASE gregs_list;

进入数据库  USE DATABASE

创建表  

CTEATE TABLE doughnut_list

(

doughtnut_name VARCHAR(10),

doughtnut _type  VARCHAR(10)

);

查看创建的my_contacts表结构  DESC my_contacts;

删除表   DROP TABLE my_contacts;

插入数据  INSERT INTO your_table(column_name1,column_name2,) VALUES ('value1','value2');-->数字可不加单引号

查看表  SELECT * FROM my_contacts;

NULL --> 不等于零,不等于另一个NULL,不等于空值;值可以是NULL,但不等于NULL,NULL代表未定义的值

用DEFAULT填补空白  CREATE TABLE doughnut_list(doughnut_cost DEC(3,2) NOT NULL DEFAULT 1.00);

2.1、SELECT语句

SELECT * FROM my_contacts;

SELECT * FROM my_contacts WHERE first_name = ''Anne;

语句中有单引号时转义

SELECT * FROM my_contacts WHERE location = 'Grover\'s Mill, NJ' ;

SELECT * FROM my_contacts WHERE location = 'Grover''s Mill, NJ';

SELECT drink_name FROM easy_drinks WHERE main = 'soda' AND amount1 > 1;

SELECT drink_name FROM easy_drinks WHERE main = 'orange juice' OR main = 'apple juice';

SELECT drink_name FROM drink_info WHERE calories IS NULL;

SELECT * FROM my_contacts WHERE location LIKE '%CA';-->百分号是任意数量的未知字符的替身

SELECT * FROM my_contacts WHERE location LIKE '_CA';-->下划线是一个未知字符的替身

SELECT drink_name FROM drink_info WHERE calories BETWEEN 30 AND 50;

SELECT date_name FROM black_book WHERE rating IN ('innovative','fabulous','delightful');

SELECT date_name FROM black_book WHERE rating NOT IN ('innovative','fabulous','delightful');

NOT 可以和BETWEEN或LIKE 一起使用,NOT一定要紧接在WHERE后面,NOT IN 例外

SELECT drink_name FROM drink_info WHERE NOT carbs BETWEEN 3 AND 6;

SELECT date_name FROM black_book WHERE NOT date_name LIKE 'A%' AND NOT date_name LIKE 'B%';

2.2、DELETE语句

DELETE FROM clown_info WHERE activities = 'dancing';

DELETE FROM your_table;可以删除表中的每一行

2.3、UPDATE语句

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

UPDATE drink_info SET cost = cost +1 WHERE drink_name = ''Blue Moon;

2.4、查看创建表的语句 SHOW CREATE TABLE my_contacts;

3、表设计

原子性数据:一小块无法或不应该分割的信息。

原子性数据的规则:

一、具有原子性数据的列中不会有多个类型相同的值

二、具有原子性数据的表中不会有多个存储同类数据的列

第一范式1NF:每个数据行必须包含具有原子性的值;每个数据行必须有独一无二的识别项,即主键。

主键用于独一无二的识别出每条记录。

主键不可以为NULL;插入新纪录时必须指定主键值;主键必须简洁;主键值不可以被修改。

最佳主键可能是新的主键,即认为添加一列作为主键。

-------------------------------------------------------------------------------------

加上主键的CREATE TABLE:

--> CREATE TABLE my_contacts

(

contact_id  INT  NOT NULL,

PRIMARY KEY (contact_id)

)

--> CREATE TABLE my_contacts

(

contact_id  INT  NOT NULL PRIMARY KEY,

)

--------------------------------------------------------------------------------------

为contact_id列加上关键字AUTO INCREMENT,可以让SQL软件自动为该列填入数字,第一行填入1,后面的依序递增

--> CREATE TABLE my_contacts

(

contact_id  INT  NOT NULL AUTO_INCREMENT,

PRIMARY KEY (contact_id)

)

4、ALTER

用ALTER来添加某列、设置主键 ALTER TABLE my_contacts ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (contact_id);

FIRST 即为第一列,其他如SECOND、THIRD等皆可

AFTER your_column、BEFORE your_column 某列之后、之前

LAST最后一列

一些关键字:

CHANGE:可同时改变现有列的名称和数据类型

--> ALTER TABLE project_list CHANGE COLUMN number proj_id INT NOT NULL AUTO_INCREMENT;

MODIFY:修改现有列的数据类型或位置

-->ALTER TABLE project_list MODIFY COLUMN proj_desc VARCHAR(120);

ADD:在当前表中添加一列-----可自选类型

DROP:从表中删除某列

-->ALTER TABLE project_list DROP COLUMN start_date;

更改表名:ALTER TABLE projects RENAME TO project_list;

删除已建的主键:ALTER TABLE your_table DROP PRIMARY KEY;

去除自增功能:ALTER TABLE your_table CHANGE your_id your_id INT(11) NOT NULL;将AUTO_INCREMENT去掉即可

字符串函数

RIGHT( )-->SELECT RIGHT(location,2) FROM my_contacts;-->location是列名,2是要从列的右侧开始选取的字符数量

LEFT( )同RIGHT,区别在于从列的左侧开始选取字符

SUBSTRING_INDEX( )-->SELECT SUBSTRING_INDEX(location,',',1) FROM my_contacts;

-->location为列名,‘,’即为要寻找的符号,1表示命令要寻找第一个逗号,然后截取它前面的所有内容

这个函数截取部分列值,寻找引号里面的字符串,然后取出它前面的所有内容

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

REVERSE(your_string)反转字符串里的字符排序

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

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

超大型UPDATE,利用CASE检查现有的值和条件,结合所有UPDATE语句

UPDATE my_table SET new_column = 

CASE 

   WHEN  column1=somevalue1

       THEN newvalue1

   WHEN column2=somevalue2

        THEN newvalue2

   ELSE  newvalue3

END;

ORDER BY-->SELECT title,category FROM movie_table WHERE category = 'family' ORDER BY title;排序

SELECT title,category,purchased FROM movie_table ORDER BY category,purchased;按两列排序,先按第一列排序,然后第二列根据第一列拍好之后进行排序

默认升序ASC,DESC是降序  SELECT title,purchased FROM movie_table ORDER BY title ASC, purchased DESC;

SUM-->SELECT SUM(sales) FROM cookie_sales WHERE first_name = 'Nicole';求和

GROUP BY-->SELECT first_name,SUM(sales) FROM cookie_sales GROUP BY first_name ORDER BY SUM(sales)DESC;分组

AVG-->SELECT first_name,AVG(sales) FROM cookie_sales GROUP BY first_name;平均值

MIN-->SELECT first_name,MIN(sales) FROM cookie_sales GROUP BY first_name;最小值

MAX-->SELECT first_name,MAX(sales) FROM cookie_sales GROUP BY first_name;最大值

 COUNT-->SELECT COUNT(sale_date) FROM cookie_sales;COUNT返回sales_date列中的行数。如果数据值是NULL,则不纳入计算

DISTINCT-->SELECT DISTINCT sale_date FROM cookie_sales ORDER BY sale_date;

SELECT first_name,SUM(sales) FROM cookie_sales GROUP BY first_name ORDER BY SUM(sales) DESC LIMIT 2;指定呈现的结果为两行

SELECT first_name,SUM(sales) FROM cookie_sales GROUP BY first_name ORDER BY SUM(sales) DESC LIMIT 1,1;SQL从0开始计数,所以1代表第二条记录,第二个1代表记录数量













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值