MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理系统,但也不意味着该数据库是完全免费的。
mysql -uroot -proot -- 连接数据库 update user set password=password('123') where user='root' and host='localhost'; -- 修改密码 flush privileges; -- 刷新权限 show databases; -- 查看所有所有数据库 use school; -- 使用数据库 show tables; -- 显示数据库中的表 describe student; -- 查看student表的信息 create databases good; -- 创建一个数据库good exit; -- 退出数据库 ctrl + c 强制退出命令行
1、创建数据库
create database [if not exists] good;
2、删除数据库
drop database [if exist] good;
3、使用数据库
use good;
4、查看数据库
show databases; -- 查看所有数据库
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
tinyint | 1字节 | (-128,127) | (0,255) | 小整数值 |
smallint | 2字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
mediumint | 3字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
int(常用) | 4字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
bigint | 8字节 | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
float | 4字节 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
double | 8字节 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
decimal(金融) | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
字符串
类型 | 大小 | 用途 |
---|---|---|
char | 0-255 bytes | 定长字符串 |
varchar(常用) | 0-65535 bytes | 变长字符串 |
tinyblob | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
tinytext | 0-255 bytes | 短文本字符串 |
blob | 0-65 535 bytes | 二进制形式的长文本数据 |
text(常用) | 0-65 535 bytes | 长文本数据 |
mediumblob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0-16 777 215 bytes | 中等长度文本数据 |
longblob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
longtext | 0-4 294 967 295 bytes | 极大文本数据 |
时间日期
类型 | 大小(字节) | 格式 | 用途 |
---|---|---|---|
date | 3 | YYYY-MM-DD | 日期值 |
time | 3 | HH:MM:SS | 时间值或持续时间 |
year | 1 | YYYY | 年份值 |
datetime | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | 4 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
名称 | 英文名 | 用途 |
---|---|---|
主键 | primary key | 1.能唯一标识记录的字段,可以作为主键。2.一个表只能有一个主键。3. 主键具有唯一性。 |
唯一索引(唯一约束) | unique | 使得某字段的值也不能重复。 |
空\不为空值 | null、not null | 当前列是否可以为null,表示什么都没有 |
默认值属性 | default | 当前字段的默认值 |
自动增长约束 | auto_increment | 只能存在一个字段为自动增长,默认为1开始自动增长。可以通过表属性 auto_increment = x进行设置 |
注释 | comment | 标记名称 |
外键约束 | foreign key | 用于限制主表与从表数据完整性 |
名字 | 作用 |
---|---|
id | 主键 |
version |
乐观锁 |
id_delete | 逻辑删除(不是真实删除) |
gmt_create | 创建时间 |
gmt_update | 修改时间 |
CREATE TABLE IF NOT EXISTS `student` ( `id` INT ( 4 ) NOT NULL auto_increment COMMENT '序号', `name` VARCHAR ( 30 ) NOT NULL DEFAULT '小欧' COMMENT '姓名', `pwd` VARCHAR ( 8 ) NOT NULL DEFAULT '123456' COMMENT '密码', `birthday` datetime DEFAULT NULL COMMENT '出生日期', `address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '住址', `emain` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY ( `id` ) ) ENGINE = INNODB DEFAULT CHARSET = utf8;
数据库索引引擎索引 MyISAM早些年使用 InnoDB默认使用
MyISAM | InnoDB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为MyISAM的2倍 |
常规使用操作:
在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹对应一个数据库。(本质还是文件的存储)
mysql引擎在物理文件上的区别
设置数据库表的字符集编码
CHARESET=utf8
通用的 INSERT INTO SQL语法
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
INSERT INTO student ( NAME, pwd ) VALUES ( 'Wilson', 158 ), ( 'Zhangsan', 568 ), ( 'Lishi', 896 );
UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
UPDATE student SET name='Zhangsan2' WHERE id=2;
DELETE 语句从 MySQL 数据表中删除数据的通用语法
DELETE FROM table_name [WHERE Clause]
delete from student where id =2;
-- 查询全部数据 select * FROM student; -- 查询指定字段 select name,pwd from student; --别名 select `name` as 姓名,'pwd' as 密码 from student as s; --函数 Concat(a,b) select concat('姓名:',name) as 张三 from student;
语法:select 字段... from 表
数据去重,重复数据只显示一条
-- 查询全部学生 select `name` FROM student; -- 姓名去重 select DISTINCT `name` FROM student;
数据库列
-- 密码字段+1 select DISTINCT name as 姓名,pwd +1 as 密码 FROM student;
运算符 | 语法 | 描述 |
---|---|---|
and | a and b | 逻辑与 |
or | a or b | 逻辑或 |
not | not a | 逻辑非 |
SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source >80 and source <100 SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source <50 or source >70 SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE NOT source <50
运算符 | 语法 | 描述 |
---|---|---|
is null | a id null | 为null是真 |
is not null | b is not null | 不为null是真 |
between and | a betweeen and b | 在a与b之间,为真 |
like | a like b | sql匹配,如果a匹配b,则真 |
in | a in (a1,a2,a2) | a在a1或者a2.。。中为真 |
like %(0到任意个字符 ) _(一个字符) |
SELECT name 姓名,pwd 密码,source `分数` FROM `student` where pwd like '5%' SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source BETWEEN 80 and 100 SELECT name 姓名,pwd 密码,source `分数` FROM `student` WHERE source in (55,25,68,59,98,400,100)
-- INNER JOIN SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author; -- LEFT JOIN SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author; -- RIGHT JOIN SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
-- curPage页数 pageSize一页的多少条数据 limit (curPage-1)*pageSize,pageSize
SELECT * FROM `student` LIMIT 0,2
-- 升序 asc 降序 desc -- order by 字段排序 -- SQL语句后加上 字段名 order by asc或desc
函数名 | 作用 | |
---|---|---|
count() | 计数 | |
sum() | 求和 | |
avg() | 平均数 | |
max() | 最大值 | |
min() | 最小值 | |
SELECT count('name') FROM student -- count(字段名) 会忽略所有的null值 SELECT count(*) FROM student -- count(*) 不会忽略null值,本质计算行数 SELECT count(1) FROM student -- count(1) 不会忽略null值,本质计算行数
分组 GROUP BY
GROUP BY <字段名> 一般和聚合函数一起使用
select name 姓名,pwd,avg(source) 平均数,max(source) 最大值,min(source) 最小值 from student GROUP BY name
数据库MD5加密
插入时使用
insert into student values('xiaozhi',md5('123456')) //插入数据加密 UPDATE `student` SET pwd=MD5(pwd) where id = 1; //修改加密数据