mysql总结

一、SQL概述

1.sql语言规范

  1. 关键字尽量大写,不要缩写和分行
  2. 字符串型和日期时间类型使用单引号
  3. 别名使用双引号,不建议省略as
  4. 所有标点符号都是英文输入
  5. 所有引号,括号都是成对结束的
  6. 单行注释# 或者 – 多行注释/* …*/

2.命名规则

  • 数据库、表名不得超过30个字符,变量名限制为29个字符
  • 只能包含A-Z,a-z,0-9,_共63个
  • 不能在对象名的字符间留空格
  • 避免重名,和方法冲突
  • 关联表的数据类型和字段名要一直

3.SQL分类

  • DDL:数据定义语言,包括CREATE,DROP,ALTER等
  • DML: 数据操作语言, 包括INSERT, DELETE, UPDATE, SELECT等
  • DCL: 数据控制语言,包括GRANT, REVOKE, COMMIT, ROLLBACK,
    定义数据库, 表,字段, 用户的访问权限和安全级别

二、数据库查询

// 基本查询
SELECT ... FROM
// 去除重复行
SELECT DISTINCT...FROM
// 空值参与运算 ,所有运算符或列值遇到null值,运算的结果都为null
// 显示表结构
DESC TABLENAME
DESCRIBE TABLENAME
// 过滤数据, WHERE紧跟FROM
SELECT ... 
FROM ...
WHERE

比较运算符

  • BETWEEN … AND包含边界
  • IN(列表)
  • LIKE ‘%’表示零个或多个字符,‘_'一个字符

转义符\, 也可以用escape, 如下表示$是一个转义符

SELECT job_id
FROM   jobs
WHERE  job_id LIKE ‘IT$_%‘ escape ‘$‘;

内查询和外查询
左连接和又连接
自连接和非自连接

约束

什么是约束?

  • 为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制。

  • 可以在创建表时规定约束,或者在表创建后通过Alter table语句规定约束

  • 根据约束数据列的限制,约束可分为单列约束和多列约束

  • 根据约束范围可分为列级约束和表级约束

  • 根据作用可分为
    NOT NULL 非空约束
    UNIQUE唯一约束(默认创建一个唯一索引)
    PRIMARY KEY 主键(非空且唯一)约束
    FOREIGN KEY 外键约束
    CHECK 检查约束(MYSQL不支持)
    DEFAULT默认值约束

查看某个表已有的约束

SELECT * FROM information_schema.`TABLE_CONSTRAINTS` WHERE table_name = 'books'

UNIQUE约束

  • 同一个表可以有多个唯一约束
  • 唯一约束可以是某一列或者多列组合
  • 如果不指定名称,默认是列名
  • MYSQL会给唯一约束的列上默认创建一个唯一索引
    两种方式
CREATE TABLE t_course(
	cid int PRIMARY KEY,
	cname VARCHAR(100) UNIQUE,
	description VARCHAR(200)
);

CREATE TABLE USER(
    id INT NOT NULL,
    NAME VARCHAR(25),
    PASSWORD VARCHAR(16),
    -- 使用表级约束语法
    CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
);

创建表后再增加约束有3种方式

ALTER TABLE USER
ADD UNIQUE(NAME,PASSWORD);
ALTER TABLE USER
ADD CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD);
ALTER TABLE USER
MODIFY NAME VARCHAR(20) UNIQUE;

删除约束

  • 删除唯一约束只能通过删除唯一索引的方式删除
ALTER TABLE USER
DROP INDEX uk_name_pwd;
  • 删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样
  • 如果创建唯一约束时未指定名称,如果是单列,默认和列名相同,如果是多列组合,默认和第一个列名相同。可以自定义
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值