ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

1.SQL语句笔记

2022-08-13 22:01:05  阅读:237  来源: 互联网

标签:语句 数据库 SQL 笔记 查询 字段 Select 表名 DDL


SQL语句的特点
不区分大小写,以分号为间隔。
SQL语句分成四大部分分别是DDL,DML,DQL,DCL四个小分支
/* 多行注释*/

单行注释

--单行注释
DDL(Data definition Language)数据库定义
DML(Data Mainpulation Language)数据库的表的增删改查
DQL(Data Query Language)数据库的查询
DCL(Data control Language)数据库权限的设置
SQL中的数据类型
整数类型:

  1. 整数:
    tinyint 1字节
    smallint 2字节
    mediumint 3字节
    int 4字节
    bigint 8字节
  2. 浮点数:
    flot 4字节
    double 8字节
    dectmal 大小取决于精度和标度
    比如说:123.45 精度就是5,标度就是2

age double(4,1)这个代表浮点数的4代表精度,1代表标度

age tinyint unsigned 这个代表无符号的(全都是正数的)
age tinyint signed 这个代表有符号的(默认)

字符类型:
char 定长字符串
varchar(长度)变长字符串
char(10)即使你本身数据占用了1个字符其他会用空格补成10个字符的
varchar(10)如果存储1个字符的他就占用一个字符
char的性能会高一些,varchar的性能会低一些因为varchar使用的时候要计算一些大小.

blob(二进制数据,比如安装包,视频,音乐等):
tinyblob
mediumblob
blob
longblob
text(文本数据):
tinytext
mediumtext
text
longtext

日期类型:
data:
大小3字节,描述的是 年-月-日
time:
大小3字节,描述的是 时-分-秒
year:
大小1字节,描述 年
datatime:
大小8字节,描述的是 年-月-日 时-分-秒
timestamp:
大小4字节,描述的是 年-月-日 时-分-秒
需要注意的是,最大是2038年-1月-19号

DDL的语法(database definition lanuge)
DDL对数据库的操作
DDL创建数据库
Create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
DDL删除数据库
Drop database [if exists] 数据库名
DDL查询数据库
Show databases;显示所有数据库
Select database()查询你当前所处的数据库
DDL进入单个数据库
Use 数据库名;
DDL对表的操作
DDL查询表格
Desc 表格名;查询数据库内其中一个表格的内容
Show tables;显示当前数据库的所有表格
Show create table 表名;查询创建表格的命令语句
DDL创建数据库中的表格
Create table 表格名(
字段1 类型 [comment ‘注释],
字段2 类型 [comment ‘注释’]
) [comment ‘注释’];
DDL删除数据库中的表格
Drop table [if exists] 表名;
DDL对表格内容的添加
Alter table 表名 add 字段 类型 [comment ‘注释内容’] [约束条件]
DDL对表格内容的修改
Alter table 表名 change 旧的字段 新的字段 类型 [comment ‘注释内容’] [约束条件]
DDL对表格内容的删除
Alter table 表名 drop 字段
DDL对表格名字的修改
Alter table 表名 rename to 新表名

DML的语法(对数据库的表结构的增删改)
Insert(增加表数据)
语法:
给指字段添加数据
insert into 表名(字段1,字段2,字段3….) values(值1,值2,值3….)
给全部字段添加数据
Insert into 表名 values(值1,值2,值3,…)
批量添加
insert into 表名(字段1,字段2,字段3….) values(值1,值2,值3….) ,(值1,值2,值3….)…..后面加n个括号即可
Insert into 表名 values(值1,值2,值3,…), (值1,值2,值3,…) ,(值1,值2,值3,…)…

注意要点:字符串和日期要加引号,字段和值要一一对应

Update(修改表数据)
语法:
Update 表名 set 字段1=值1,字段2=值2,字段3=值3…….[where 条件];
如果不加添加就对整章表进行修改,
例如
Update 表名 set name=’hello’ where id = 1;
就是修改id=1的名字为hello
Delete(删除表数据)
语法:
Delete from 表名 [where 条件]
如果不加条件就删的是所有
注意:delete语句删除的是一整行,如果要删除某一字段的就用uppdate语句把要删除的字段值设置为none即可
.DQL(数据库查询)
基本查询:
Select 字段1,字段2,字段3……. From 表名 查询多个字段
Select * from 表名 查询所有字段
Select 字段1[as 别名1] 字段2 [as 别名2]….from 表名 给查询的字段设置别名
Select distinct 字段1,字段2,…from 表名 查询,同时去重
条件查询:
语法:
Select 字段列表 from 表名 where 条件列表;

其中 in(…)只要能满足列表中一个值即可
like 是模糊匹配,¬_代表单个字符 %代表任意字符
用法:
Select *from emp where name like ‘’;代表查询名字为俩个字的
Select *from emp where idcard lie ’%x’代表身份证最后一位是x的
如果要用多个条件是
Select * from emp where name like ’
’ and gender=’男’;

聚合函数:
聚合函数是指将一列数据作为整体进行纵向计算
常见函数

语法:
Select 聚合函数(字段1,字段2,字段…) from 表名
分组查询:
语法:
Select (字段列表) from 表名 [where 条件] group by 分组字段名 [having 分组后的过滤条件];

Where和having的区别

  1. where是分组前的过滤。Having是分组后的过滤
  2. where无法对聚合函数判断但是having可以
    执行顺序,where->聚合函数->having
    排序查询:
    语法:
    Select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2….
    排序方式:
    Asc(默认,升序)
    Desc(降序)
    多字段排序中:如果第一个字段值相同就按第二个字段进行排序
    分页查询(mysql特有):
    语法:
    Select 字段列表 from 表名 limit 起始索引,查询记录数;

查询记录数:

起始索引值=(要查询的页数–1)查询记录数
例如第二页有10条记录数,起始索引就是(2-1)
10=10
如果查询第一页数据直接 limit 10,不需要写起始索引

编写顺序:
Select 字段列表 from 表名 where 条件列表 group by 分组字段 having 分组后的条件列表 order by 字段 顺序类型 limit 起始索引,查询记录次数;
执行顺序:
From 表名 where 条件列表group by 分组字段 having 分组后的条件列表select指定查询字段order by 字段 顺序类型-limit 分页查询

DCL:
DCL管理用户:
查询用户
在mysql中所有的用户都存在系统mysql数据库中
Use mysql;进入
Select * from user;查询用户

创建用户
Create user ‘用户名’@’主机名’ identified by ‘访问密码’;
主机名写 locathost 就只能在本地主机访问
% 代表可以任意主机访问数据库

修改访问密码
Alter user ‘用户名’@’主机名’ identified with mysql_native_password by
‘访问密码’;

删除用户
Drop user ‘用户名’@’主机名’;
DCL权限控制:
显示有哪些权限
Show grants for ‘用户名’@’主机名’;
给予权限
Grant 权限列表 on 数据库.表 to ‘用户名’@’主机名’;
Grant all on数据库1.* to ‘用户名’@’主机名’;将数据库1中所有表的权限给用户
撤销权限
revoke 权限列表 on 数据库名.表名 from ‘用户名’@’主机名’;
多个权限用逗号分割,*代表所有
.就是所有数据库的所有表的权限

常见的权限:

标签:语句,数据库,SQL,笔记,查询,字段,Select,表名,DDL
来源: https://www.cnblogs.com/wdadwa/p/16584321.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有