SQL学习-创建数据库、表增删改查

本文介绍了SQL语言的基础概念,包括其在数据库访问中的作用,以及DML(如SELECT,UPDATE,DELETE,INSERT)和DDL(如CREATEDATABASE,ALTERTABLE,INDEX)的关键操作。还涵盖了SQL中的其他重要特性,如数据约束、聚合函数、JOIN操作和GROUPBY/HAVING子句。
摘要由CSDN通过智能技术生成

SQL 是用于访问和处理数据库的标准的计算机语言。

什么是SQL

  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 ANSI 的标准计算机语言

SQL DML数据操作语言和DDL数据定义语言

DML部分:

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

DDL部分:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

创建数据库、表与插入数据

CREATE DATABASE sql-text;
CREATE TABLE `sql-text`.`text`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NULL,
  `score` varchar(255) NULL,
  `class` varchar(255) NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO text VALUES (2,'w', '33', '1');

DML

select

select语句用于查询表中数据,结果存储在一个结构表中

select 列名称 from 表名称  或者  select * from 表名称
select distinct

select distinct 用于返回唯一不同的值

select distinct 列名称 from 表名称
where

where 用于有条件的从表中选取数据

select 列名称 from 表名称 where 列 运算符 值
操作符描述
=等于
<> !=不等于
<小于
>大于
<=小于等于
>=大于等于
BETWEEN在某个范围内
like搜索某种模式
通配符描述
%代表零个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符
[!charlist]不在字符列中的任何单一字符
ps:使用单引号来环绕文本值,数值不用
ps: like使用时可用通配符
ps:between…and…使用时范围存在差异
and & or

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

order by

ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
降序 DESC,升序 asc

insert into

insert into向表格中插入数据

insert into 表名称 values(1,值2,...)
insert into table_name (1,2,...) values (1,2,...)
update

update 语句用于修改表中的数据

update 表名称 set 列名称 = 新值 where 列名称 = 某值
delete

delete 用于删除数据表中某行

delete from 表名称 where 列名称 =
top

top用于规定返回的记录的数目

select top num|percent column_name from table_name
in

IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
Alias(别名)

通过使用 SQL,可以为列名称和表名称指定别名(Alias)
表的 SQL Alias 语法

SELECT column_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 语法

SELECT column_name AS alias_name
FROM table_name
join

inner join 与 JOIN用法一致 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
  • LEFT JOIN: 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
  • RIGHT JOIN: 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
union

union操作符用于合并两个或多个 SELECT 语句的结果集。
union 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

默认地,uniom 操作符选取不同的值。如果允许重复的值,请使用 union all

select into

select into 语句从一个表中选取数据,然后把数据插入另一个表中.
常用于创建表的备份复件或者用于对记录进行存档.

  • 您可以把所有的列插入新表
SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

把希望的列插入新表

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

###SQL约束

创建数据库、表

create database 用于创建数据库

create database database_name
create table 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
约束
  • not null 约束强制列不接受NULL值,
  • unique 约束唯一标识数据库表中的每条记录,和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
  • primary key 约束唯一标识数据库表中的每条记录,主键必须包含唯一的值,主键列不能包含 NULL 值,每个表都应该有一个主键,并且每个表只能有一个主键
CREATE TABLE Persons
(
    column1 datatype null/not null,
    column2 datatype null/not null,
    CONSTRAINT 主键约束名 PRIMARY KEY (column1,column2)
);
  • foreign key 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
CREATE TABLE 表名
(
    column1 datatype null/not null,
    column2 datatype null/not null,
    ...
    CONSTRAINT 外键约束名 FOREIGN KEY  (column1,column2,... column_n) 
    REFERENCES 外键依赖的表 (column1,column2,...column_n)
    ON DELETE CASCADE--级联删除
);
  • check
    check 约束用于限制列中的值的范围
  • default
    default 约束用于向列中插入默认值

DDL

create index

create index 语句用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据

CREATE INDEX index_name
ON table_name (column_name)

CREATE UNIQUE INDEX index_name
ON table_name (column_name)
drop

drop 语句可以轻松地删除索引、表和数据库

ALTER TABLE table_name DROP INDEX index_name   删除索引
DROP TABLE 表名称   删除表
DROP DATABASE 数据库名称    删除数据库
TRUNCATE TABLE 表名称    删除表内容 保留表结构
alter table

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     改变表中列的数据类型
auto increment

auto increment 自动地创建主键字段的值

date
函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间按的单独部分
DATE_ADD()给日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间

SQL函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值

  • AVG() - 返回平均值
  • COUNT() - 返回行数
  • FIRST() - 返回第一个记录的值
  • LAST() - 返回最后一个记录的值
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

SQL Scalar 函数基于输入值,返回一个单一的值。

  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符,MySql 中使用
  • SubString(字段,1,end) - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式
GROUP BY

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
EXISTS

EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值