- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
- select distinct实例 :剔除重复字段重复的内容 如 name = 1,1,1,3,5 select distinct name from student input name = 1,3,5
- and or的用法
- order by:对结果集按照一个列或者多个列进行排序 如升序、降序 例子:select * from student order by age,grade asc/desc
- insert into 向表中插入新纪录 例子1: INSERT INTO Websites (name, url, alexa, country)VALUES ('百度','https://www.baidu.com/','4','CN');2. INSERT INTO Websites (name, url, country)VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');
- update 更新表中已存在的数据 例子: UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
- delete 删除表中记录 drop 删除整个表结构,并释放空间,把表删除的一干二净;truncate 删除表中的内容,并释放空间,但是不删除表的定义,表的结构还在
- limit 限定选取某些数据,例子: SELECT * FROM Websites LIMIT 2;选取前两条数据
- like 模糊查询 通常与%一起使用
- in 操作符:允许在where子句中规定多个值
- between: SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND NOT country IN ('USA', 'IND'); - 别名 如student as s,wbtest as w;应用场景:在查询中设计超过一个表,在查询中使用了函数,列名称很长或者可读性差,需要把两个列或者多个列结合在一起
- join 连接,用于把来自两个或多个表的行结合起来;例子: SELECT Websites.id, Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id; - inner join:如果表中有至少一个匹配,则返回行 SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count; - left join:即使右表中没有匹配,也从左表返回所有的行 SELECT Websites.name, access_log.count, access_log.date
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC; - right join:即使左表中没有匹配,也从右表返回所有的行 SELECT Websites.name, access_log.count, access_log.dateFROM access_logRIGHT JOIN WebsitesON access_log.site_id=Websites.idORDER BY access_log.count DESC;
- full join:只要其中一个表中存在匹配,则返回行 mysql不支持此语句,sql server支持此语句
- union操作符:用于合并两个或者多个select语句的结果集,需要注意的是union内部的每个select语句必须拥有相同数量的列。列也必须拥有相似的数据类型,同时每个select语句中的列的顺序必须相同 SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country; ----输入的结果是两个表中出现的不同城市 union all 会输出两个表中全部城市的名称包含重复的内容 - create database 用于创建数据库
- create table 用于创建数据库中的表 CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
); - SQL约束 not null 指示某列不能存储null值,如果不向字段添加值,就无法插入新纪录或者更新数据 例子: CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
) - unique 约束唯一标识数据库表中的每条记录,为列或列集合提供了唯一性的保证 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
) alert table时的约束 ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName) 撤销约束 ALTER TABLE Persons
DROP INDEX uc_PersonID - primary key 约束唯一标识数据库中的每条记录。主键必须包含唯一的值,主键列不能包含null值,每个表都应该有一个主键,并且每个表只能有一个主键 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
) 如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
) 只有一个主键 PRIMARY KEY(pk_PersonID)。然而,pk_PersonID 的值是由两个列(P_Id 和 LastName)组成的。 撤销primary key约束 ALTER TABLE Persons
DROP PRIMARY KEY - foreign key约束
- default 约束用于限制列中的值的范围,如果对单个列定义check约束,那么该列只允许特定的值,如果对一个表定义check约束,那么此约束会基于航中其他的值在特定的劣种对值进行限制 CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
) 对多个列进行约束CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
) 对alter table 时的约束 ALTER TABLE Persons
ADD CHECK (P_Id>0) - default 约束用于向列表中插入默认值,如果没有规定其他的值,那么会将默认值添加到所有的心记录 CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
) ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES' - create index 用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快的查找数据; 更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。 创建一个简单的索引,允许使用重复的值 CREATE INDEX index_name
ON table_name (column_name) 在表上创建一个唯一的索引,不允许使用重复的值,唯一的索引意味着两个行不能拥有相同的索引值 CREATE UNIQUE INDEX index_name
ON table_name (column_name) - sql 函数 avg() 函数返回数值列的平均值 SELECT AVG(column_name) FROM table_name
- count() 函数返回匹配指定条件的行数 SELECT COUNT(column_name) FROM table_name; 返回指定列的值的数目(null不计入) 例子1: SELECT COUNT(count) AS nums FROM access_log WHERE site_id=3; 计算 "access_log" 表中 "site_id"=3 的总访问量: 例子2: SELECT COUNT(*) AS nums FROM access_log; 计算 "access_log" 表中总记录数; 例子3: SELECT COUNT(DISTINCT site_id) AS nums FROM access_log; 计算 "access_log" 表中不同 site_id 的记录数:
- first()函数返回指定的列表中第一个记录的值
- last()函数返回指定的列表中最后一个记录的值
- max() min()sum()
- group by() 函数语句可结合一些聚合函数来使用 SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id; SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;