MySQL-SQL基础应用(SQL基础)
1、SQL基础应用
1.1 SQL的介绍
1>SQL标准https://blog.csdn.net/weixin_33963189/article/details/90584378
SQL-92:https://blog.csdn.net/zhongmengya/article/details/5049025
SQL-99:https://blog.csdn.net/qq_23924249/article/details/856259562>SQL_MODE
https://blog.csdn.net/ccccalculator/article/details/70432123注:以上都是为了保证SQL语句的规范性
1.2 SQL的常用分类
DDL(Data Definition Language):数据定义语言
DCL(Data Control Language):数据控制语言
DML(Data Manioulation Language):数据操作语言
DQL(Data QueryLanguage):数据查询语言
1.3 表的核心属性介绍
1.3.1 列属性
1>数据类型
(1)数字类型
常用的数字类型:
tinyint : -128~127
int :-2^31~2^31-1
说明:手机号是无法存储到int的。一般是使用char类型来存储收集号
![](/assets/blank.gif)
(2)字符类型
常用的字符类型:
char(10) :定长的字符串类型,在存储字符串时,最大字符长度10个,立即分配10个字符长度的存储空间,如果存不满,空格填充。
varchar(10):变长的字符串类型看,最大字符长度10个。在存储字符串时,自动判断字符长度,按需分配存储空间。
enum('bj','tj','sh'):枚举类型,比较适合于将来此列的值是固定范围内的特点,可以使用enum,可以很大程度的优化我们的索引结构。
![](/assets/blank.gif)
注意:
对于char(10)和varchar(10)的数据类型
括号中表示的是,最多的字符个数.
具体占用字节长度如下:
基础字符a ------> 1字节 1 ------> 1字节 ? ------> 1字节
中文:张 ---gbk--> 2字节 张 ---uft8--> 3字节 张 ---utf8mb4=--> 4字节
(3)时间类型
常用的时间类型:
datetime范围为从 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。timestamp1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。timestamp会受到时区的影响
![](/assets/blank.gif)
(4)二进制类型(一般不使用)
neo4J:专门用于图片、视频存储
![](/assets/blank.gif)
2>约束
常见约束:
not null:非空
unique key:唯一
primary key:主键(非空且唯一)说明:a> 一个表有且一个主键列,最好是一个无关列数字列,一般会在表中设置自增长的id列b> 尽量每个列非空,如果无法保证,可以追加默认值c> 手机号、身份证号、银行卡号……种类的列设定为UK(unique key)
3>其他类型
unsigned:无符号,一般是在int或tinyint后添加的附加属性
default:设定默认值
auto_increment:数字列自增长
comment:注释信息
1.3.2 表属性
1>存储引擎
engine=xxx,如:engine=innodb
2>字符集及校对规则
字符集:gbk:专门存简体中文utf8:特点:中文字符占3个字符utf8mb4(推荐):是utf8的超级特点:中文字符占4个字符查看支持的字符集:show charset;校对规则(collation):校对规则是跟着字符集走的查看所有的字符集:show collationutf8mb4_general_ci:通用的校对,默认,不区分大小写utf8mb4_bin:区分大小写修改校对规则:ALTER DATABASE school CHARSET utf8mb4 COLLATE utf8mb4_bin
utf8与utf8mb4的区别?
a> utf8-->中文字符占3个字符,而utf8mb4-->中文字符占4个字符
b> utf8mb4支持emoji字符
c> utf8mb4支持ü
1.4 DDL语句
1.4.1 库定义
1>建库
CREATE DATABASE school CHARSET utf8mb4;
建库的规范:
- 库名是小写
- 库名不能是数字开头
- 库名要和业务有关
- 建库时需要设定字符集
2>删库
DROP DATABASE school;
3>修库
\\修改test库的字符集
wenjuan[(none)]>alter database test charset utf8mb4; \\修改test库的字符集和校对规则(默认utf8mb4_general_ci)
wenjuan[(none)]>ALTER DATABASE test CHARSET utf8mb4 COLLATE utf8mb4_bin
4>查库(DQL)
wenjuan[(none)]>show databases; \\查询所有的库
+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| mysql |
| performance_schema |
| school |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
wenjuan[(none)]>show create database school; \\查询指定库的属性
+----------+--------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------+
| school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)wenjuan[(none)]>
1.4.2 表定义
1>建表
标准的建表语句:
CREATE TABLE xs(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
NAME VARCHAR(20) NOT NULL COMMENT '姓名',
age TINYINT NOT NULL DEFAULT 0 COMMENT '年龄',
sex CHAR(1) NOT NULL DEFAULT 'n' COMMENT '性别',
shengfen ENUM('bj','sh','cq') NOT NULL DEFAULT 'bj' COMMENT '省份',
shijian DATETIME NOT NULL DEFAULT NOW() COMMENT '入学时间'
)ENGINE=INNODB CHARSET=utf8mb4;
建表规范:
- 表名小写,无数字开头,与业务有关
- 表中必须有主键,一般是一个自增长的无关列
- 选择合适的数据类型,字符长度要适中
- 每个列尽量是非空,并设定默认值
- 每个列必须要有注释
- 建表时必须设置存储引擎和字符集
查看表结构信息:
DESC xs;
SHOW CREATE TABLE xs;
2>改表
(1)添加(重要)
举例1:在xs表中添加手机号列?(常用)
ALTER TABLE xs ADD shouji CHAR(11) NOT NULL UNIQUE KEY COMMENT '手机号';举例2:在xs表中的sex后面添加weixin列?
ALTER TABLE xs ADD weixin VARCHAR(64) NOT NULL UNIQUE KEY COMMENT '微信号' AFTER sex;举例2:在xs表中的第一列位置添加QQ号列?
ALTER TABLE xs ADD qq VARCHAR(64) NOT NULL UNIQUE KEY COMMENT 'QQ号' FIRST;
(2)删除列(危险操作!!不代表生产操作!!!)
ALTER TABLE xs DROP qq;
(3)修改列属性
列名和属性都修改:(常用)ALTER TABLE xs CHANGE NAME sname VARCHAR(64) NOT NULL COMMENT '姓名'只改属性,不改列名:ALTER TABLE xf MODIFY sname VARCHAR(20);
1.5 DCL语句
授权:grant 权限 on 范围 to 用户 identified by 密码;
权限回收:revoke 权限 on 范围 from 用户;
1.6 DML语句
专门用做表的数据行的增删改查
1.6.1 insert
1>完整写法:
INSERT INTO xs(id,sname,age,sex,shengfen,shijian,shouji) VALUES(1,'小花',18,'m','bj',NOW(),'18820012009')
2>简化插入数据:
INSERT INTO xs VALUES(2,'lis',19,'f','sh',NOW(),'18820012229');
3>针对性的插入数据:
INSERT INTO xs(sname,age,sex,shengfen,shouji) VALUES('arex',12,'m','bj','18820982089')
4>批量插入数据:
INSERT INTO xs(sname,age,sex,shengfen,shouji) VALUES('小小',20,'f','sh','18340982089'),('李四',23,'m','sh','17708982089'),('港盛',19,'f','bj','12345678901')
1.6.2 update
UPDATE xs SET age=31 WHERE id=1
注意:update语句必须要加where条件,否则很危险
1.6.3 delete
DELETE FROM xs WHERE id=2
注意:delete语句必须要加where条件,否则很危险
delete与trancate的区别?(面试题)
truncate:
(1)DDL语句,清空整表的所有数据,按照区来删除的,属于物理删除.性能高.
(2)表所占用的空间,会立即释放.
delete:
(1)DML语句,清空整表的所有数据,按照行来删除的,属于逻辑删除.性能低.
(2)表所占用的空间,不会立即释放.
1.6.4 使用update替代delete实现伪删除
1>添加一个状态列state
ALTER TABLE xs ADD state TINYINT NOT NULL DEFAULT 1 ;
2>用update替代delete
原语句:DELETE FROM xs WHERE id=6;
改写后:UPDATE xs SET state=0 WHERE id=6;
3>查询业务语句进行调整
原语句:select * from xs;
改写后:select * from xs where state=1;
未完……
MySQL-SQL基础应用(SQL基础)相关推荐
- MySQL基本的SELECT语句,SQL语言概述,基础和重要不冲突,完整详细可收藏
文章目录 1.SQL语言的分类 2.SQL语言的规则与规范 3.基本的SELECT语句 4.DESCRIBE显示表结构 5.WHERE过滤数据 1.SQL语言的分类 SQL语言在功能上主要分为如下3大 ...
- 【MySQL基础】MySQL概述及基本SQL语句
1.MySQL概述 1.1.数据库相关概念 名称 全称 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase M ...
- 史上最简单MySQL教程详解(基础篇)之SQL语句以及预留关键字介绍
SQL简单介绍 数据操作语句 (Data Manipulation Language,DML) 数据定义语句 (Data Definition Language ,DDL) 数据控制语句 (Data ...
- MySQL 基础 -- MySQL 数据类型说明(数值类型、字符串类型、日期时间类型)、SQL通用语法和SQL分类
文章目录 1. 数据类型说明(数值类型.字符串类型.日期时间类型) 1.1数值类型 1.2 字符串类型 1.3 日期类型 1.4 数据类型练习:设计一张员工信息表 2. SQL通用语法和SQL分类 2 ...
- MySQL基础篇-SQL
目录 一.DDL 1.库操作 2.表操作 1.查询创建 2.数据类型 3.案例 4.修改 5.删除 二.DML 1.添加数据 2.修改数据 3.删除数据 三.DQL 1.基础语法 2.基础查询 3.条 ...
- SQL Server 2012入门T-SQL基础篇:(2)SQL的两个基础概念
这里介绍两个SQL的两个基本的概念,以方便后期的学习: (1)SQL全称structured query language,中文为结构化查询语言;它可以在各类数据库上使用,例如,mysql,oracl ...
- 零基础学SQL(1):初识数据库与SQL
零基础学SQL(1):初识数据库与SQL 一.初识数据库 数据库是将大量数据保存起来,通过计算机加工而成的可以 进行高效访问的数据集合.该数据集合称为数据库(Database,DB).用来管理数据库的 ...
- 第1章 数据库系统与SQL基础知识!什么是SQL数据库系统?SQL类型?
第1章 数据库系统与SQL基础知识 1.1 数据库系统基本概念 数据库和SQL构成了整个数据库系统,两者一个是用来存储数据,一个是用来读取数据.本节通过简单的概念入手,让读者对数据库系统有个大概的 ...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(3)
[第八章]视图 创建视图 就是创建虚拟表,自动化一些重复性的查询模块,简化各种复杂操作(包括复杂的子查询和连接等) 注意视图虽然可以像一张表一样进行各种操作,但并没有真正储存数据,数据仍然储存在原始表 ...
- SQL数据库基础中的基础
SQL数据库基础中的基础 1.数据库操作 0.0 提前准备 再开始操作之前,需要有数据库,如果没有安装的可以看我上一篇的内容.以下所有操作均在数据库上操作. 1.1 DDL操作 1.1.1 数据库操作 ...
最新文章
- Valid Sudoku leetcode java
- 谷歌将屏蔽一切与加密货币相关的广告 6月正式生效
- 十二省联考题解 - JLOI2019 题解
- 内核中的 likely() 与 unlikely()
- 嗐,别的95后一天两登Nature,你却还不知道有一款工具可以帮你校对英文文稿和回复审稿意见...
- java乱码解决方法
- a标签中href=javascript:;表示什么意思??
- python异常捕获_Python 异常的捕获、异常的传递与主动抛出异常操作示例
- python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证
- 如何使用VideoProc将MKV转换为MP4?
- Oracle Share Pool工作原理
- Python卸载报错:No Python 3.8 installation was detected
- mysql用sqluldr2导出_使用sqluldr2将oracle大量表数据快速高效导出
- java red5 流媒体服务_[Red5]Red5之Flash流媒体服务器的安装与使用教程完整版(组图)...
- 关于图书管理系统项目的大概思路
- 函数对称性常见公式_初中函数公式大全
- openglshader实现虚拟场景_OpenGL着色器教程
- 应用案例 | 2017款道奇RAM 1500车偶尔指南针无显示、空调不工作故障诊断
- 金山WPS c++ 一面面经
- Android编译gradle提示A problem occurred evaluating project ':example'.