SQL快速入门

关系化数据库
保存关系模式数据的容器
关系模式是对业务对象实体,属性以及关系的抽象,提炼需求的名词是建立实体关系模型常用的方法。要了解E-R实体关系图的绘制。
常用关系数据库
Microsoft SQL Server;微软公司产品,中等规模数据库,运行在window平台,一般结合.net开发平台使用
Oracle;甲骨文公司产品,大型商业数据库,可以运行在任何操作系统上,经常与java一起使用。
MySQL;最初是一个开源免费的数据库产品,中小型数据库,轻便,互联网行业主流数据库
SQLITE;嵌入式数据库,安卓内部主要数据库。

数据库的连接与组成
连接网络上的数据库
mysql -h ip -P port -u root -p 回车 输入密码
show databases; 查看所有数据库
安装mysql后会自带两个数据库mysql,test
mysql存放一些数据库的核心数据,用户权限密码等
test用来测试的数据库
在一个服务器上,可以使用多个数据库database,一个数据库内部创建对个数据表table
在数据库中存在多个用户,每个用后都有相应的操作权限,默认有个root用户,是超级管理员具有所有权限
table表的一行称为一条记录,一般对应着java程序中的一个对象

SQL语言
结构化查询语言
特性
1,非过程性语言,每一条SQL语句独立执行没有先后的依赖关系
2,官方提供的数据库标准语言,任何数据库都必须支持SQL语言语法
3,SQL是用来存取关系型数据库的语言,具有查询,操纵,定义和控制关系型数据的四方面功能。
为加强SQL的语言能力,各厂商增强了过程性语言的特征,提供SQL语言的扩展

SQL语言分类
DDL;数据定义语言,用来定义数据库的对象,如数据表,视图,索引
DML;数据操纵语言,在数据库表中更新,增加和删除记录,如update,insert,delete
DCL;数据控制语言,用户设置用户权限和控制事务语句,如grant,revoke,if else,while,begin transaction
DQL;数据查询语言,数据查询语言,如select

SQL语句的使用
创建数据库
CREAT DATABASE[IF NOT EXISTS] db_name;
character set 编码表 collate比较方式;//为数据库指定字符集合比较方式,如果不指定使用默认的编码集和比较方式
查看数据库
show creat database db_name;查看当前数据库编码集
select database();查看当前使用的数据库
删除数据库
drop database db_name;
修改数据库编码
alter database db_name character set 编码表
切换数据库
use db_name;如果想要对数据库进行操作,需要切换到指定的数据库

创建数据表
create table table_name(列名 类型(长度),列名 类型(长度))character set编码表
如果没有指定编码表会使用数据库默认的
如 create table user(
id int,
name varchar(40),
password varchar(40),
birthday date
);
java数据类型与数据库数据类型的对应关系,除了字符串类型必须要指定长度之外其他的都可以使用默认长度
字符串 VARCHAR,CHAR对应string,前者是长度可变经常使用,后者是长度固定的性能好些
大数据类型 BLOB,TEXT;前者主要存些字节文件,后者存储字符文件
数值型 TINYINT,SMALLINT,INT,BIGINT,FLOAT,DOUBLE分别对应byte,short,int,long,float,double
逻辑型 BIT
日期型 DATE,TIME,DATETIME,TIMESTAMP
创建表明之后可以通过desc 表名查看表结构

单表的约束
定义主键约束;主键约束唯一标识一条记录,主键不能为空不能重复,主键如果为数字类型一般设置主键自动增长auto_increment
primary key
唯一约束;该字段内容不允许重复
unique
定义非空约束;值不能为空
not null
如 create table employee(
id int primary key not null auto_increment,
name varchar(40) unique not null
gender varchar(10) not null,
entry_date date not null,
birthday date not null,
job varchar(20) not null,
resume longtext not null
salary double not null,
);

数据表修改
alter table使用该语句增加,修改或删除列的语法
alter table 表名 add 列名 类型(长度) 约束;//增加
alter table 表名 modify 列名 类型(长度) 约束;//修改
alter table 表名 drop 列名 //删除
修改已有数据表一列的名称
alter table 表明 change 旧列名 新列名 类型(长度) 约束
修改表名 rename table 旧表名 to 新表名
修改表的字符集 alter table 表名 charater set utf8;要注意表的编码集与数据库的编辑不是同一个
show tables 查看当前数据库中的所有表
alter primary修改主键

数据库CRUD语句
Insert语句
Insert into 表名(列名,列名。。。) values(值,值,。。。)
要注意列与值的相互对应。
Insert into employee(id,name,gender,entry_date,birthday,job,resume,salary) values(null,'zs','mall','2012-10-10','1990-01-10','hr',3000,'he is a man');
值中除了数字不用加单引号之外,其他所有值都要加单引号
在插入数据时,如果有些列存在默认值或者可以为null,插入可以省略这些列,只需要关注不能为空的列就好
另外在插入数据的时候,也可以省略所有列名,但是必须按照表的顺序插入所有列的值
要注意SQL的编码问题。

Update语句
update 表名 set 列名=值,列名=值 where 条件语句
注意如果没有写where语句限制条件,则会将该列的所有数据都进行更改
update employee set salary=5000;//这句话把所有员工的新水都改为5000
update emploee set salary=5000 where name='zs';将zs的薪水改为5000,要注意此处算是SQL语句的饿一个bug条件比较时可能不区分大小写,如果ZS的薪水存在也会更改,需要再name前加入关键字binary使比较更精确
update employee set salary=5000 where binary name='zs';
update employee set salary=salary+1000 where binary name='zs';在原先的挤出上增加


Delete语句
delete from 表名 where 条件语句
删除不能删除某一列的值,只能删除一行记录,如果不增加where条件语句会将表中的所有记录删除,但是不会删除表,
表的删除使用drop语句
另外truncate 表名 语句也可以删除所有表记录,但是不可恢复,
truncate语句原理是将表删除,然后重新建张表,不可恢复数据,而delete语句可以删除一行记录,也可以删除整个表的所有记录,他的原理是将所有行的记录删除,并不会将表删除,在一个事务中是可以回滚rollback恢复的。删除整表时truncate语句性能好些,不会占用资源。

select语句
select *|指定列名 from 表名
select * from employee 查看表中所有的数据
select gendet from employee 查看表中的gender列数据
select distinct gender from employee 查看表中的gender列数据,不显示重复,distinct关键字就是去重的。

该使用什么语句应该根据具体的需求,插入语句insert 删除语句delete 都是对整行的操作 update,select是对列的操作,update可以对整列也可以加入限制条件对列的一部分操作,select只能对整列进行操作。

查询时进行运算
select 列名运算表达式 from 表名
select 列名 as 列别名 from 表名
select name,english+10 from scores;英语成绩列都加十分
select name,english +math+chinese as 总分 from scores;注意as可以省略,该语句的作用是查询并求总分,总分显示列english +math+chinese更改为别名总分

查询时进行过滤查询
使用where语句进行过滤查询
select english+math+chinese as 总分 where name='zs'查询zs的总分
select * from scores where english >80;查询英语分数大于80的记录

select语句中常用的运算符
> < <= >= = <>不等于
between...and...
select * from scores where chinese between 70 and 80;注意先写小的后写大的
in()在几个固定值中取值。
select * from scorse where chinese in(70,80,90);查询语文成绩是70和80,90中的记录
like 模糊查询结合%通配符和_通配符使用,%代表任意长度字符串,_表示单个字符
select * from scores where name like '老%'查询名字以老开头的所有记录
select * from scores where name like '老_'查询名字以老开头的两字名字额所有记录
is null ,is not null ,注意不可以写=null,因为null本身就是一个值,代表1/2;0是false 1是true;
当and与or同时使用时,and的优先级大于or

查询时进行排序order by语句
select * from 表名 where 条件语句 order by 列名 asc|dsc,列名asc|dsc
asc是升序,dsc是降序

分组函数---结合查询分组进行数据统计
count(*)返回查询结果记录的条数
select count(*) from scores where math>90;返回数据成绩大于90的记录共有多少条
sum(列名)对一列的数据求和
select sum(match) from scores ;求数学总成绩
select sum(match),sum(chinese) from scores 求语文数学各科的成绩总和
select sum(match+chinese) from scores 求语文数学的总成绩
avg对列数据求平均值
select avg(math) from scores 求数学的平均值,对于null值是不参与运算的
select avg(math+chinese) from scores 求总分的平均分,同样有过有一条记录有个null值他的其他成绩也补参与运算
max,min对一列数据求最值。

分组
分组的目的是为了统计,分组的前提是有重复数据,按照重复数据进行分组归类
如对不同部门按照部门分组,不同班级按照班级分组。
group by语句,要注意where是不能与group by同时使用的
having关键字,添加分组查询的条件
select product,sum(price) from oders group by product having sum(price)>100

数据库数据的备份和恢复
备份数据库 mysqldump -u 用户名 -p 数据库名>备份文件名.sql
数据库恢复
首先创建一个空的数据库然后 mysql -u 用户名 p 数据库名 < 文件名.sql 在cmd中使用

外建约束的使用
多表设计
1,建立多张表
2,通过外建约束建立表之间的从属关系表,
alter table employee add foreign key(dept_id) references dept(id);对员工表添加外建约束,将部门id列与部门表的id列相关联。
添加了外建约束后,不能随便取值,取值是引用表存在主键值,也不能随便删除值。

 

转载于:https://www.cnblogs.com/ss561/p/4620858.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Faster RCNN minibatch.py解读

minibatch.py 的功能是&#xff1a; Compute minibatch blobs for training a Fast R-CNN network. 与roidb不同的是&#xff0c; minibatch中存储的并不是完整的整张图像图像&#xff0c;而是从图像经过转换后得到的四维blob以及从图像中截取的proposals&#xff0c;以及与之对…

oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)

前言哇。。看看时间 真的很久很久没写博客了 将近一年了。最近一直在忙各种家中事务和公司的新框架 终于抽出时间来更新一波了。本篇主要讲一下关于Entity Framework Core访问oracle数据库的采坑。。强调一下&#xff0c;本篇文章发布之前 关于Entity Framework Core访问oracl…

interrupt、interrupted 、isInterrupted 区别

interrupt&#xff1a;调用方法&#xff0c;是线程处于中断状态&#xff0c;但是这个方法只是让线程设置为中断状态&#xff0c;并不会真正的停止线程。支持线程中断的方法就是在坚持线程中断状态&#xff0c;一旦线程中断状态被设置为中断&#xff0c;就会抛出异常。interrupt…

java String部分源码解析

String类型的成员变量 /** String的属性值 */ private final char value[];/** The offset is the first index of the storage that is used. *//**数组被使用的开始位置**/private final int offset;/** The count is the number of characters in the String. *//**String中…

python在材料模拟中的应用_基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用...

2009doi:1013969/j1issn1100722012120091041013基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用(北京航空航天大学飞行器制造工程系,北京100191)吴向东刘志刚万敏王文平黄霖摘要:采用Python脚本语言对ABAQUS的前处理模块进行二次开发,讨论了Python脚本在ABAQUS二次…

Doxygen简介

&#xff08;转自&#xff1a;http://www.cnblogs.com/liuliunumberone/archive/2012/04/10/2441391.html&#xff09; 一&#xff0e;什么是Doxygen? Doxygen 是一个程序的文件产生工具&#xff0c;可将程序中的特定批注转换成为说明文件。通常我们在写程序时&#xff0c;或多…

javascript之闭包理解以及应用场景

1 function fn(){2 var a 0;3 return function (){4 return a;5 } 6 }如上所示&#xff0c;上面第一个return返回的就是一个闭包&#xff0c;那么本质上说闭包就是一个函数。那么返回这个函数有什么用呢&#xff1f;那是因为这个函数可以调用到它外部的a…

faster rcnn学习之rpn、fast rcnn数据准备说明

在上文《 faster-rcnn系列学习之准备数据》,我们已经介绍了imdb与roidb的一些情况&#xff0c;下面我们准备再继续说一下rpn阶段和fast rcnn阶段的数据准备整个处理流程。 由于这两个阶段的数据准备有些重合&#xff0c;所以放在一起说明。 我们并行地从train_rpn与train_fas…

sql server规范

常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型2.金额货币建议采用money数据类型3.科学计数建议采用numeric数据类型4.自增长标识建议采用bigint数据类型 (数据量一大&#xff0c;用int类型就装不下&#xff0c;那以后改造就麻烦了)5.时间类型建议采用为dat…

关于标准库中的ptr_fun/binary_function/bind1st/bind2nd

http://www.cnblogs.com/shootingstars/archive/2008/11/14/860042.html 以前使用bind1st以及bind2nd很少&#xff0c;后来发现这两个函数还挺好玩的&#xff0c;于是关心上了。在C Primer对于bind函数的描述如下&#xff1a;“绑定器binder通过把二元函数对象的一个实参绑定到…

CSS伪类

一、首字母的颜色字体写法 p:first-letter 二、文本的特殊样式设置 first-line css伪类可与css类配合使用 伪元素只能用于块级元素 转载于:https://www.cnblogs.com/boyblog/p/4623374.html

php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范

之前的一篇文章是对PSR-1的基本介绍接下来是PSR-2 编码风格规范&#xff0c;它是 PSR-1 基本代码规范的继承与扩展。PSR-1 和PSR-2是PHP开发中基本的编码规范&#xff0c;大家其实都可以参考学习下&#xff0c;虽然说每个开发者都有自己熟悉的一套开发规范&#xff0c;但是我觉…

faster rcnn学习之rpn训练全过程

上篇我们讲解了rpn与fast rcnn的数据准备阶段&#xff0c;接下来我们讲解rpn的整个训练过程。最后 讲解rpn训练完毕后rpn的生成。 我们顺着stage1_rpn_train.pt的内容讲解。 name: "VGG_CNN_M_1024" layer {name: input-datatype: Pythontop: datatop: im_infotop: …

BitMapData知识 转

Bitmap和BitmapData 2010.5.25 smartblack整理 一、flash.display.Bitmap类及其两个子类 1、继承自DisplayObject&#xff0c;和InteractiveObject平级&#xff0c;所以无法调度鼠标事件&#xff0c;可以使用额外的包装容器(Sprite)来实现侦听。 2、只支持GIF、JPEG、PNG格式&a…

Android学习之高德地图的通用功能开发步骤(二)

周一又来了&#xff0c;我就接着上次的开发步骤&#xff08;一&#xff09;来吧&#xff0c;继续把高德地图的相关简单功能分享一下 上次写到了第六步&#xff0c;接着写第七步吧。 第七步&#xff1a;定位 地图选点 路径规划 实时导航 以下是我的这个功能NaviMapActivity的…

Oracle中分区表中表空间属性

Oracle中的分区表是Oracle中的一个很好的特性&#xff0c;可以把大表划分成多个小表&#xff0c;从而提高对于该大表的SQL执行效率&#xff0c;而各个分区对应用又是透明的。分区表中的每个分区有独立的存储特性&#xff0c;包括表空间、PCT_FREE等。那分区表中的各分区表空间之…

期刊论文格式模板 电子版_期刊论文的框架结构

最近看到很火的一句话&#xff0c;若不是生活所迫&#xff0c;谁愿意把自己弄得一身才华。是否像极了正想埋头苦写却毫无头绪的你&#xff1f;发表期刊论文的用途 &#xff1a;1: 学校或者单位评奖&#xff0c;评优&#xff0c;推免等2&#xff1a;申领学位证(如毕业硬性要求&a…

faster rcnn学习之rpn 的生成

接着上一节《 faster rcnn学习之rpn训练全过程》&#xff0c;假定我们已经训好了rpn网络&#xff0c;下面我们看看如何利用训练好的rpn网络生成proposal. 其网络为rpn_test.pt # Enter your network definition here. # Use ShiftEnter to update the visualization. name: &q…

初学java之常用组件

1 2 import javax.swing.*;3 4 import java.awt.*;5 class Win extends JFrame6 {7 JTextField mytext; // 设置一个文本区8 JButton mybutton;9 JCheckBox mycheckBox[]; 10 JRadioButton myradio[]; 11 ButtonGroup group; //为一…

anaconda 安装在c盘_最省心的Python版本和第三方库管理——初探Anaconda

打算把公众号和知乎专栏的文章搬运一点过来。 历史文章可以去关注我的公众号&#xff1a;不二小段&#xff0c;或者知乎&#xff1a;段小草。也欢迎来看我的视频学Python↓↓↓跟不二学Python这篇文章可以作为Python入门的第一站可以结合这期视频来看&#xff0c;基本上是这期视…