解析:
NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必
须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
解析:
六种关联查询:
交叉连接(CROSS JOIN)
内连接(INNER JOIN)
外连接(LEFT JOIN/RIGHT JOIN)
联合查询(UNION 与 UNION ALL)
全连接(FULL JOIN)
交叉连接(CROSS JOIN)
解析:
mysql中的 in 语句是把外表和内表作 hash 连接,而 exists语句是对外表作 loop 循环,
每次 loop 循环再对内表进行查询。一直大家都认
为 exists 比 in 语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。
如果查询的两个表大小相当,那么用 in 和 exists 差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用 exists,子查询表小的用 in。
not in 和 not exists:如果查询语句使用了 not in,那么内外表都进行全表扫描,没有用
到索引;而 not extsts 的子查询依然能用到
表上的索引。所以无论那个表大,用 not exists 都比 not in 要快。
mysql 中 int(10)和 char(10)以及 varchar(10)的区别?
解析:
int(10)的 10 表示显示的数据的长度,不是存储数据的大小;
chart(10)和 varchar(10)的 10 表示存储数据的大小,即表示存储多少个字符。
int(10) 10 位的数据长度 9999999999,占 32 个字节,int型 4 位
char(10) 10 位固定字符串,不足补空格 最多 10 个字符
varchar(10) 10 位可变字符串,不足补空格 最多 10 个字符
char(10)表示存储定长的 10 个字符,不足 10 个就用空格补齐,占用更多的存储空间
varchar(10)表示存储 10 个变长的字符,存储多少个就是多少个,空格也按一个字符存储,
这一点是和 char(10)的空格不同的,char(10)的空格表示占位不算一个字符
解析:
应用服务器与数据库服务器建立一个连接
数据库进程拿到请求 sql
解析并生成执行计划,执行
读取数据到内存并进行逻辑处理
通过步骤一的连接,发送结果到客户端
关掉连接,释放资源