文章目录
运算符
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。**注释:**在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
AND | 与运算 |
OR | 或运算 |
SELECT查询
按字段值顺序查询
ASC(默认)升序查询,DESC 降序查询
SELECT column_name1, column_name2
FROM table_name
ORDER BY column_name, column_name2 ASC|DESC
INSERT插入
格式1,values括号需要插入对应字段的值
INSERT INTO table_name(column_name1, column_name2....) values(value1, value2...);
INSERT INTO table_name(column_name1, column_name2....) values(value1, value2...), (value3, value4 ..);
INSERT INTO table_name(column_name1, column_name2....) value(value1, value2...);
INSERT INTO table_name(column_name1, column_name2....) value(value1, value2...), (value3, value4 ..);
格式2, values括号需要插入所有字段的值
INSERT INTO table_name values(....);
INSERT INTO table_name values(....), (...);
INSERT INTO table_name value(....);
INSERT INTO table_name value(....), (...);
UPDATE更新
UPDATE table_name SET column_name = '更新值', column_name2 = '更新值' WHERE column = '字段值';
DELETE删除
DELETE FROM table_name where column_name = 'value';
建库
CREATE DATABASE BASE_NAME;
建表语句
CREATE TABLE tableName(
column_name1 type[(length)],
column_name2 type[(length)],
column_name3 type[(length)],
)
约束
UNIQUE唯一
CREATE TABLE test(
id INT UNIQUE,
number INT UNIQUE
)
CREATE TABLE test(
id INT UNIQUE,
number INT,
UNIQUE(number)
)
CREATE TABLE test(
id INT,
number INT,
UNIQUE(id,number)
)
注意!!格式1、2与格式3不同,格式1、2是单独列唯一,格式3是联合唯一
格式3:不能插入1,2 和1,2,但能插入1,2和1,3。而格式1、2都不能插入。
NOT NULL非空
CREATE TABLE test(
id INT,
number INT NOT NULL
)
PRIMARY KEY主键
单独列作为主键
CREATE TABLE test(
id INT PRIMARY KEY,
number INT,
NAME VARCHAR(255)
);
CREATE TABLE test(
id INT,
number INT,
NAME VARCHAR(255),
PRIMARY KEY(id)
);
联合列作为主键
CREATE TABLE test(
id INT,
number INT,
NAME VARCHAR(255),
PRIMARY KEY(id, number)
);
区别
类似于UNIQUE约束,当联合列作为主键时,(id,number)列可以插入(1,2),(2,2)。
FROEIGN KEY外键
CREATE TABLE country(
cid INT PRIMARY KEY,
“name” VARCHAR(20)
);
CREATE TABLE person(
pid INT PRIMARY KEY,
NAME VARCHAR(20),
c_id INT,
FOREIGN KEY(c_id) REFERENCES country(cid)
);
--删除外键--
ALTER TABLE 表名 DROP FOREIGN KEY 外键名字;
--添加外键--
ALTER TABLE 从表名 ADD CONSTRAINT 约束名 FOREIGH KEY(KEY_NAME) REFERENCES 主表名(KEY_NAME)
[ON DELETE REFERENCE_OPTION] [ON UPDATE REFERENCE_OPTION];
REFERENCE_OPTION可取以下值:
1.Restrict:如果子表中匹配的记录,主表不能进行UPDATE/DELETE操作。
2.No action:同Restrict。
3.Cascade: 主表进行UPDATE/DELETE操作,子表外键也跟着执行相应的操作。
4.set null:在父表上 update / delete记录时,将子表上匹配记录的列设为 null要注意子表的外键列不能为 not null。
5.**default:**父表有变更时, 子表将外键列设置成一个默认的值但Innodb不能识别。
要点:
- 外键值必须为指定对应列存在的值或者NULL(不推荐);
Check约束
--建表并添加check约束--
CREATE TABLE test(
number INT,
CHECK(number > 0)
);
--已有表添加check约束--
ALTER TABLE test ADD CHECK(number >= 0);
--删除check约束--
ALTER TABLE test drop check_name;
Check约束在MySQL中无效,只会分析,但会忽略。
DEFUALT默认值
CREATE TABLE test(
number INT DEFAULT 1,
NAME VARCHAR(20)
)
ALTER TABLE test
ALTER number SET DEFAULT 2;
TRUNCATE TABLE 语句
--清空表格数据--
TRUNCATE TABLE table_name;
TRUNCATE TABLE与DELETE的区别
TRUNCATE TABLE table_name;
DELETE FROM table_name;
--两者都是清空数据,但truncate table会重置id,delete不会--
其它
SELECT查询添加序列
select (@i:=@i+1) as rank , 字段 from 表名, (select @i:=0) as any_name;
--范例--
SELECT emp_no, salary ,(@i:=@i+1) AS RANK
FROM salaries ,(SELECT @i:=0) AS RANK_TABLE
WHERE to_date='9999-01-01'
ORDER BY salary, emp_no ASC;