常用SQL语句整理

      SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准化编程语言。SQL由国际标准化组织(ISO)和美国国家标准协会(ANSI)标准化。SQL通过一系列的语句来执行数据的插入、查询、更新和删除等操作。支持SQL语言的数据库包括:Oracle、MySQL、SQL Server、PostgreSQL、SQLite等。

      下面中给的.sql示例文件在Microsoft SQL Server Management Studio 中可直接执行。操作步骤:打开SQL Server Management Studio:依次点击:文件 --> 打开 --> 文件:选择sql文件打开;点击执行即可,如下图所示:

      1.创建(CREATE):

      (1).创建数据库:

/*
CREATE DATABASE:用于创建数据库
CREATE DATABASE dbname
*/

CREATE DATABASE school

      (2).创建表:

/*
CREATE TABLE:用于创建新的数据库表
CREATE TABLE table_name (
    column1 data_type constraint,
    column2 data_type constraint,
    ...
)

约束(constraint):
    NOT NULL:指示某列不能存储NULL值,在默认的情况下,表的列接受NULL值
    UNIQUE:保证某列的每行必须有唯一的值
    PRIMARY KEY:NOT NULL和UNIQUE的结合,确保某列(或两个列多个列的结合)有唯一标识。每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARY KEY约束
    FOREIGN KEY:用于预防破坏表之间连接的行为。一个表中的FOREIGN KEY(外键)指向另一个表中的PRIMARY KEY(主键)
    CHECK:保证列中的值符合指定的条件
    DEFAULT:规定没有给列赋值时的默认值
*/

/*
CREATE TABLE teacher (
    id int,
    name char(32),
    addr char(64),
    age int,
    sex char(8)
)
*/

CREATE TABLE teacher2 (
    id int NOT NULL PRIMARY KEY CHECK(id>1000),
    name char(32) NOT NULL UNIQUE,
    addr char(64) DEFAULT 'TianJin',
    age int,
    sex char(8)
)

      约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

      (3).创建索引:

/*
CREATE INDEX:用于在表中创建索引,以加快查询速度
CREATE INDEX index_name ON table_name (column_name)
*/

CREATE INDEX idx ON student (id, name)

      (4).创建视图:

/*
CREATE VIEW: 创建视图。视图中的字段就是来自一个或多个数据库中的真实的表中的字段
CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition
*/

CREATE VIEW big_age AS SELECT id, name, sex, age FROM student WHERE age>20

      视图是可视化的表。视图本质上是一个虚拟的表,它并不存储数据,而是基于基础表的查询结果生成。更新视图的实质是通过更新视图所基于的表中的数据,然后视图会反映这些变化。

      2.插入(INSERT INTO):

/*
INSERT INTO:用于向表中插入新数据
INSERT INTO table_name(column1, column2, ...) VALUES(value1, value2, ...)
*/

-- INSERT INTO语句可以有两种编写形式
-- 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可
INSERT INTO student VALUES(1013, '小王', '女', 35, 2016-10-15)
INSERT INTO student VALUES(1014, 'Lucy', 'woman', 5, '2020-11-25 10:10:10')

-- 第二种形式需要指定列名及被插入的值
INSERT INTO student(id, name, sex, age) VALUES(1020, 'Lucy', '女', 10)

      3.更新(UPDATE):

/*
UPDATE:用于更新/调整数据库表中的现有数据
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition
*/

UPDATE student set sex='man', age=88 WHERE name='小王'

      4.查询(SELECT):

/*
SELECT:用于从数据库中查询数据,结果被存储在一个结果表中,称为结果集
SELECT column_name(s) FROM table_name WHERE condition ORDER BY column_name [ASC|DESC]
WHERE:用于指定筛选条件
ORDER BY:用于对结果集进行排序:ASC:升序(默认);DESC:降序
GROUP BY:用于将结果集按一列或多列进行分组
HAVING:用于对分组后的结果集进行筛选
JOIN:用于将两个或多个表的记录结合起来
DISTINCT:用于返回唯一不同的值: SELECT DISTINCT column1, column2, ... FROM table_name
BETWEEN:选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期
LIKE:用于在WHERE子句中进行模糊查询,通常与%(匹配任意字符(包括零个字符))和_(匹配单个字符)通配符一起使用
IN:允许在WHERE子句中规定多个值
*/

SELECT * FROM student -- 显示表student的所有数据
SELECT name, age FROM student -- 仅显示name和age列数据
SELECT * FROM student WHERE age > 20 ORDER BY age DESC -- 显示age>20的所有数据,并按降序排列
SELECT DISTINCT sex FROM student -- 最多显示2条数据
SELECT * FROM student WHERE sex='男' -- 显示表student中sex为男的数据
SELECT * FROM student WHERE age >= 21 AND age < 100 -- 显示age>=21并且age<100的所有数据
SELECT * FROM student WHERE age BETWEEN 21 AND 100 -- 显示age>=21并且age<=100的所有数据
SELECT * FROM student WHERE name LIKE '小%' -- 显示name是小开头的所有数据
SELECT * FROM student WHERE name NOT LIKE '小%' -- 显示name不是小开头的所有数据
SELECT * FROM student WHERE age IN(10, 20) -- 显示age为10和20的所有数据

      在SQL中限制查询返回的结果集中的行数,通常用于只需要查询前几行数据的情况,在SQL Server可使用SELECT TOP,在MySQL、PostgreSQL中可使用SELECT LIMIT。

      WHERE子句中支持的运算符:=、<>、>、<、>=、<=、BETWEEN、LIKE、IN。

      AND和OR运算符用于基于一个以上的条件对数据进行过滤。

      ORDER BY关键字用于对结果集进行排序。默认按照升序对数据进行排序。如果需要按照降序对数据进行排序,可以使用DESC关键字。

      JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

      UNION操作符用于合并两个或多个SELECT语句的结果。

      5.删除:

      (1).删除表中数据(DELETE):

/*
DELETE:用于从表中删除数据
DELETE FROM table_name WHERE condition
*/

DELETE FROM student WHERE age=5 OR name='Tom'

      (2).删除索引(DROP INDEX):

/*
DROP INDEX:用于删除索引
DROP INDEX index_name ON table_name
*/

DROP INDEX idx ON student

      (3).删除表(DROP TABLE/TRUNCATE TABLE):

/*
DROP TABLE:用于删除表,将同时删除表的结构以及存储在其中的所有数据
DROP TABLE table_name
*/

DROP TABLE teacher2

/*
TRUNCATE TABLE:用于快速删除表中的所有数据,但保留表的结构(列、约束等),与DELETE语句相比,TRUNCATE TABLE通常更快。无法进行回滚
TRUNCATE TABLE table_name
*/

TRUNCATE TABLE teacher

      (4).删除视图(DROP VIEW):

/*
DROP VIEW:撤销(或删除)视图
DROP VIEW view_name
*/

DROP VIEW big_age

      (5).删除数据库(DROP DATABASE):

/*
DROP DATABASE:用于删除数据库,包括其中的所有表、视图、存储过程等数据库对象
DROP DATABASE dbname
*/

DROP DATABASE school

      6.对已存在的表的列进行操作(ALTER TABLE):

/*
ALTER TABLE:用于在已有的表中添加、删除、修改列
ALTER TABLE table_name ADD column_name data_type -- 添加列
ALTER TABLE table_name DROP COLUMN column_name -- 删除列
*/

ALTER TABLE teacher ADD interest char(64) -- 添加列: interest
ALTER TABLE teacher DROP COLUMN age -- 删除列: age
ALTER TABLE teacher ALTER COLUMN sex int -- 修改列sex类型为int

      7.聚合函数:

-- SQL拥有很多可用于计数和计算的内建函数

SELECT AVG(age) AS age_avg FROM student -- 返回数值列age的平均值
SELECT COUNT(*) AS nums FROM student -- 返回表中的记录数
SELECT MAX(age) AS age_max FROM student -- 返回指定列age的最大值
SELECT MIN(age) AS age_min FROM student -- 返回指定列age的最小值
SELECT SUM(age) AS age_sum FROM student -- 返回数值列age的总数
SELECT UPPER(sex) AS sex_ucase FROM student -- 把字段sex的值转换为大写:UPPER(SQL Server)/UCASE
SELECT LOWER(name) AS name_lcase FROM student -- 把字段name的值转换为小写: LOWER(SQL Server)/LCASE
SELECT LEN(name) AS len_name FROM student -- 返回name段中值的长度

      可以为表名称或列名称指定别名:AS

     

      (1).SQL对大小写不敏感:SELECT与select是相同的。

      (2).不同的数据库,有些语句操作用法不同

      (3).某些数据库系统要求在每条SQL语句的末端使用分号。

      (4).SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。

      (5).在不同的数据库中,BETWEEN操作符会产生不同的结果:是否包括起始值和终止值,如SQL Server包括起始值和终止值。

      (6).在不同的数据库中,同一种数据类型可能有不同的名称。即使名称相同,尺寸和其他细节也可能不同。

      GitHubhttps://github.com/fengbingchun/Messy_Test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值