文章目录
一些关键字和约束的含义介绍
NULL:表示该列是否能存储 NULL 值;
Key:表示该列是否已编制索引;
PRI:表示该列是此表主键的一部分;
UNI:表示该列是 UNIQUE 索引的一部分;
MUL:表示在列中某个给定值允许出现多次;
Default:表示该列是否有默认值,如果有的话值是多少;
Extra:表示可以获取的与给定列有关的附加信息。
NOT NULL约束:确保某列不能有 NULL 值。
DEFAULT 约束:当某列没有指定值时,为该列提供默认值。
UNIQUE 约束:确保某列中的所有值是不同的。
PRIMARY Key 约束:唯一标识数据库表中的各行/记录。
CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。
查看表的结构、查看表和查看数据库
查看表的基本结构
DESC 表名;
查看表
show tables;
查看数据库
show databases;
添加、删除约束
如何给表添加外部关键字
CONSTRAINT 外键名 FOREIGN KEY(字段名) REFERENCES 主表名(主键名)
怎么添加唯一约束
关键词 UNIQUE
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
)
怎么添加非空约束
关键词:NOT NULL
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
)
怎么使用默认约束
关键词:DEFAULT
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT ‘男’
) DEFAULT CHARSET=utf8;
添加主键
语法规则:alter table 表名 add primary key(字段名);
删除表的外键约束
语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。
添加约束
语法规则:alter table 子表表名 add constraint 外键名 foreign key(字段名) references 父表表名(字段名);
删除表
DROP TABLE 表名;
查看数据表详细结构
语法规则为:SHOW CREATE TABLE 表名\G; 。
修改、删除、添加字段
修改表名
语法规则为:ALTER TABLE 旧表名 RENAME 新表名; 。
修改字段名
语法规则为: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; 。
修改字段数据类型
语法规则为: ALTER TABLE 表名 MODIFY 字段名 数据类型; 。
添加字段
语法规则为:
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER] 已存在字段名; 。
first:添加在第一列
after:添加在指定列的后边
删除字段
语法规则为: ALTER TABLE 表名 DROP 字段名; 。
修改字段的排列位置
语法规则为: ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRST|AFTER 字段2; 。
first:第一列
after:指定列的后边
插入、更新、删除
为表的所有字段插入数据
语法规则为:
INSERT INTO 表名 (字段名)
VALUES (内容);
为表同时插入多条记录
语法规则为:
INSERT INTO 表名 (字段名)
VALUES (内容1), (内容2), (内容3); 。
更新表中指定的内容
语法规则为: UPDATE 表名 SET 字段名1 = 新内容1, 字段名2 = 内容2, 字段名3 = 内容3 WHERE 过滤条件(第几个元组); 。
删除表中的指定行
语法规则为: DELETE FROM 表名WHERE 条件语句(元组id)(多个用or连接删除); 。
删除表中的所有数据
语法规则为: DELETE FROM 表名 WHERE 1=1; 。
| 小提示: TRUNCATE TABLE 语句也可以用来删除表中的所有记录。但是与 DELETE 不同的是,TRUNCATE TABLE 语句直接删除的是表,而不是表中的内容,删除结束后还会重新创建一个表。所以它的执行速度会比 DELETE 语句快。 语法为:`TRUNCATE TABLE 表名;` |
带关键字的查询
查询数据表中指定字段的内容
SELECT 基本语法规则为: SELECT 字段名 FROM 表名; 。
语法规则为: SELECT 字段名1, 字段名2 FROM 表名; 。
查询数据表中的所有内容
语法规则为: SELECT *FROM 表名;
带IN关键字的查询
语法规则为: SELECT 字段名(*代表输出所有列) FROM 表名 WHERE 字段名 IN (n1,n2,n3,…); 。
select 字段名 /外层查询/父查询/
from 表名 where 字段名(select 字段名 form 子表 where (判断条件或字段名 in()) /子查询/
带NOT IN关键字的查询
语法规则为: SELECT 字段名(相当于投影输出你想要的那一列) FROM 表名 WHERE 字段名 NOT IN (n1,n2,n3,…);
带NOT IN关键字的查询
带BETWEEN AND关键字的查询
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN n1 AND n2; 。
带NOT IN关键字的查询
带NOT BETWEEN AND关键字的查询
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 NOT BETWEEN n1 AND n2; 。
带NOT IN关键字的查询
使用通配符%模糊匹配数据内容
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘字符%’; 。 其中 % 的位置可以根据需要在字符间变化。
带NOT IN关键字的查询
使用通配符_模糊匹配数据内容
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘字符_’; 。 其中_的位置可以根据需要在字符间变化。
带NOT IN关键字的查询
查询空值
语法规则为: SELECT 字段名 FROM 表名 WHERE 字段名 IS NULL; 。
去除重复结果
语法规则为: SELECT DISTINCT 字段名 FROM 表名; 。
带AND关键字的多条件查询
语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 AND 表达式2; 。
带OR关键字的多条件查询
语法规则为: SELECT 字段名 FROM 表名 WHERE 表达式1 OR 表达式2; 。
SELECT ID, prod_name, prod_price FROM Mall_products WHERE ID IN(‘BNBG01’, ‘BR01’);
| 小提示: 虽然两种写法功能一样,但是我们更推荐使用 IN 关键字。因为它不仅逻辑清晰,执行的速度也会快于 OR 关键字。更重要的是,使用 IN 关键字,我们以后可以执行更加复杂的嵌套语句。 |
对查询结果排序
SELECT 字段名 FROM 表名 ORDER BY 字段名 [ASC[DESC]];
ASC 升序关键字
DESC 降序关键字
分组查询的单独使用
SELECT 字段名 FROM 表名 GROUP BY 字段名 having 判断条件;
mysql函数
LIMIT的使用
SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;
COUNT()、SUM()、AVG()、MAX、MIN函数的简单用法
| COUNT()函数是用来统计记录的总条数。 |
| SUM()函数是对数据表的某列进行求和操作。 |
| AVG()函数是对数据表的某列进行求平均值操作。 |
| MAX()函数是求某列的最大数值。 |
| MIN()函数是求某列的最小数值。 |
连接查询
内连接查询
仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;
关键字:[inner] join … on。
语法:
表1 [inner] join 表2 on 表1.字段=表2.字段
语法解释:
| 从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和 department.id),大多数情况下为两张表中的主外键关系。 select (第一个表)表名.字段名 as 新表中的字段名,第二个表名.字段名 as 新表的字段名 from 第一个表名 join 第二个表名 on 第二个表名.字段名=第一个表名.字段名; |
外连接查询
select (第一个表)表名.字段名 as 新表中的字段名,第二个表名.字段名 as 新表的字段名 from 第一个表名left/right join 第二个表名 on 第二个表名.字段名=第一个表名.字段名;
select 字段名,字段名… from 表名 A jion 表名 B on A.字段名=B.字段名 join 表名 C on…where 表达式。
复合条件连接查询
两个表
select (第一个表)表名.字段名 as 新表中的字段名,需要保留到新表的字段名,第二个表名.字段名 as 新表的字段名 from 第一个表名 join 第二个表名 on 第二个表名.字段名=第一个表名.字段名 where 表达式;
多个表
select 字段名,字段名,…from 表名 A,表名 B,…
where 表达式 and …and…
2万+

被折叠的 条评论
为什么被折叠?



