sql概念
SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL 具有如下优点。
- 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
- 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C 、Fortran、COBOL、Java 等语言中使用。
- 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
- 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。
SQL 包含以下 4 部分:
1)数据定义语言(Data Definition Language,DDL)
用来创建或删除数据库以及表等对象,主要包含以下几种命令:
- DROP:删除数据库和表等对象
- CREATE:创建数据库和表等对象
- ALTER:修改数据库和表等对象的结构
2)数据操作语言(Data Manipulation Language,DML)
用来变更表中的记录,主要包含以下几种命令:
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
3)数据查询语言(Data Query Language,DQL)
用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。
4)数据控制语言(Data Control Language,DCL)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:
- GRANT:赋予用户操作权限
- REVOKE:取消用户的操作权限
- COMMIT:确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
常用sql
使用student_db表:
1.SQL SELECT 语句
SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集
代码语言:javascript复制SELECT * from student_db;
2.SQL SELECT DISTINCT 语句
DISTINCT 去重一列重复的数据
代码语言:javascript复制SELECT DISTINCT(country) from student_db;
3.SQL WHERE 子句
WHERE 子句用于提取那些满足指定条件的记录。
代码语言:javascript复制SELECT * from student_db WHERE sex in ('男');
4.SQL AND & OR
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
代码语言:javascript复制SELECT * from student_db WHERE sex in ('男') AND country in ('CN');
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
代码语言:javascript复制SELECT * from student_db WHERE country in ('CN') OR country in ('USA');
代码语言:javascript复制SELECT * from student_db WHERE age > '30' and (country in ('CN') OR country in ('USA'));
5.SQL ORDER BY 关键字
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
按照年龄排序
升序:
代码语言:javascript复制SELECT * from student_db ORDER BY age;
降序:
代码语言:javascript复制SELECT * from student_db ORDER BY age DESC;
6.SQL INSERT INTO 语句
INSERT INTO 语句用于向表中插入新记录。
插入一条橘子的记录
代码语言:javascript复制INSERT INTO student_db VALUES ('6','橘子', 5, '女', '云南', 'CN');
7.SQL UPDATE 语句
UPDATE 语句用于更新表中已存在的记录。
修改李四的性别为男
代码语言:javascript复制UPDATE student_db SET sex='男' WHERE name='李四';
8.SQL DELETE 语句
DELETE 语句用于删除表中的行。执行DELETE 语句 注意加上where 条件
删除姓名为张三的这一行数据
代码语言:javascript复制DELETE FROM student_db WHERE name='张三';
9.SQL SELECT TOP 子句
SELECT TOP 子句用于规定要返回的记录的数目。
从 "student_db " 表中选取头两条记录:
显示student_db表的前两行数据
代码语言:javascript复制SELECT * FROM student_db LIMIT 2;
10.SQL LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
查找出国家名字带A的
代码语言:javascript复制SELECT * FROM student_db WHERE country LIKE '%A%';
11.SQL 通配符
SQL 通配符用于搜索表中的数据。
SQL % 通配符
代码语言:javascript复制SELECT * FROM student_db WHERE country LIKE '%A%';
SQL _ 通配符
代码语言:javascript复制SELECT * FROM student_db WHERE country LIKE '_A';
SQL [charlist] 通配符
MySQL 中使用REGEXP或NOT REGEXP运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
选取 couintry以 "U" 开始的所有国家
代码语言:javascript复制SELECT * FROM student_db WHERE country REGEXP '^[U]';
12.SQL IN 操作符
IN 操作符允许在 WHERE 子句中规定多个值。
代码语言:javascript复制SELECT * FROM student_db WHERE country IN ('CN','JA');
13.SQL BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
代码语言:javascript复制SELECT * FROM student_db WHERE age BETWEEN 10 AND 30;
14.SQL 别名
SQL别名,可以为表名称或列名称指定别名。
代码语言:javascript复制SELECT name as 姓名, age as 年龄, sex as 性别 from student_db;
再加一张score_db表
student_db 再插入一条数据
代码语言:javascript复制INSERT INTO student_db VALUES (3, '西瓜', 18, '女', '北京', 'CN');
表的别名:
代码语言:javascript复制SELECT st.id,st.name,st.age,st.sex,sc.object,sc.score from student_db as st,score_db as sc WHERE st.id=sc.sid and sc.score >80;
15.SQL INNER JOIN 关键字
INNER JOIN 关键字在表中存在至少一个匹配时返回行。
代码语言:javascript复制SELECT
st.id,st.name,st.age,st.sex,sc.object,sc.score
from student_db as st
INNER JOIN score_db as sc
on st.id=sc.sid
ORDER BY st.age;
16.SQL LEFT JOIN 关键字
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
student_db 表 插入一条记录
代码语言:javascript复制INSERT INTO student_db VALUES (7, '苹果', 25, '女', '苏州', 'CN');
左连接
代码语言:javascript复制SELECT
st.id,st.name,st.age,st.sex,sc.object,sc.score
from student_db as st
LEFT JOIN score_db as sc
on st.id=sc.sid
ORDER BY st.age;
17.SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
score_db 表插入一条数据
代码语言:javascript复制INSERT INTO score_db VALUES (8, 8, '英语', 100);
右连接
代码语言:javascript复制SELECT
st.id,st.name,st.age,st.sex,sc.object,sc.score
from student_db as st
RIGHT JOIN score_db as sc
on st.id=sc.sid
ORDER BY st.age desc ;
18.SQL SELECT INTO 语句
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
代码语言:javascript复制SELECT *
INTO student1_db
FROM student_db;
19.SQL INSERT INTO SELECT 语句
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
代码语言:javascript复制INSERT INTO table2
SELECT * FROM table1;
20.SQL CREATE DATABASE 语句
CREATE DATABASE 语句用于创建数据库。
代码语言:javascript复制CREATE DATABASE dbname;
21.SQL CREATE TABLE 语句
CREATE TABLE 语句用于创建数据库中的表。
代码语言:javascript复制CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
22.SQL 约束(Constraints)
在 SQL 中,我们有如下约束:
- NOT NULL - 指示某列不能存储 NULL 值。
- UNIQUE - 保证某列的每行必须有唯一的值。
- PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
- CHECK - 保证列中的值符合指定的条件。
- DEFAULT - 规定没有给列赋值时的默认值。
后续继续补充。。。