行业知识
JavaWeb基础入门——(二)MySQL数据库基础(2-SQL 结构化查询语言)
四、MySQL逻辑结构
4.1 逻辑结构
4.1 记录
五、SQL 结构化查询语言
5.1 SQL概述
SQL(Structural Query Language)���构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统
5.1.1 SQL发展
SQL是在1981年由IBM公司推出,一经推出基于其简洁的语法在数据库中得到了广泛的应用,成为主流数据库
的通用规范
-
SQL由ANSI组织确定规范
-
在不同的数据库产品中遵守SQL的通用规范,但是也对SQL有一些不同的改进,形成了一些数据库的专有指令
-
MySQL:limit
-
SOLServer top
-
Oracle:rownum
5.1.2 SQL分类
根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类:
- DDL Data Definition Language 数据定义语言
- 用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改
- DMLData Manipulation Language 数据操作/操纵语言
- 用于完成对数据表中的数据的添加、删除、修改操作
- 添加:将数据存储到数据表
- 删除:将数据从数据表移除
- 修改:对数据表中的数据进行修改
- DQL Data Query Language 数据查询语言
- 用于将数据表中的数据查询出来
- DCL Data Control Language 数据控制语言
- 用于完成事务管理等控制性操作
5.2 SQL基本语法
在MySQL Command Line Client或者navicat等工具中都可以编写SQL指令
- SQL指令不区分大小写
- 每条SQL表达式结束之后都以;结束
- SQL关键字之间以空格进行分隔
- SQL之间可以不限制换行(可以有空格的地方就可以有换行)
5.3 DDL-数据定义语言
5.3.1 DDL-数据库操作
使用DDL语句可以创建数据库、查询数据库、修改数据库、删除数据库
查询数据库
##显示当前mysq1中的数据库列表show databases;##显示指定名称的数据的创建的SQL指令show create database ;
创建数据库
##创建数据库dbName:表示创建的数据库名称,可以自定义create database ;#创建数据库,当指定名称的数据库不存在时执行创建create database if not exists ;##在创建数据库的同时指定数据库的字符集(字符集:数据存储在数据库中采用的编码格式utf8gbk)create database character set utf8;
修改数据库修改数据库引擎、字符集
##修改数据库的字符集alter database character set utf8;utf8 gbk
删除数据库 删除数据库时会删除当前数据库中所有的数据表以及数据表中的数据
##删除数据库drop database ;##如果数据库存在则删除数据库drop database is exists ;
5.3.2 DDL-数据表操作
创建数据表
数据表实际就是一个二维的表格,一个表格是由多列组成,表格中的每一类称之为表格的一个字段
create table students( stu_num char(8)not null unique, stu_name varchar(20)not null stu_gender char(2)not null, stu_age int not null, stu_tel char(11)not null unique, stu_qq varchar(11)unique):
查询数据表
show tables;
查询表结构
desc ;
删除数据表
##删除数据表drop table ;##当数据表存在时除数据表drop table if exists ;
修改数据表
##修改表名alter table rename to ;##数据表也是有字符集的,默认字符集和数据库一致alter table character set utf8;#添加列(字段)alter table add varchar(200);##修改列(字段)的列表和类型alter table change ;##只修改列(字段)类型alter table modify ;#删除列(字段)alter table stus drop ;
5.4 MySQL数据类型
数据类型,指的是数据表中的列中支持存放的数据的类型
5.4.1 数值类型
在MySQL中有多种数据类型可以存放数值,不同的类型存放的数值的范围或者形式是不同的
5.4.2字符串类型
存储字符序列的类型
5.4.3 日期类型
在MySQL数据库中,我们可以使用字符串来存储时间,但是如果我们需要基于时间字段进行查间操作(查询
在某个时间段内的数据)就不便于查询实现
5.5 字段约束
5.5.1 约束介绍
在创建数据库时,指定的对数据表的列的数据限制性的要求(对表的列中的数据进行限制)
为什么要给表中的列添加约束呢?
- 保证数据的有效性
- 保证数据的完整性
- 保证数据的正确性
字段常见的约束:
- 非空约束(not null): 限制此列的字不能为null
- 唯一约束(unique):在表中的多条数据,此列的值不能重复
- 主键约束(primary key):非空,唯一,能够唯一标识数据表中的一条数据
- 外键约束(foreign key):建立不同表之间的关联关系
5.5.2 非空约束
限制数据表中此列的值必须提供
-
创建表:设置图书表的book_name not null
create table books(book_isbn char(4), book_name varchar(10) not null, book_author varchar(6));
-
添加数据
5.5.3 唯一约束
在表中的多条数据,此列的值不能重复
-
创建表:设置图书表的book_isbn为unique
create table books(book_isbn char(4) unique, book_name varchar(10) not null, book_author varchar(6));
-
添加数据:
5.5.4 主键约束
主键——就是数据表中记录的唯一标识,在一张表中只能有一个主键(主键可以是一个列,也可以时多个列的组合)
当一个字段声明为主键之后,添加数据时:
- 此字段不能为null
- 此字段不能重复
创建表时定义主键
create table books(book_isbn char(4) primary key, book_name varchar(10) not null, book_author varchar(6));
或者
create table books(book_isbn char(4), book_name varchar(10) not null, book_author varchar(6), primary key(book_isbn));
删除数据表主键约束
alter table books drop primary key;
创建表之后添加主键约束
## 创建表时没有添加主键约束create table books(book_isbn char(4), book_name varchar(10) not null, book_author varchar(6));## 创建表之后添加主键约束alter table books modify book_isbn char(4) primary key;
5.5.5 主键自动增长
在我们创建一张数据表时,如果数据表中有列可以作为主键(例如:学生表的学号,图书表的id)我们可以直接设置这个列为主键;
当有些数据表中没有合适的列作为主键时,我们可以额外定义一个与记录本身无关的列(ID)作为主键,此列数据无具体的含义,主要用于标识一条记录,在MySQL数据库中我们可以将此列定义为int,同时设置为自动增长,当我们向数据表中新增一条记录时,无需提供ID列的值,会自动生成。
定义主键自动增长
create table types(type_id int primary key auto_increment, type_name varchar(20) not null, type_remark varchar(100));
注意:自动增长从1开始,每添加一条记录,自动的增长的列会自动+1,当我们把某条记泉删除之后再添加数据,
自动增长的数据也不会重复生成(自动增长只保证唯一性、不保证连续性)
5.5.6 联合主键
联合主键一一将数据表中的多列组合在一起设置为表的主键
定义联合主键
create table grades( stu_num char(8), course_id int, score int, primary key(stu_num,course_id));
注意:在实际企业项目的数据库设计中,联合主键使用率并不高;当一个数据表中没有明确的字段可以作为主键时,我们可以额外添加一个ID字段作为主键。
5.5.7 外键约束
5.6 DML数据操纵语言
用于完成对数据表中数据的插入、删除、修改操作
create table students( stu_num char(8) primary key, stu_name varchar(20)not null stu_gender char(2)not null, stu_age int not null, stu_tel char(11)not null unique, stu_qq varchar(11)unique);
5.6.1 插入数据
语法
insert into (columnName,columnName....)values(value1,value2....)
示例
##向数据表中指定的列添加数据(不允许为空的列必须提供数据)insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel)va1ues('20210101','张三',男',21,13030303300');##数据表名后的字段名列表顺序可以不与表中一致,但是va1ues中值的顺序必须与表名后字段名顺序对应insert into stus(stu_num,stu_name,stu_age,stu_tel,stu_gender)va1ues('28210103',王五',20,13030303302','女);##当要向表中的所有列添加数据时,数据表名后面的字段列表可以省略,但是v1ues中的值的顺序要与数据表定义的字段保持一致;insert int0 stus va1ues('20210105','孙琦','男',21,'13030303304','666666'); ##不过在项目开发中,即使要向所有列添加数据,也建议将列名的列表显式写出来(增强$QL的稳定性】insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq)va1ues('20218185,孙琦','男',21,'13038303304','666666');5.6.2 删除数据
从数据表中删除满足特定条件(所有)的记录
语法
delete from [where conditions];
示例
##删除学号为20210102的学生信息delete from stus where stu_num='20210102';##删除年龄大于20岁的学生信息(如果满足where-子句的记录有多条,则删除多条记录)delete from stus where stu_age>20;#如果删除语句没有where子句,则表示删除当前数据表中的所有记录(敏感操作)delete from stus;
5.6.3 修改数据
对数据表中已经添加的记录进行修改
语法
update set columnName=value [where conditions]
示例
##将学号为20210105的学生姓名修改为“孙七”(只修改一列)update stus set stu_name=''where stu_num='20210105';##将学号为20219183的学生性别修改为“男”,同时将QQ修改为777777(修改多列)update stus set stu_gender='',stu_qq='777777'where stu_num='20210103'##根据主键修改其他所有列update stus set stu_name='韩梅梅',stu_gender='女',stu_age=18,stu_tel='13131313311',stu_qq='999999'where stu._num='28210102';##如果update语句没有where-子句,则表示修改当前表中所有行(记录)update stus set stu_name='Tom';
5.7 DQL数据查询语言
从数据表中提取满足特定条件的记录
- 单表查间
- 多表联合查询
5.7.1查询基础语法
##se1lect关键字后指定要显示查询到的记录的那些列select colnumName1[,colnumName2,colnumName3...]from ;##如果要显示查询到的记录的所有列,则可以使用*替代字段名列表 (在项目开发中不建议使用*)select from stus;
6.7.2 where子句
在删除、修改及查询的语句后都可以添加where-子句(条件),用于筛选满足特定的添加的数据进行删除、修
改和查询操作。
delete from tableName where conditions;update tabeName set...where conditions;select ...from tableName where conditions;
条件关系运算符
## = 等于select from stus where stu_num ='20210101';## !=不等于select from stus where stu_num !='20210101';select from stus where stu_num 20210101';# > 大于select from stus where stu_age>18;# =20;#
-
-
- 用于完成事务管理等控制性操作
- DDL Data Definition Language 数据定义语言
-
上一篇:联想服务器怎么镜像投屏?
下一篇:lol连接服务器超时怎么解决?