Mysql数据库:数据库管理系统
-
下载地址: http://dev.mysql.com/downloads/windows/installer/8.0.html
-
关系型数据库:
*概念:建立在关系模型基础上,有多张相互连接的二维表组成的数据库。
*特点:
-
使用表存储数据,格式统一,便于维护
-
使用SQL语言操作,标准统一,使用方便。
-
-
SQL分类:
DDL 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML 数据操作语言,用来对数据库表中的数据进行增删改。
DQL 数据查询语言,用于查询数据库中表的记录
DCL 数据控制语言,用来创建数据库用户,控制数据库的访问权限。
数据类型
-
数值类型
类型 | 大小 | 有符号范围(负数) | 无符号范围(正数) | 描述 |
---|---|---|---|---|
tinyint | 1byte | -128--127 | 0-255 | 小整数值 |
smallint | 2 | -32768-32767 | 0-65535 | 大整数值 |
mediumint | 3 | 大整数值 | ||
int /intger | 4 | 大整数值 | ||
bigint | 8 | 极大整数值 | ||
float | 4 | 单精度浮点数值 | ||
double | 8 | 双精度浮点数值 | ||
cecimal | 小数值(精确定点数) |
-
字符串类型
char :定长字符串,性能好 例:性别
varchar :变长字符串 性能较差 例:用户名
-
日期时间类型
类型 | 格式 | 描述 |
---|---|---|
date | YYYY-MM--DD | 日期值 |
time | HH:MM:SS | 时间值或者持续时间 |
year | YYYY | 年份值 |
datetime | YYYY-MM-DD /HH:MM:SS | 混合日期和时间值 |
# DDL 操作数据库
-- 查询所有数据库
SHOW DATABASES;
-- 查询当前数据库
SELECT DATABASE();
-- 创建数据库
CREATE DATABASE if not EXISTS itcast;
-- 创建数据库并设施默认字符集
CREATE DATABASE itcast default charset utf8mb4;
-- 使用数据库
USE mybatis;
-- 删除数据库
DROP DATABASE itcast;
-- 删除数据库
DROP DATABASE if EXISTS itcast;
# DDL操作表 -查询
-- 查询当前数据库所有表
SHOW tables;
-- 查询表结构
DESC tb_brand;
-- 查询指定表的建表语句
SHOW CREATE TABLE tb_user;
-- 创建表
CREATE table tb_croe(
id int comment '编号',
name VARCHAR(50) COMMENT '名字',
age int COMMENT '年龄',
address VARCHAR(50) COMMENT '地址'
) COMMENT '信息';
-- 设计一张员工表
CREATE TABLE emp (
id int ,
name VARCHAR(10),
gender char(1),
age TINYINT UNSIGNED,
idcard char(18),
entrydate date
);
SHOW TABLEs;
DESC emp;
-- 查询表字段
DESC tb_croe;
-- 查询信息
SHOW CREATE TABLE tb_croe;
-- 删除表
DROP TABLE if exists tb_croe;
-- 设计一张员工表
CREATE TABLE emp (
id int ,
name VARCHAR(10),
gender char(1),
age TINYINT UNSIGNED,
idcard char(18),
entrydate date
);
-- 查所有的表
SHOW TABLEs;
-- 表的字段
DESC emp;
#DDL -表操作-修改
-- 添加字段
ALTER TABLE emp add nickname VARCHAR(20);
-- 修改字段名字和字段类型
ALTER table emp CHANGE newname name varchar(10);
ALTER TABLE emp CHANGE nickname username varchar(30);
-- 删除字段
ALTER TABLE emp DROP username;
-- 修改表名
ALTER TABLE emp rename TO employee;
-- 修改数据类型
alter TABLE emp MODIFY idcard VARCHAR(18);
DESC employee;
-- 删除表
DROP TABLE if EXISTS employee;
-- 删除表并创建表
TRUNCATE table emp;
show create table emp;
总结
-
DDL-数据库操作
show databases;
creat database 数据库名;
use 数据库名;
select database();
drop database 数据库名;
-
DDL--表操作
show tables;
create table 表名(字段1 字段类型1,字段2 字段类型2);
desc 表名;
-- 查看创建的表的详细数据
show create table 表名;
alter table 表名 add/modify/change/drop/rename to...;
drop table 表名;
DML
DML -添加数据
# DML -添加数据
-- 给指定字段添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...);
-- 给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
-- 批量添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...);
-- 批量给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
-- 注意:
1.插入数据时,指定字段顺序需要与值的顺序是一一对应的。
2.字符串和日期型数据应该包含在引号中。
3.插入的数据大小应该在范围之内
DML-修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2,...WHERE 条件;
DML-删除数据
DELETE FROM 表名 WHERE 条件;
DQL
DQL-查询语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
-
where 与 having区别
-
执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;而having是分组之后对结果进行过滤。
-
判断条件不同:where不能对聚合函数进行判断,而having可以。
-
注意:
*执行顺序:where>聚合函数>having
*分组之后,查询的字段一般为聚合函数和分组字段,查询其它字段没有意义。
-
DCL
-
DCL-用户管理
1.查询用户
use mysql;
select * from user;
2.创建用户
create user '用户名'@'主机名' identified by '密码';
3.修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password BY '新密码';
4.删除用户
drop user '用户名'@'主机名';函数
-
函数 是指一段可以直接被另一段程序调用的程序或者代码。
字符串函数
函数 | 功能 |
---|---|
concat(s1,s2,...sn) | 字符串拼接,将s1,s2,...sn拼接成一个字符串 |
lower(str) | 将字符串str全部转为小写 |
upper(str) | 将字符串str全部转为大写 |
Lpad(str,n,pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度。 |
Rpad(str,n,pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度。 |
trim(str) | 去掉字符串头部和尾部的空格 |
substring(str,start,len) | 返回从字符串str从start位置起的len长度字符串。 |
-- 字符串函数
-- concat
SELECT CONCAT('hello','hello2')
-- upper
SELECT UPPER('str');
-- lower
SELECT LOWER('STR');
-- lpad
SELECT LPAD('01',5,'+');
-- rpad 01+++
SELECT RPAD('01',5,'+');
-- trim
SELECT TRIM(' hello mysql');
-- substring 索引从1开始的
SELECT SUBSTRING('hello world',1,5);
-- 练习
UPDATE emp set workno = LPAD(workno,5,'0')
-- 数值函数
-- ceil 向上取整 2
SELECT CEIL(1.8);
-- 2
SELECT CEIL(1.1);
-- 向下取整 1
SELECT FLOOR(1.8);
-- 1
SELECT FLOOR(1.1);
-- 返回x/y 的模 3
SELECT MOD(7,4);
-- 返回0~1内的随机数
SELECT RAND();
-- 求参数x的四舍五入的值,保留y位小数 2.15
SELECT ROUND(2.145,2);
-- 练习: 通过数据库的函数,生成一个六位数的随机数验证码
SELECT RAND()*1000000;
-- 取整
SELECT ROUND(RAND()*1000000,0);-- 012546
-- 填充
SELECT LPAD(ROUND(RAND()*1000000,0),6,'0');
-- 日期函数
-- 返回当前日期
SELECT CURDATE();
-- 返回当前时间
SELECT CURTIME();
-- 返回当前日期和时间
SELECT NOW();
-- 获取指定date的年份
SELECT YEAR(NOW