SQL基础介绍

SQL数据库

基本介绍

对大小写不敏感,分号分隔命令
SQL默认接受NULL值,但NOT NULL可以使之拒绝接受

基本命令

SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

命令语法介绍

SELECT

  • 选取数据
SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;

从表中选取部分列数据或所有数据。

  • DISTINCT语句去重复
SELECT DISTINCT column_name,column_name
FROM table_name;

返回每列不同的值,去重复。

WHERE过滤数据

SELECT column_name,column_name FROM table_name WHERE column_name operator value;

提取满足条件的记录,
WHERE运算符包括=、<、>、<>(不等于)、>=、<=、BETWEEM(某个范围内)、LINK(搜索模式)、IN(某列多个可能值),也可以用AND、OR。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

ORDER BY排序

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

默认升序排序,多个列是前面优先,DESC为降序排序。

INSERT INFO语句

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name VALUES (value1, value2, value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

UPDATE 更新(更改)记录

UPDATE table_name SET column1=value1,column2=value2,column3=value3,...WHERE some_column=some_value;

更新WHERE语句筛选下的数据,记得WHERE语句,否则全部更新。

DELETE 删除表中数据

DELETE FROM table_name WHERE some_column=some_value;

删除WHERE筛选下的数据

DELETE FROM table_name;
DELETE * FROM table_name;

不删除表情况下删除所有行(结构、属性、索引均未变)

SELECT TOP

不同语句支持不同,目前不做细究,参考菜鸟教程的SELECT TOP语句

UNION

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

合并时需要有相同数量的列,允许重复值使用UNION ALL。

DROP删除

删除表

DROP TABLE table_name

删除数据库

DROP DATABASE database_name

删除数据不删除表

TRUNCATE TABLE table_name

删除索引各有不同,不再赘述。

CREATE DATABASE 创建数据库

CREATE DATABASE new_table;

CREATE TABLE创建表

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
···
);

column_name不必说,data_type为数据类型,size为最大长度。

CREATE INDEX 创建索引

CREATE INDEX index_name ON table_name (column_name)

ALTER TABLE添加、删除、修改列

ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name   删除列
ALTER TABLE table_name ALTER COLUMN column_name datatype  修改数据类型

修改各有所不同

NOT NULL约束

CREATE TABLE table_name
(
    column_name1 int NOT NULL,
    column_name2 varchar(255) NOT NULL,
    column_name3 varchar(255) NOT NULL,
···
);
ALTER TABLE table_name MODIFY column_name1 int NOT NULL   某一字段增加NOT NULL
ALTER TABLE table_name MODIFY column_name2 int NULL     某一字段解除NOT NULL。

LINK 语句

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

和WHERE语句实际上类似,只不过多了指定模式,多用通配符指定。

SELECT INFO复制数据

MySQL不支持这个,而是支持INSERT INFO SELECT,

CREATE TABLE new_table AS SELECT * FROM old_table
SELECT * INFO new_table FROM old_table1;
SELECT column_name(s) INFO new_table FROM old_table1;

JOIN连接语句

和集合类似,共7种方法。
例如INNER JOIN返回所有满足条件的行,

SELECT table_name1.column_name1, table_name2.column_name2, table_name2.column_name1,table_name2.column_name2 
FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name1=table_name2.table_name2.column_name3;

返回结果为,table_name1.column_name1, table_name2.column_name2, table_name2.column_name1,table_name2.column_name2四个列,基于table_name1的数据添加table_name2的数据,然后table_name1的column_name1与table_name2的column_name2的数据相对应。
所有JOIN为:

  • INNER JOIN:表中至少一个匹配
  • LEFT JOIN:右表无匹配也返回左表所有行
  • RIGHT JOIN:左表无匹配也返回右表所有行
  • FULL JOIN:只有其中一个存在匹配,返回所有行
    而七种为LEFT、RIGHT、FULL还存在可能其中有无对应情况时的交集是否返回的情况。
SELECT table_name1.column_name1, table_name2.column_name2, table_name2.column_name1,table_name2.column_name2 
FROM OUTER JOIN table_name2 ON table_name1.column_name1=table_name2.table_name2 ORDER BY table_name2.column_name1 DESC;

数据类型

CHARACTER(n)字符/字符串固定长度,VARCHAR(n)或CHARCTER VARYING(n)字符/字符串最大长度,BOOLEAN布尔值,INTEGER(p)整数值精度p默认10,DECIMAL(p,s)精度p小数点后位数s,DATE年月日,TIME时分秒,TIMESTAMP包括DATE和TIME,还有其他类型。
DATE格式一般为YYYY-MM-DD,DATETIME和TIMESTAMP为YYYY-MM-DD HH:MM:SS,

通配符

%替代一个或多个字符,_一个字符,^[charlist]选取以xx开头的[^charlist][!charlist]表否定。
例如^[GFS]选取列数据中以G、F或S开头的数据。^[A-H]表示数据以A-H开头的。

别名AS

列的 SQL 别名语法

SELECT column_name AS alias_name FROM table_name;

表的 SQL 别名语法

SELECT column_name(s) FROM table_name AS alias_name;
SQL基础介绍SQL基础介绍 notwiner 发布了15 篇原创文章 · 获赞 6 · 访问量 1249 私信 关注
上一篇:unittest生成测试报告之BeautifulReport


下一篇:python2