2019-06-17 SQL基础应用

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类型,固定长度的字符串列,比如手机,比如,手机号,身份证号,银行卡号等。

你可能感兴趣的:(2019-06-17 SQL基础应用)