MYSQL数据库应用

#1、数据库的概念
数据库(DataBase,DB)
##定义:存放数据的仓库,
要求:较小的数据冗余,较高的数据安全和易扩展
优点:(1)存储大量数据信息 (2)有效的保存数据信息的完整性、一致性,降低冗余 (3)资源共享和安全

数据库 分为1、关系型数据库和 2、非关系型数据库

1、关系型数据库(常见):
MYSQL
Oracle
SQL Server
2、非关系型数据库(常见):
文档存储数据库:MongoDB
键值存储数据库: Redis Memcached
列存储数据库:HBase
图形数据库:Neo4J

这里介绍一下MYSQL:
性能:运行速度快 体积小
成本低 开源 免费
容易使用
可移值性强 运行于windows、 Linux UNIX

常见的一些专业名词
实体(entity)
表(table)的每一行(row)–>对应一个实体也叫一条记录(record)
表是记录的集合,数据库是表的集合
表之间有着关系(relationship)创建数据库时除了创建一些表以外,还会创建其他数据库的对象

数据库管理系统(DataBase Management System,DBMS)

数据库管理系统包括:数据库和访问管理数据库的接口系统
作用:维护数据库
数据库系统(DataBase System,DBS)
数据库管理员(DataBase Administrator,DBA)

###表的设计
1、主键(primary key):表的这一列的值用来唯一标识该表中的每一行
一个表只能有一个主键,并且不能为null值,表可以没有主键
注意:主键可以是一列,也可以是多列组合而成–>(复合主键)
主键的选取原则:
(1)最少性(列数最少)
(2)稳定性 (主键的数据不能经常更新,不变最好)

**2、外键(Foreign key) **
可以有多个

SQL简介

一、全称:结构化查询语句(Structured Query Language)
2、组成:(1、)DML(Data Manipulating Language)数据操作(纵)语言
作用:插入、 修改、删除 ,Insert update delete
(2、)DDL (Data Definition Language)数据定义语言
作用:建立数据库、数据对象、定义表结构 create开头
cteate table \ create view \ drop table

	(3、)DQL(Data Query Language)  数据查询语言
	作用:查询  select
	(4、)DCL (Data Control Language) 数据控制语言
	作用:控制存取许可、权限     grant   revoke**

二、MYSQL数据库基本操作

1、库的创建

#1、创建学校(school)数据库
CREATE DATABASE `school`;
#2、选择school数据库(已创建)
USE `school`;
#3、删除数据库school
DROP DATABASE `school`;

2、表的创建
(1)常见的字段类型

#1、数值类型
int  tinyint   double   
#2、字符类型
char() #固定长度  
varchar() #长度可变
tinytext  #微型文本串
text  #文本串
#3、日期类型
date    #yyyy-MM-DD
datetime  #yyyy-MM-DD hh:mm:ss
time #hh:mm:ss
timestamp  #yyyyMMDDHHMMSS
year #yyyy
(2)创建表
```sql
#创建表student
CREATE TABLE `student`

注释: #…
//
– (注意有空格)…

3、常见的字段的属性约束
**非空约束 not null
默认约束 default
唯一约束 unique key(uk)
主键约束 primary key(pk)
外键约束 foreign key (fk) :InoDB支持外键,MYISAM不支持外键
自动增长 auto_increment 默认自增1
comment 注释

``**`sql
在这里插入代码片


出项乱码:输入  set  names gbk;等同于
	set character_set_client=gbk;
	set character_set_RESULT=gbk;
	set character_set_connection=gbk;
4、修改表:
```sql
#1、修改表名(不区分大小写)
#使用时你得先有这些表,不然会出错
ALTER TABLE `student` RENAME `newstudent`;
# 2、添加字段
ALTER TABLE `student` ADD  `pass` INT(10) NOT NULL;
#3、修改字段名(pass)
ALTER TABLE `stuednt` CHANGE `pass`  `newpass` char(10) ; 
#4、删除字段名
ALTER TABLE `student` DROP `pass`;
#5、添加主键约束
ALTER TABLE `student`  ADD CONSTRAINT `pk_id` PRIMARY KEY `student`(`id`);
#6、添加外键约束涉及到俩张表
ALTER TABLE 表名 ADD CONSTRAINT  外键名 FOREIGN KEY (外键字段) REFERENCES 关联表名(关联字段)
ALTER TABLE `student` ADD CONSTRAINT  fk_student_grade  FOREIGN KEY  (`gradeId`) REFERENCES `grade`(`gradeid`);

数据库的增、删、改、查 !!!(重点)

一、存储引擎(指定表的存储类型)
这里介绍常用的两种存储引擎,

**功能INnoDB------------ MYISAM
支持事务V ------------------- X
支持全文索引X ------------------- V
外键约束V ------------------- X
表空间大小较大 ------------------- 较小
数据行锁定V ------------------- X**
create table  `table` (...)engine=MYSIAM;
create table  `table2`(...)engine=INNODB;

1、MYISAM 类型的表文件
.frm 表结构定义文件
.MYI 索引文件
.MYD 数据问价文件
2、INNODB 类型的表文件
.frm 表结构定义文件
.ibdatal 数据文件

1、往表里面插入单行数据:

#字段名和值要一一对应,类型要一致
     # 表明     字段名
INSERT INTO `table`  (`id`,`name`)   
       VALUES (  10,'李四' );

2、往表里面插入多行数据:

     # 表明     字段名
INSERT INTO `table`  (`id`,`name`)   
       VALUES (  10,'李四' ),
       (  12,'李四1' ),
       (  13,'李四2' ),
       (  14,'李四3' );

3、更新数据记录

#将table 表里面id小于5的全部改为5
UPDATE  `table` SET `id` =5
WHERE(`id`<5);

4、删除数据记录 注意!!

#(1、)使用delete删除数据
DELETE  FROM `student` WHERE `studentname`='宝宝';

#2、使用TRUNCATE TABLE 删除数据(快)
TRUNCATE TABLE `student`

如果删除的行的主键值被其他表引用时,要先删除引用,不然会报错
注意:TRUNCATE删除时:
会删除表的所有行
但表的结构、列、约束、索引不会改变
不能用于有外键约束引用的表。
删除自增从1开始,
delete 删除不能删除自增

5、排序
rder by <排序的列名> desc(降序) asc(升序默认)

查询空值:( is null ) 或者 ( is not null)

6、常用的函数

#MYsql函数
#数学函数:
SELECT sign(-9);#获取数字的符号(正:1   负:-1  零 :0)
SELECT ceiling(9.8); #取当前数字>=当前数字的最小整数  10
SELECT  floor(9.8);#取当前数字<=当前数字的最大整数  9
SELECT  rand();#取0到1之间的随机数
SELECT rand(100);#根据种子值计算后的随机数字0~1
SELECT abs(-9);#绝对值
#字符串函数
SELECT char_length('你好');#字符串长度 2
SELECT substr('abcde',2,3);#截取字符串  (注意2不是下标,从第二个字符开始截取三个字符)   bcd
SELECT  left('abcd',3);#从左截取指定长度字符串  abc
SELECT right('abcd',3);#从左截取指定长度字符串  bcd
SELECT reverse('abcde');#反转字符串   edcba
SELECT insert('abcdeabc',2,4,'你');#替换字符串(从第二个字符串,替换4个)  a你abc
SELECT REPLACE ('abcdeabc','ab','AB');#字符串替换  ABcdeAB
SELECT upper('Hello');#全部大写  HELLO
SELECT lower('Hello');#全部小写 hello
SELECT concat('a','b','你');#将多个字符串合并(拼接) ab你
#日期和时间函数
SELECT now();#获取当前日期和时间  2020-08-11 09:54:17
SELECT curdate();#获取当前日期(简写)2020-08-11 
SELECT current_date(); #获取当前日期  2020-08-11 
SELECT year(now());#取指定日期中的年份  2020
SELECT month(now());   月(不同于java,不用加1SELECT day(now());SELECT hour(now());SELECT minute(now());SELECT second(now());#系统信息函数
SELECT version();#获取MYSQL的版本   5.6.12
SELECT user();#获取当前登录用户信息  root@localhost

聚合函数

avg()
count()  #返回某字段的总行数
max()
min()
sum()

7、LIMIT子句

#limit[位置偏移量(不写默认为0),行数(显示的行数)]
limit 4,6; #从第五条开始显示,一共显示6条

8、IN子查询
使用IN关键字可以使父查询配子查询返回的多个单字段值,
9、分组查询Group by
——>这里不写代码演示,后面结合一个总的数据库的全部查询

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值