day01-数据库基础
一、MySQL回顾
MySQL介绍
MySQL是一款Oracle公司出口的轻量级数据库软件,广泛应用于互联网场景,同时也是目前最主流的数据库。
MySQL的优点
MySQL相对于文件系统,优点如下:
1.mysql的结构相对于文件系统更方便管理
2.mysql支持各种编程语言
3.mysql比文件系统支持更大规模的数据
4.mysql更具备扩展性
5.mysql数据能更快检索
6.mysql支持分布式
MySQL的下载与安装
MySQL可视化工具:navicat,sqlyog
SQL分类
DDL:数据库定义语句,用于数据库,表,列的管理,create,drop,alter
DML:数据库表中的CUD,表数据的增删改,insert,update,delete
DQL:表数据的查询:select
DCL:权限控制
TCL:事务控制
CCL:指针控制,指针管理
二、MySQL
软件:mysql是数据库软件
数据库:仓库,是一个数据仓库(数据库管理系统)。通常一个项目对应了一个数据库
数据表:一个数据库中有无数张表,表中存放了数据
列:数据表的表头, 表头由一列列组成
用户管理(DDL)
-- 用户管理 -- SELECT 列名,列名,... from mysql.user; SELECT host,user FROM mysql.user; -- 创建用户 -- host表示允许哪些ip地址能访问 改成%就是所有人都能连接 -- CREATE user '用户名'@'ip地址' IDENTIFIED BY '密码'; CREATE user 'zs' @ 'localhost' IDENTIFIED BY '123'; -- 修改密码 alter user 'zs' @ 'localhost' IDENTIFIED BY '456';
权限操作(DCL)
-- 权限管理 -- 用户授权 -- grant 权限码 on 数据库名.表名 to 用户名@主机名 identified by 'password'; grant all on *.* to 'zs'@'localhost'; -- 查看用户权限 -- show grants for 用户名@主机名; show grants for 'zs' @ 'localhost'; -- 取消用户权限 -- REVOKE 权限码 ON 库名.表名 FROM 用户名@主机名 REVOKE all on *.* FROM 'zs' @ 'localhost'; -- 刷新权限 FLUSH PRIVILEGES;
数据库操作(DDL)
-- 创建数据库 -- create database 数据库名称; -- 直接创建 -- create database if not exists 数据库名称; -- 如果不存在 -- create database if not exists 数据库名称 character set 编码; --创建并指定编码 -- CREATE DATABASE db2; -- CREATE DATABASE IF NOT EXISTS db2; CREATE DATABASE IF NOT EXISTS db2 CHARACTER SET 'utf8'; -- 推荐 -- 查看当前所有数据库 -- show DATABASES; -- 查看数据库定义语句 SHOW CREATE DATABASE db2; -- 修改数据库字符集 -- ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集 ALTER DATABASE db2 DEFAULT CHARACTER SET 'utf8'; -- 使用数据库(一般用于命令行下使用) use db1; select * from tb_user;
数据表的操作
-- 创建数据库 create DATABASE db1 CHARACTER SET 'utf8'; -- 使用数据库 use db1; -- 创建用户表 -- CREATE TABLE 表名( -- 字段名 字段类型(长度), ... -- )ENGINE = INNODB 代表数据库引擎,不同引擎有不同的效果,默认是innodb,innodb是一个支持事务的数据库引擎 -- CREATE TABLE if not EXISTS t_user( name VARCHAR(255), sex VARCHAR(255), age INT(3) ) ENGINE = INNODB DEFAULT CHARSET 'utf8'; -- 快速创建一张表结构一样的表 -- CREATE TABLE 新表名 LIKE 旧表名 CREATE TABLE t_user2 LIKE t_user1; -- 查看表 -- 1.查看当前数据库下有哪些表 show TABLES; -- 2.查看表的结构 DESC t_user; -- 3.查看建表语句 SHOW CREATE TABLE t_user; -- 删除表 DROP TABLE t_user; -- 修改表 -- 1.添加列 -- ALTER TABLE 表名 add 列名 类型 ALTER TABLE t_user ADD address VARCHAR(255); -- 2.修改列类型 -- ALTER TABLE 表名 MODIFY 列名 新的数据类型 ALTER TABLE t_user MODIFY sex char(2); -- 3.修改列名 -- ALTER TABLE 表名 CHANGE 旧列名 新列名 类型; ALTER TABLE t_user CHANGE name username VARCHAR(255); -- 4.删除列 -- ALTER TABLE 表名 DROP 列名 ALTER TABLE t_user DROP address; -- 5.修改表名 -- RENAME TABLE 表名 to 新表名 RENAME TABLE t_user to t_user1; -- 6.修改字符集 -- ALTER TABLE 表名 CHARACTER set 字符集; ALTER TABLE t_user1 CHARACTER set 'utf8';
mysql数据类型
整数:
int(常用)
bigint(常用)
浮点:
float
double(常用)
定点小数:
decimal
日期时间:
datetime(常用)
date(常用)
字符:
char:定长字符串
varchar:变长字符串(常用)
longtext:超大文本
枚举
set
CREATE TABLE test( d1 int, d2 bigint, d3 float(4,3), d4 double(10,4), d5 datetime, d6 date, d7 char(3), d8 VARCHAR(255), d9 LONGTEXT )ENGINE=INNODB DEFAULT CHARSET 'utf8';
表数据的CRUD
-- 向表中添加一行数据 -- insert into 表名(列名,...) values(值1,值2...); insert into t_user1(username,age,sex) VALUES('张三',20,'男'); -- 批量操作 -- insert into 表名(列名,...) values(值1,值2...),(值1,值2...),(值1,值2...)...; INSERT INTO t_user1(username,age,sex) VALUES('张三',18,'男'),('张三',18,'男'),('张三',18,'男'); insert into t_user1(username) VALUES('张三'); -- 删除表中数据 -- 删除数据 -- delete from 表名 where 列名=值 and 列名=值 and 列名=值; DELETE FROM t_user1 WHERE age = 18; -- 修改表中数据 -- update 表名 set 列名=值 , 列名 = 值... UPDATE t_user1 set username='李四',sex = '男' WHERE age = 20; -- 查询表中数据 -- select 列名,... from 表名 where 列名=值; select username,age,sex from t_user1; select * from t_user1;