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/85625956

2>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类型来存储收集号

(2)字符类型

常用的字符类型:
char(10) :定长的字符串类型,在存储字符串时,最大字符长度10个,立即分配10个字符长度的存储空间,如果存不满,空格填充。
varchar(10):变长的字符串类型看,最大字符长度10个。在存储字符串时,自动判断字符长度,按需分配存储空间。
enum('bj','tj','sh'):枚举类型,比较适合于将来此列的值是固定范围内的特点,可以使用enum,可以很大程度的优化我们的索引结构。
注意:
对于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会受到时区的影响

(4)二进制类型(一般不使用)

neo4J:专门用于图片、视频存储

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基础)相关推荐

  1. MySQL基本的SELECT语句,SQL语言概述,基础和重要不冲突,完整详细可收藏

    文章目录 1.SQL语言的分类 2.SQL语言的规则与规范 3.基本的SELECT语句 4.DESCRIBE显示表结构 5.WHERE过滤数据 1.SQL语言的分类 SQL语言在功能上主要分为如下3大 ...

  2. 【MySQL基础】MySQL概述及基本SQL语句

    1.MySQL概述 1.1.数据库相关概念 名称 全称 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase M ...

  3. 史上最简单MySQL教程详解(基础篇)之SQL语句以及预留关键字介绍

    SQL简单介绍 数据操作语句 (Data Manipulation Language,DML) 数据定义语句 (Data Definition Language ,DDL) 数据控制语句 (Data ...

  4. MySQL 基础 -- MySQL 数据类型说明(数值类型、字符串类型、日期时间类型)、SQL通用语法和SQL分类

    文章目录 1. 数据类型说明(数值类型.字符串类型.日期时间类型) 1.1数值类型 1.2 字符串类型 1.3 日期类型 1.4 数据类型练习:设计一张员工信息表 2. SQL通用语法和SQL分类 2 ...

  5. MySQL基础篇-SQL

    目录 一.DDL 1.库操作 2.表操作 1.查询创建 2.数据类型 3.案例 4.修改 5.删除 二.DML 1.添加数据 2.修改数据 3.删除数据 三.DQL 1.基础语法 2.基础查询 3.条 ...

  6. SQL Server 2012入门T-SQL基础篇:(2)SQL的两个基础概念

    这里介绍两个SQL的两个基本的概念,以方便后期的学习: (1)SQL全称structured query language,中文为结构化查询语言;它可以在各类数据库上使用,例如,mysql,oracl ...

  7. 零基础学SQL(1):初识数据库与SQL

    零基础学SQL(1):初识数据库与SQL 一.初识数据库 数据库是将大量数据保存起来,通过计算机加工而成的可以 进行高效访问的数据集合.该数据集合称为数据库(Database,DB).用来管理数据库的 ...

  8. 第1章 数据库系统与SQL基础知识!什么是SQL数据库系统?SQL类型?

    第1章  数据库系统与SQL基础知识 1.1  数据库系统基本概念 数据库和SQL构成了整个数据库系统,两者一个是用来存储数据,一个是用来读取数据.本节通过简单的概念入手,让读者对数据库系统有个大概的 ...

  9. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(3)

    [第八章]视图 创建视图 就是创建虚拟表,自动化一些重复性的查询模块,简化各种复杂操作(包括复杂的子查询和连接等) 注意视图虽然可以像一张表一样进行各种操作,但并没有真正储存数据,数据仍然储存在原始表 ...

  10. SQL数据库基础中的基础

    SQL数据库基础中的基础 1.数据库操作 0.0 提前准备 再开始操作之前,需要有数据库,如果没有安装的可以看我上一篇的内容.以下所有操作均在数据库上操作. 1.1 DDL操作 1.1.1 数据库操作 ...

最新文章

  1. Valid Sudoku leetcode java
  2. 谷歌将屏蔽一切与加密货币相关的广告 6月正式生效
  3. 十二省联考题解 - JLOI2019 题解
  4. 内核中的 likely() 与 unlikely()
  5. 嗐,别的95后一天两登Nature,你却还不知道有一款工具可以帮你校对英文文稿和回复审稿意见...
  6. java乱码解决方法
  7. a标签中href=javascript:;表示什么意思??
  8. python异常捕获_Python 异常的捕获、异常的传递与主动抛出异常操作示例
  9. python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证
  10. 如何使用VideoProc将MKV转换为MP4?
  11. Oracle Share Pool工作原理
  12. Python卸载报错:No Python 3.8 installation was detected
  13. mysql用sqluldr2导出_使用sqluldr2将oracle大量表数据快速高效导出
  14. java red5 流媒体服务_[Red5]Red5之Flash流媒体服务器的安装与使用教程完整版(组图)...
  15. 关于图书管理系统项目的大概思路
  16. 函数对称性常见公式_初中函数公式大全
  17. openglshader实现虚拟场景_OpenGL着色器教程
  18. 应用案例 | 2017款道奇RAM 1500车偶尔指南针无显示、空调不工作故障诊断
  19. 金山WPS c++ 一面面经
  20. Android编译gradle提示A problem occurred evaluating project ':example'.

热门文章

  1. 这几个小妙招让你学会如何压缩图片大小
  2. Unity Shader入门学习(1):基础shader
  3. Android Studio的报错提示:SSL peer shut down incorrectly
  4. 频谱聚类|拉普拉斯矩阵
  5. 史上最全的python的web开发和网络编程【附属详细解释+案例】
  6. 001 变量与数据类型
  7. 业余草:《名博是怎样炼成的》经典语句整理
  8. 大数据课程综合实验案例:网站用户行为分析
  9. 云诊所管理系统(联合诊疗)支持远程高清视频会诊
  10. 网络安全培训出来为什么比较好找工作?