MySQL_day3

1.SQL介绍

结构化查询语句
标准:sql 92 99 5.7版本开始加入了语法严格模式
Oracle 使用sql99 一直沿用语法严格(SQL_Mode)

2.SQL作用

用来管理和操作MySQL内部的对象(库,表)
库:库名
表:表明,表属性,列,记录,列属性和约束 数据类型

3.SQL语句类型

DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据查询语言

4.数据类型

控制输入的规范,规定分为。字符串,数字,时间,二进制
一个字节255

字符串: char varchar enum

** 1.char:**

 char(32) :定长长度为32的字符串。存储数据时,一次性提供32字符长度的存储空间。

2.varchar:

 varchar(32):可变长度的字符串类型最多。首先进行字符串长度判断,然后按需分配存储空间。并且单独占用一个字符长度来记录总的字符长度
 超过255个 需要两个字节长度来记录字符长度

3.enum :枚举类型

 enum('xx','cc',...)

定制数据类型 提高性能

数据行较多时,会影响索引
注意:数字类禁止使用enum类型

面试题:

 1.char和varchar的区别?
    255       65535
  定长(固定存储空间) 边长(按需)
 2.char和varchar如何选择?

char类型:固定长度比如手机号,身份证号等。不用判断长度。
varchar类型:不确定长度的字符串场景下使用。

数字:tinyint int 整数
tinyint 最多255
存负数:-128~127之间
int:
时间:timestamp datetime

5.表属性

存储引擎:engine
字符集:charset 必须是utf8mb4
utf8 中文 三个字节长度
utf8mb4 中文 四个字符长度 这才是真的utf8
支持emoji表情
排序规则(校对格则)collation(大小写是否敏感)
针对英文字符串大小写问题

6.列的属性和约束

主键:primary key(pk)
不可有重复,不可为空,自增
一个表中只能有一个主键。 可以多个列组成一个主键

非空:NOT NULL
对于普通列,尽量设置not null
默认值default:数字列的默认使用0 字符串类型,设置nil null

唯一:unique
不能重复

自增:auto_increment
针对数字列,自动生成顺序值

无符号unsigned

注释comment

7.SQL语句应用

1.DDL 数据定义语言

重复的库无法创建
建库

 create database oldchen charset utf8mb4;
 设置库的字符集可以继承给库下的表
 show create database oldchen; 查看建库语句
 show databases; 查看数据库

改库

 alter database oldchen1 charset utf8mb4;
 修改字符集

删库

 drop database oldchen1;

建表建库规范:

 Window下不区分大小写, 在windows下写的sql语句应用在
 Linux会出现无法识别  (Linux严格区分大小写)
 1.库名,表名尽量小写。
 2.不能以数字开头
 3.不能使用特殊符号支出(_)
 4.内部函数名不能使用
 5、名字和业务功能有关

desc 接 表
查看建表信息

 show create table 表;
 create table xxx like jjj;

创建一个和jjj一样的kkk表

8.DML 数据操作语句

insert: 插入数据

  insert into 学生表 values ()

update:更新表(更新数据行信息)

delete :删除表中数据

delete from xxx;逻辑逐行删除,不会降低自增长只其实值 ,(不会降低水位线)。效率低 占用I/O 碎片多影响表的未来性能(经常delete 也会生成碎片)

truncate table xxx; 物理层清空表总数据 将表段中的去进行清空,不会产生碎片。 会清空所有数据

伪删除:使用updata替代delete

添加状态列state(0代表存在,1代表删除)

 将delete from xxx where id=1;

替换为:

 updata xxx set state='1' where id='6';

业务语句修改

 SELECT * FROM oldguo ;

改为

 SELECT * FROM oldguo WHERE state=0;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。