SQL 语法 - 入门数据库、数据表创建删除与增删改查操作

SQL 语法

本篇介绍 SQL 通用语法,首先注意 SQL 不区分大小写,包括字符串不区分大小写。

其次 SQL 具有多版本语法,略有不同,请注意区分。

数据库控制语句

SHOW DATABASES;  # 显示所有数据库

CREATE DATABASE <db>;  # 创建新的数据库

USE <db>;  # 设置活动数据库

DROP DATABASE <db>;  # 删除该数据库

表格控制语句

SHOW TABLES;  # 显示所有数据表

CREATE TABLE <tb> (<field1> <type1> <addition1>, ...);  # 创建数据表
# e.g. CREATE TABLE student (id int, name varchar(255), birth date);

TRUNCATE TABLE <tb>;  # 清空表记录
# equal to. DELETE FROM <tb> WHERE True;

DROP TABLE <tb>;  # 删除数据表

CREATE TABLE 的修饰词包括:

修饰词描述示例
IF NOT EXISTS不存在时创建CREATE TABLE IF NOT EXISTS student (id int);
PRIMARY KEY / KEY(后者仅部分版本)主键(至多一个)CREATE TABLE student (id int KEY);
UNIQUE不可重复(可空)CREATE TABLE student (id int UNIQUE);
NOT NULL不可为空CREATE TABLE student (id int NOT NULL);
AUTO_INCREMENT自增(必须为主键)CREATE TABLE student (id int KEY AUTO_INCREMENT);

常用数据类型

数据类型表达式描述
布尔型bit [   0 ,   1   ] [~0,~1~] [ 0, 1 ]
整型bigint [   − 2 63 ,   2 63 − 1   ] [~-2^{63},~2^{63}-1~] [ 263, 2631 ]
int [   − 2 31 ,   2 31 − 1   ] [~-2^{31},~2^{31}-1~] [ 231, 2311 ]
smallint [   − 32768 ,   32767   ] [~-32768,~32767~] [ 32768, 32767 ]
tinyint [   − 128 ,   127   ] [~-128,~127~] [ 128, 127 ]
实型decimal(size=10, d=0)高精度十进制,size 为总十进制位数,d 为小数十进制位数。
float单精度
double双精度
字符串char(size)定长字符串,size 为字符串长度。
varchar(size)变长字符串,size为字符串最长长度。
text变长字符串,无需指定 size ,当 varchar(size) 过大时会自动转换为 text
日期型date日期,格式 YYYYmmddYYYY-mm-dd ,部分版本检测日期错误,YYYY <0 或 >9999 非法。
time时间,格式 HHMMSSHH:MM:SS ,部分版本检测时间错误,HH <0 或 >23 非法。
datetime日期时间,格式 YYYY-mm-dd HH:MM:SSYYYYmmddHHMMSS,部分版本检测错误。

增删改查

插入数据

INSERT INTO <tb> VALUES (<value1>, ...);  # 插入记录
# INSERT INTO student VALUES (1, "Jamhus Tao", 20000229);

INSERT INTO <tb> (<field1>, ...) VALUES (<value1>, ...);  # 插入记录,仅添加指定列
# INSERT INTO student (id, name) VALUES (1, "Jamhus Tao");

查询数据

SELECT * FROM <tb>;  # 查找全部记录
# SELECT * FROM student;

SELECT <field1>, ... FROM <tb>;  # 查找全部记录的指定列
# SELECT name, birth FROM student;

SELECT DISTINCT ... FROM <tb>;  # 查找记录去除重复值

SELECT <tb1>.<field1>, ... FROM <tb1>, ...;  # 查找两个表的笛卡尔积

更改数据

UPDATE <tb> SET <field1> = <value1>, ... WHERE <condition>;
# UPDATE student SET name = "Mike", birth = 19991231 WHERE name = "Jamhus Tao" and birth = 20000229;

删除数据

DELETE FROM <tb> WHERE <condition>;
# DELETE FROM student WHERE id = 1;

修饰词

WHERE 筛选

... WHERE <condition>;
# SELECT * FROM student WHERE name = "Jamhus Tao";
# 除 INSERT INTO 均可使用 WHERE 筛选

表达式的运算符包括:

操作符描述示例补充
= <> > < >= <=比较运算符WHERE id <= 10在某些 SQL 版本中,<> 可作 !=
NOT AND OR逻辑运算符WHERE NOT name = "Jamhus Tao"
IN多值查找WHERE id IN (1, 2)
BETWEEN区间比较WHERE name BETWEEN "a" AND "b"如果使用字符串表示字典序,忽略大小写,含边界。
LIKE模式匹配WHERE birth LIKE "2000-%-%"

ORDER BY 排序

... ORDER BY <field1> [ASC|DESC], ...
# SELECT * FROM student ORDER BY id;  # 按 id 升序排序
# SELECT * FROM student ORDER BY name ASC, birth DESC;  # 首要按 name 升序排序, 次要按 birth 降序排序
# 只有 SELECT FROM 可使用 ORDER BY 排序

AS 别名

... <tb> AS <alias> ...  # 表别名, 用于快捷表示列, AS 可缺省, 使用了别名就不能使用原名
# SELECT s.name, c.name FROM student AS s, course AS c;
... <field> AS <alias> ...  # 列别名, 用于自定义输出列名, AS 可缺省
# SELECT student.name AS student, course.name AS course FROM student, course;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值