数据库相关知识
来源:互联网 发布:刘意 java视频 编辑:程序博客网 时间:2024/06/05 19:45
数据库相关知识
Sql语句
结构化查询语句,非过程性语言。
Sql分类
数据定义语句
数据处理语句
数据控制语句
数据查询语句
对数据库的操作(CRUD)
创建 CREATE DATABASE test CHARACTER SET utf8 COLLATE utf8_bin;
查询数据库 SHOW databases;
SHOW CREATE DATABASE test
删除数据库:drop database test;
修改数据库:alter database test character set gbk;
使用数据库:use test;
powerDesigner数据库表关系设置
对表的操作(CRUD)
创建班级表语句:
create table class
(
class_id integer(32) not null,
class_Name varchar(32),
calss_SDate bigint(32),
primary key (class_id)
);
建表约束:(单表约束)---为了保证数据完整性.
* 主键约束 :primary key.可以唯一确定表中一条记录的字段.(非空唯一).主键是整形可以使用auto_increment.
* 唯一约束 :unique.创建表中这个字段的时候,这个字段不允许出现重复的值.
* 非空约束 :not null.代表创建表中的这个字段的时候,不可以向这个字段插入空值.
查看表:show tables;
desc class; 查看具体的表结构
修改表:
* alter table 表名 add字段名 类型(长度)约束; ---修改表添加字段.
* alter table 表名 modify字段名 类型(长度)约束; ---修改表修改字段的类型长度和约束.
* alter table 表名 drop字段名; ---修改表删除表中这个字段.
* alter table 表名 change旧的字段名 新的字段名 类型(长度)约束; ---修改表修改字段名
* rename table 旧表名 to新表名; ---修改表名.
* alter table 表名 character set字符集; ---修改表的字符集.
删除表:
drop table class ;
对表数据的(CRUD)
插入数据
INSERT INTO class (class_id , class_Name , calss_SDate) VALUES(1,'一班','20170820')
INSERT INTO class (class_id , class_Name , calss_SDate) VALUES(2,'二班','20140820');
INSERT INTO class (class_id , class_Name , calss_SDate) VALUES(3,'三班','20150820');
INSERT INTO class (class_id , class_Name , calss_SDate) VALUES(4,'四班','20160820');
修改记录
UPDATE class SET class_Name='17级1班' WHERE class_id = 1;
UPDATE class SET class_Name='14级2班' WHERE class_id = 2;
UPDATE class SET class_Name='15级3班' WHERE class_id = 3;
UPDATE class SET class_Name='17级2班' , calss_SDate='20170820' WHERE class_id = 4;
删除记录
DELETE FROM class WHERE class_id=2;
查询记录
SELECT * FROM class WHERE class_id=3
SELECT DISTINCT * FROM class (去重复字段查询)
SELECT class_Name AS className FROM class c WHERE c.class_id=3(取别名查询)
条件查询之条件表达式
where子句后的运算符:
* > ,< ,>= ,<= ,= ,<>
* in :一组值.
* like :模糊查询.
* 使用占位符: _和%。
* _代表的是一个字符: where name like '张_';
* %代表的是任意个字符: where name like '张%';
* 张% :以张开头.
* %张 :以张结尾.
* %张%:包含张即可.
* is null
* and , or ,not
SELECT * FROM class WHERE class_name LIKE '%17%'
SELECT * FROM class WHERE class_id IN(1,3)
SELECT * FROM class WHERE calss_SDate < '20170820'
SELECT * FROM class WHERE class_name LIKE '%17%' AND class_id IN (1,3)
查询并排序
SELECT * FROM class WHERE class_id IN (1,4) ORDER BY class_id desc
Asc表顺序,desc表逆序
聚集函数
Coun()计算数据总条数
SELECT COUNT(*) FROM class
Sum() 求和
SELECT SUM(class_id) FROM class WHERE class_name LIKE '%17%'
Avg()平均
SELECT AVG (class_id) FROM class WHERE class_name LIKE '%17%'
Max()总数
SELECT MAX(class_id) FROM class
Min()最小
SELECT MIN(class_id) FROM class
分组统计
* select * from 表 where条件group by列名;
SELECT SUM(class_id) ,calss_SDate FROM class WHERE class_id IN(1,3,4) GROUP BY calss_SDate
多表关联查询
创建班级、学生、老师、科目表
drop table if exists class;
/*==============================================================*/
/* Table: class */
/*==============================================================*/
create table class
(
class_id integer(32) not null,
class_Name varchar(32),
calss_SDate bigint(32),
primary key (class_id)
);
drop table if exists student;
/*==============================================================*/
/* Table: student */
/*==============================================================*/
create table student
(
stu_id integer(32) not null,
class_id integer(32),
stu_name varchar(64),
stu_sex bit,
stu_age integer(6),
stu_year year(4),
primary key (stu_id)
);
alter table student add constraint FK_Reference_3 foreign key (class_id)
references class (class_id) on delete restrict on update restrict;
drop table if exists teacher;
/*==============================================================*/
/* Table: teacher */
/*==============================================================*/
create table teacher
(
teacher_id integer(32) not null,
techer_name varchar(32),
teach_id integer(32),
teacher_age integer(3),
primary key (teacher_id)
);
alter table teacher add constraint FK_Reference_2 foreign key (teach_id)
references course (cou_id) on delete restrict on update restrict;
drop table if exists course;
/*==============================================================*/
/* Table: course */
/*==============================================================*/
create table course
(
cou_id integer(32) not null,
cou_name varchar(16),
primary key (cou_id)
);
drop table if exists teacherAndClass;
/*==============================================================*/
/* Table: teacherAndClass */
/*==============================================================*/
create table teacherAndClass
(
teacher_id integer(32) not null,
class_id integer(32) not null,
ischief bit,
primary key (teacher_id, class_id)
);
alter table teacherAndClass add constraint FK_Reference_4 foreign key (class_id)
references class (class_id) on delete restrict on update restrict;
alter table teacherAndClass add constraint FK_Reference_5 foreign key (teacher_id)
references teacher (teacher_id) on delete restrict on update restrict;
一对一的关系
一个班级只能有一个班主任,在班级的一方设置一个唯一的外键关联一名老师,且一名老师也只能是一个班级的班主任。
一对一的建表原则:
* 唯一外键对应:
* 假设一对一的双方任意一方是多.(假设为一对多).需要在多的一方创建外键指向一的一方的主键.但同时将这个外键设置为唯一的unique.
* 主键对应:
* 在任意的一方的主键上添加一个外键约束.指向另一方的主键.
一对多的关系
一个班级有多个学生,一个科目有多个老师,这些都是一对多的关系
建表原则:
多表之间约束:(约束:保证数据的完整性)
* 外键约束:
* alter table employee add foreign key(dno) references dept(did);
***** 一对多的建表原则:
* 在多的一方创建一个字段,作为外键指向一的一方的主键.
多对多的关系
一个老师可以教多个班级、一个班级可以有多个老师。
创建一个中间表:(第三张表),中间表中需要有两个字段.分别作为外键指向多对多双方的主键.
对表的联合查询
笛卡尔积查询
Select * from student , class
内连接查询
查询两个表的交集,只包含来自两张表的连接字段相等的记录。
显示内连接:SELECT * FROM student stu INNER JOIN class cl ON (stu.class_id = cl.class_id)
隐式内连接:
Select * from student stu ,class cl where stu.class_id =cl.class_id
左外连接
查询结果:是左边表的全部以及两个表的交集。
Select * from student stu ,class cl where stu.class_id =cl.class_id
右外连接
查询结果:右边表的全部以及两个表的交集
SELECT * FROM student stu RIGHT JOIN class cl ON (stu.class_id = cl.class_id)
子查询
指的是一条语句的查询结果需要依赖另一条语句的查询结果。
查询某班主任老师名下的同学。
//通过该名称查询老师id
SELECT teacher_id FROM teacher WHERE techer_name = '四老师'
//查询班级id信息
SELECT class_id FROM class WHERE teacher_id =(SELECT teacher_id FROM teacher WHERE techer_name = '四老师')
//查询同学信息通过班级id
SELECT * FROM student WHERE class_id = (SELECT class_id FROM class WHERE teacher_id =(SELECT teacher_id FROM teacher WHERE techer_name = '四老师'))
补充信息:
限制查询数量:
SELECT * FROM student LIMIT 5;
BETWEEN 操作符选取介于两个值之间的数据范围内的值
查询年龄22-23的学生
SELECT * FROM student WHERE stu_age BETWEEN 22 AND 23
- IP数据库相关知识
- 数据库相关知识SQL
- 数据库相关知识整理
- 数据库相关知识
- 数据库相关知识
- 数据库的相关知识
- Oracle数据库相关知识
- 数据库索引相关知识
- 数据库相关知识:
- sqlite 数据库 相关知识
- 数据库锁相关知识
- 数据库相关知识
- 数据库相关知识整理
- 数据库相关知识
- SQLite数据库相关知识
- 数据库的相关知识
- 数据库原理相关知识
- 数据库原理相关知识
- java初始化顺序-主要是final的说明
- #####分析比较深刻的集成学习方法应用实验(RF、GBDT)
- springboot 禁用mongoDB自动配置
- Android开源库V
- jeecg 3.7.1 新版功能,集群定时任务动态发布模块 使用规则
- 数据库相关知识
- json数据解析(gson)
- php 微信自动回复
- 嵌入式系统概论-1.5
- html,jsp中,背景全屏
- PE装机的几个注意
- HDU 6166
- 新手学django大坑之__unicode__
- HDU6162-Ch’s gift((离线+树链剖分)或(在线+树上主席树))