Mysql数据库

数据库概念

什么是数据库?

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。简单来说,数据库就是管理数据的一个库。
常见的数据库分为关系型数据库和非关系型数据库:

  • 关系型数据库:关系型数据库是一种基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来。如下图所示:
    关系模型图
    常见的关系型数据库:MySQL、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Percona Server(MySQL的代替品·)、PostgreSQL、Microsoft Access、Microsoft SQL Server、Google Fusion Tables、FileMaker、Oracle数据库、Sybase、dBASE、Clipper、FoxPro、foshub。
  • 非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。
    非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。
    常见的非关系型数据库:BigTable(Google)、Cassandra、MongoDB、CouchDB。
    链接: 简述关系型数据库和非关系型数据库.

Mysql数据库

Mysql数据库安装

链接: 数据库Mysql安装.

Mysql数据库作用

  1. mysql服务端,它来处理具体数据维护,保存磁盘。
  2. mysql客户端,CRUD新增,修改,删除,查询。

Mysql数据库配置

mysql安装目录下查找my.ini文件:
mysql配置文件
如果没有该文件可以新建一个txt文件,内容为:

[mysqld] 
# 设置mysql的安装目录,也就是刚才我们解压的目录
basedir=C:/mysql-8.0.13-winx64
# 设置mysql数据库的数据的存放目录
# datadir=C:/mysql-8.0.13-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件作为认证加密方式
# MySQL8.0默认认证加密方式为caching_sha2_password
default_authentication_plugin=mysql_native_password
 
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
 
[client]
default-character-set=utf8mb4
port=3306

然后修改文件为:my.ini

Mysql数据库的使用

数据库结构

数据库–>表–>记录(行,列,属性)

数据库结构

SQL语句

1.定义:

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ “S-Q-L”),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

2.分类:
  • DML(Data Manipulation Language)数据操纵语言
    如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete
  • DDL(Data Definition Language)数据库定义语言
    如:create table之类
  • DCL(Data Control Language)数据库控制语言
    如:grant、deny、revoke等,只有管理员才有相应的权限
  • DQL (Data Query Language):数据查询语言
    注意:SQL不区分大小写
3.数据库常用操作:
客户端操作:根据软件提示操作就行。
DOS命令框操作:
  • 启动MySQL服务:net start mysql —>mysql 服务正在启动, —》 服务已成功启动
  • 停止MySQL服务:net stop mysql —>mysql 服务正在停止, —》 服务已成功停止
  • 进入MySQL数据库系统:mysql -u root -p 密码(一般密码为root,例如:mysql -u root -p root)回车
–1.数据库

查看库:show databases;(注意有分号)
创建库:create database 库名;
删除库:drop database 库名;
使用/打开库:use 库名;
显示当前使用的数据库:select database();

–2.表

查看表:先use 库名打开指定数据库,然后使用show tables;打开指定库的表。
获取表结构: desc 表名;,或者show columns from 表名;
创建表:create table 表名(字段名 字段类型(长度),字段2,.....);
删除表:drop table 表名;
修改表:alter table 表名 add column 字段名 字段类型(长度);

–3.记录!!!
  1. 创建:insert into 表名 values('字段1的值',"字段2的值",.......);
    指定字段赋值:insert into 表名(字段1,字段2) values('字段1的值',"字段2的值");
    正文乱码:set names gbk;切换编码格式
  2. 修改:update 表名 set 字段名=新的字段值;
    修改表中数据:update 表名 set 字段=新值,… where 条件;
    例如: update 表名 set name=‘Mary’ where id=1;
  3. 删除:delete from 表名;(删除表中所有数据)
    删除表中数据:delete from 表名 where 表达式
    查询:select * from 表名;
  4. 查询:select * from 表名;
    查询所有行:select <字段1,字段2,…> from < 表名 > where < 表达式 >
    例如:查看表 MyClass 中所有数据:mysql> select * from MyClass;
    按照某字段排序:select * from 表名 order by 字段名 desc;
    前两行数据:select * from 表名 limit 0,2;
  5. 更改表名:rename table 原表名 to 新表名;
      例如:rename table 旧表名 to 新表名;
      更新字段内容
      update 表名 set 字段名 = 新内容
      update 表名 set 字段名 = replace(字段名,‘旧内容’,‘新内容’);
–4.数据类型
命名规则
  • 字段名必须以字母开头,尽量不要使用拼音
  • 长度不能超过30个字符(不同数据库,不同版本会有不同)
  • 不能使用SQL的保留字,如where,order,group
  • 只能使用如下字符az、AZ、0~9、$ 等
  • Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
  • 多个单词用下划线隔开,而非java语言的驼峰规则
字段类型:

1.INT[(M)] 型: 正常大小整数类型
2.DOUBLE[(M,D)] [ZEROFILL] 型: 正常大小(双精密)浮点数字类型
3.DATE 日期类型:支持的范围是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符。
6.VARCHAR型:变长字符串类型

字段约束:
主键约束

主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。

添加主键约束,例如将id设置为主键:

  • 主键自增策略** **当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1
    . AUTO_INCREMENT=1
create table 表名(id int primary key auto_increment);
非空约束

非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

添加非空约束,例如为password添加非空约束:

create 表名 user(
id int primary key auto_increment,
password varchar(50) not null
);
唯一约束

唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

添加唯一约束,例如为username添加唯一约束及非空约束:

create table test(
id int primary key auto_increment,
username varchar(50) unique--唯一约束
);
–5.常用函数
lower
SELECT 'ABC',LOWER('ABC') from dept; --数据转小写
upper
select upper(dname) from dept --数据转大写
length
select length(dname) from dept --数据的长度
substr
SELECT dname,SUBSTR(dname,1,3) FROM dept; --截取[1,3]
concat
select dname,concat(dname,'123') X from dept --拼接数据
replace
select dname,replace(dname,'a','666') X from dept --把a字符替换成666
ifnull
select ifnull(comm,10) comm from dept2 #判断,如果comm是null,用10替换
round & ceil & floor

round四舍五入,ceil向上取整,floor向下取整

–直接四舍五入取整

select comm,round(comm) from emp

–四舍五入并保留一位小数

select comm,round(comm,1) from emp

–ceil向上取整,floor向下取整

select comm,ceil(comm) ,floor(comm) from emp
uuid

SELECT UUID()

返回uuid:a08528ca-741c-11ea-a9a1-005056c00001
now
select now() -- 年与日 时分秒

select curdate() --年与日

select curtime() --时分秒
year & month & day

–hour()时 minute()分 second()秒

select now(),hour(now()),minute(now()),second(now()) from emp ;

–year()年 month()月 day()日

select now(),year(now()),month(now()),day(now()) from emp ;
转义字符

'作为sql语句符号,内容中出现单撇就会乱套,进行转义即可

select 'ab'cd' -- 单引号是一个SQL语句的特殊字符

select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值