SQL语句

SQL语句不区分大小写,关键字建议使用大写,必须再后面加分号
单行注释-- ,或#(mysql特有)
多行注释:/* */
数据库创建出来的默认字符集是utf8
sql分类
分类:DDL(操作数据库、表)
DML(增删改表中的数据)
DQL(查询表中的数据)
DCL(权限和访问)

操作数据库:
CRUD

create创建 : create
1.创建数据库:create database 数据库名称;
2.创建数据库,判断不存在,再创建:
create database if not exists 数据库的名称;
3.创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
4.创建db4数据库,判断是否存在,并指定字符集为gbk
create database if not exists db4 character set gbk;

Retrieve查询:
1.查询所有数据库的名称
show databases;
2.查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;

Updata修改
1.删除数据库
drop database 数据库名称;(操作比较危险)
2.判断数据库是否存在,存在再删除
drop database if exists 数据库名称

使用数据库
1.查询当前正在使用的数据库名称
select database();
2.使用数据库
use 数据库名称

2.操作表
Create创建
1.语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,

列名n 数据类型n
);
注意:最后一列,不需要加逗号(,)

数据类型:常见的
1.int 整数类型
age int
2.double 小数类型
score double(5,2)#最多五位,小数点后保留两位
3.date 日期,只包含年月日,yyyy-mm–dd
4.datetime 日期,包含年月日时分秒 yyyy–mm-dd hh:mm:ss
5.timestamp 时间戳类型 包含年月日时分秒 yyyy-mm-dd hh:mm:ss
如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6.varchar:字符串
name varchar(20)姓名最大20个字符
张三 两个字符

1.创建表
create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday data,
insert_time timestamp
);

2.复制表
create table 表名 like 被复制的表名

Retrieve查询
1.查询某个数据库中所有的表的名称
show tables;
2.查询表结构
desc 表名;

Update修改
1.修改表名
alter table 表名 rename to 新的表名
2.修改表的字符集
alter table 表名 character set 字符集名称;
3.添加一列
alter table 表名 add 列名 数据类型;
4.修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;
5.删除列
alter table 表名 drop 列名;

Delete删除
1.drop table 表名;
2.drop table if exists 表名;

##DML:增删改表中数据
1.添加数据:
语法:insert into 表名(列名1,列名2,…列名n)values(值1,值2,…值n)
注意:1.列名和值要一一对应。
2.如果表名后,不定义列名,则默认定义所有列名

2.删除数据:
语法:
delete from 表名 [where 条件]
注意:
1.如果不加条件,则删除表中所有记录。
2.如果要删除所有记录
1.delete from 表名; --不推荐使用
2.truncate table 表名–推荐使用,效率高
3.修改数据
语法:
update 表名 set 列名1=值1,列名2=值2,…[where 条件];
注意:
1.如果不加任何条件,则会将表中所有记录全部修改。

##DQL:查询表中的记录
1.select *from 表名;

1.语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定

2.基础查询
1.多个字段的查询
select 字段名1,字段名2,…from 表名;
注意:
如果查询所有字段,则可以使用*来替代字段列表;
2.去除重复
distinct
3.计算列
一般可以使用四则运算计算一些列的值。
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
如果该字段为null后的替换值。
4.起别名
as:as也可以省略

3.条件查询
1.where子句后跟条件
2.运算符
*>、<、<=、>=、=、<>(不等于)
between…add
in集合(19,20,21)
like:模糊查询
占位符:
_:单个任意字符
%:多个任意字符
is null
is not null
or或||
not或|

查询语句
1.排序查询
*语法:order by 子句
order by 排序字段1 排序方式1,排序字段2,排序方式2(第一条件一样才会使用)
排序方式:
asc:升序,默认的
desc 降序的
*注意:如果有多个排序条件,则当前面的条件值一样时,才会判断第二条件

2.聚合函数:将一列数据作为一个整体,进行纵向的计算。
1.count:计算个数
select count(列名) from 表名;
1.一般选择非空的列:主键(不能为null)
注意:聚合函数的计算会排除null值。
解决方案:
1.选择不包含非空的列进行计算

1.ifnull函数
2.sum:计算总和
3.max
4.min
5.avg:计算平均值

3.分组查询:
1.语法:group by 分组字段;
2.注意:
分组之后查询的字段:分组字段,聚合函数
where和having的区别?
1.where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足条件,则不会被查询出来
2.where后不可以跟聚合函数,having可以进行聚合函数的判断

4.分页查询
1.语法:limit开始的索引,每页查询的条数
2.公式:开始的索引=(当前的页码-1)*每页显示的条数
3.分页操作是一个mysql”方言“,limit时mysql特有

##约束
概念:对表中的数据进行限定,保证数据额正确性、有效性、完整性
分类:
1.主键约束:primary key
2.非空约束:not null
3.唯一约束:unique
4.外键约束:foreign key

#非空约束:not null
1.创建表时添加约束
2.创建表后,添加非空约束
alter table 表名 modify 列名 not null

#唯一约束:某一列的值不能重复
注意:唯一约束可以有null值,但时只能有一条记录为null
1.创建表时添加约束
2.删除唯一约束
alter table 表名 drop index 列名 unique;
3.在表创建完后,添加唯一约束
alter table 表名 modify 列名 unique;

#主键约束:primary key
1.注意:
1.含义:非空且唯一
2.一张表只能有一个字段为主键
3.主键就是表中记录的唯一标识
2.在创建表时,添加主键约束
3.删除主键
alter table 表名 drop primary key;
4.创建完表后,添加主键
alter table 表名 modify primary key;
5.自动增长:
概念:如果某一列时数值类型的,使用auto_increment可以来完成值的自动增长(也能实现主键为null)
2.创建表的时候,添加自动增长
3.删除自动增长
alter table 表名 modify 列名;
4.添加自动增长
alter table 表名 modify 列名auto_increment;

#外键约束,可以关联好友和群foreign key,让表和表产生关系,从而保证数据的正确性
1.在创建表时,可以添加外键
语法:创建表时有一个外键列
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)

2.删除外键
alter table 表名 drop foreign key 外键名称;

3.创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key(外键字段名称)references 主表名称(主表列名称)

4.级联操作
1.添加级联操作
语法:alter table 表名 add constraint 外键名称
foreign key (外键字段名称)references 主表名称(主表列名称) onupdate cascadeondelete cascade ;

2.分类:
1.级联更新:on update cascade
2.级联删除:on delete cascade

##数据库的设计
1.多表之间的关系
1.一对一:
*如:人和身份证
2.一对多(多对一);
*如:部门和员工
3.多对多:
*如:学生和课程
2.实现关系:
1.一对多:
实现方式:在多的一方建立外键,指向一的一方的主键
2.多对多:
实现方式:需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两个表的主键
3.一对一:
实现方式:可以在任意一方添加外键指向另一方的主键

Java基础——SQL语句相关推荐

  1. Mysql学习笔记(基础)基础sql语句详细记录

    数据库学习(基础) // 个人网课学习记录,如果有违规等问题,请联系我删除~ mysql下载安装( 解压版安装配置 下载版安装配置 ) 需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类 ...

  2. JAVA中用 SQL语句操作小结

    1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1, ...

  3. java拼接sql语句的in条件

    1.问题 java拼接sql语句的in条件,需要将列表或数组转换为(" "," ")的格式 2.代码 StringBuffer sbuffer= new Str ...

  4. 《SQL Server基础——SQL语句》

    SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE SCC 2. ...

  5. Sqlserver,Mysql基础SQL语句

    Sqlserver,Mysql基础SQL语句 SqlServer 建表 修改字段默认值 修改表名 修改字段名 添加字段 例子 更改字段 删除字段 添加表注释 添加字段注释 数据排序 方法一 ROW_N ...

  6. java 查询sql语句_java执行SQL语句实现查询的通用方法详解

    完成sql查询 并将查询结果放入vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static vector executequery(class clazz, s ...

  7. java中sql语句_java中sql语句的编写规则

    java中sql语句的编写规则 发布时间:2020-06-26 15:11:11 来源:亿速云 阅读:143 作者:Leah 这期内容当中小编将会给大家带来有关java中sql语句的编写规则,文章内容 ...

  8. Java中SQL语句的拼接规则

    拼接规则示例 java中的字符串只能双引号,如果字符串中需要拼接变量,该变量用单引号括起来,然后加两个双引号再加两个加号,中间就是变量. 例如:查询数据库中的用户名和密码. 注:为和sql表中的use ...

  9. 数据库基础SQL语句

    文章目录 一.数据库的四大特性ACID: 二.事务 三.终端安装数据库(Docker插件) 1.安装命令 2.检验安装 3.进入服务 4.登录MySQL 5.创建数据库 6.登出 7.退出服务 8.执 ...

最新文章

  1. 2022-2028年全球与中国氢碘化物市场智研瞻分析报告
  2. 德勒报告:2018年全球生命科学发展趋势
  3. 关于TxQBService报的错,腾讯你真牛B啊
  4. 关于小程序取data- 的值的问题
  5. 32f407tim4时钟源频率_STM32学习笔记04—SysTick时钟
  6. Dedesql数据库类详解(二次开发必备教程)(转)
  7. 关于 extern C的说明
  8. 使用Javascript正则表达式来格式化XML内容
  9. LeetCode Week 2:第 11 ~ 20 题
  10. WCF笔记--泛型与集合数据类型
  11. 中概股“回A”政策趋紧 霞客环保终止卖壳
  12. 最短路算法模板(Dijkstra、Bellman_ford、spfa、Floyd)
  13. 期权波动率套利策略之谜
  14. 关于EPCS系列芯片的说明
  15. 肯德尔(Kendall)相关系数概述及Python计算例
  16. 蒙特卡罗方法C语言求定积分,蒙特卡罗方法计算定积分
  17. 计算机设备管理cmd命令,打开设备管理器的命令,教你一分钟学会最简单
  18. 微信环境中扫描二维码下载APP(APK)文件的解决方案-自动跳转到手机默认浏览器(AppStore)打开
  19. ios 七种手势详解
  20. 【黑盒测试】 正交排列法设计测试用例

热门文章

  1. RUST 学习日记 第13课 ——字符串(一)
  2. 射芯机的工作原理是利用压缩空气
  3. 海思低功耗IP门铃方案(Hi3518EV200+Hi1131s+MCU+LiteOS)
  4. 【扫盲贴】为什么屏幕分辨率是 640x480
  5. jQuery jQuery鼠标混轮滚动事件
  6. Java基础 - 内部类03 - 匿名内部类详解
  7. h2数据库集群部署,备份及恢复
  8. Makefile中patsubst函数使用方法
  9. 茄子科技(海外SHAREit Group)赋能出海APP加速布局新兴市场
  10. CMS常用参数配置指令