1.SQL介绍
结构化查询语言。
SQL标准:SQL92 SQL99
5.7版本,SQL_Mode 严格模式
2.SQL的作用
SQL用来管理和操作MySQL内部的对象:
库:库名,库属性
表:表名,表属性,列名,记录,列属性和约束
3.SQL语句的类型
DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据查询语言
4.数据类型
4.1 作用
控制数字的规范性,让数据具有具体含义,在列上进行控制。
4.2 种类
字符串
char(32):定长长度32的字符串。存储数据时,一次性提供32字符长度的存储空间,少的用空格填充。
varchar(32):可变长度的字符串类型。存数据时,首先进行字符串长度判断,按需进行存储空间的分配,会单独占用一个字节存储字符长度。长度超过255,需要两个字节长度记录字符长度。
enum 枚举类型
数字
tinyint 从 0 到 255 的整型数据。存储大小为 1 字节。
int 从-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字),存储大小为 4 个字节。
时间
datetime
timestamp
5.表属性
存储引擎:engine = innoDB
字符集:charset = utf8mb4
6.列的属性和约束
主键:primary key(PK)
非空 not null
唯一:unique 不能重复
索引
自增 auto_increment
无符号unsigned
注释 comment
7.SQL语句应用
7.1 DDL数据定义语言
7.1.1 库
1.建库
create database 库名 charset utf8mb4;
show databases;
show create database 库名;
2.改库
alter database 库名
7.1.2 表
建库建表规范:
1.库名表名是小写字母
2.不能以数字开头
3.不支持—,支持_
4.内部函数名不能使用
5.名字和业务内容相关
(1)建表
create table oldguo (
ID int not null primary key AUTO_INCREMENT comment '学号',
name varchar(255) not null comment '姓名',
age tinyint unsigned not null default 0 comment '年龄',
gender enum('m','f','n') NOT null default 'n' comment '性别'
)charset=utf8mb4 engine=innodb;
(2)改表
alter table 表名 add telnum char(11) not null unique comment '手机号'; ##添加列
alter table 表名 drop 列名;##删除列(危险!不带表生产操作)
alter table student add wechat varchar(255) not null unique comment '微信' after id;##在指定列后添加列
alter table 表名 modify 属性名 varchar(128) not null ##修改表属性
insert into 表名 values (##根据表内列的内容依次录入,以逗号隔开,字符串加单引号,数字不加单引号) ;##最简单的方法插入数据
insert into 表名(##要录入的列名,以逗号隔开) values (##根据指定的列内容依次录入,以逗号隔开,字符串加单引号,数字不加单引号)##最标准的插入数据
update 表名 set 要修改的列内容 where 指定列 ;##修改已存在的数据
(3)查表
desc 表名;
(4)清空表数据
方法1:
truncate table 表名;
truncate物理删除,将表段中的区清空,不会产生碎片。性能较高。
delet from 表名;
delet 逻辑删除,逐行删除,不会降低自增长的起始值。效率低,会产生碎片,影响性能。
方法2: 使用update代替delete进行伪删除
1.添加状态列state(1代表存在,0代表删除)
alter table 表名 add state tinyint not null default 0;
2.使用update模拟delete
delet from 表名 from id=6;替换为
update 表名 set state=1 where id=6;
select * from 表名;
3.查询语句修改
select * from 表名;改为
select * from 表名 where state=0;
面试题:
1,char和varchaar的区别?
(1)长度var是255,varchar是65535
(2)定长,变长
2,char和varchar如何选择?
(1)char类型,固定长度的字符串列,比如手机,比如,手机号,身份证号,银行卡号等。