MySQL数据库基础
数据库的操作
显示当前的数据库
显示当前服务器已有的数据库
语法:
SHOW DATABASES;
创建数据库
语法:
常用语法:CREATE DATABASE [IF NOT EXISTS] 数据库名;
完整语法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
- 大写的表示关键字
- [] 是可选项
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
示例:
- 创建名为nba的数据库
如果系统 没有 nba 的数据库,则创建一个名叫 nba的数据库,如果有则不创建说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。(MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4)
使用数据库
语法:use 数据库名;
删除数据库
语法:DROP DATABASE [IF EXISTS] 数据库名;
说明:
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
常用数据类型
数值类型
数值类型分为整型和浮点型
扩展资料
数值类型可以指定为无符号(unsigned),表示 不取负数。
1字节(bytes)= 8bit。
对于整型类型的范围:
1. 有符号范围: -2^(类型字节数8-1)到 2^(类型字节数 * 8-1)-1,如int是4字节,就是-2^31到 2^31-1
2. 无符号范围:0到 2^(类型字节数8)-1,如int就是 2^32-1
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
字符串类型
注意:
char(n) 和 varchar(n) 中 括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就 可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
日期类型
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
表的操作
需要操作数据库中的表时,需要先使用该数据库
语法如下:
use db_test;
查看表结构
注意:是查看表的结构,不是查看表!!!
desc 表名;
创建表
语法:
CREATE TABLE 表名 (
字段1 数据类型,
字段2 数据类型,
字段3 数据类型
);
示例:
删除表
语法:
drop table 表名;
– 如果存在 [某个] 表,则删除 [某个] 表
drop table if exists 表名;
基础知识总结
操作数据库:
– 查看
show 表;
– 创建
create table 表名(
字段1 类型1,
字段2 类型2,
...
);
– 删除
drop talbe 表名;
常用数据类型:
INT:整型
DECIMAL(M, D):浮点数类型
VARCHAR(SIZE):字符串类型
TIMESTAMP:日期类型
操作表:
– 显示
show databases;
– 创建
create database xxx;
– 使用
use xxx;
– 删除
drop database xxx;
MySQL基本CRUD(增删改查)操作
注释:在SQL中可以使用“--空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
新增(Create)
语法:
– 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
– 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
查询(Retrieve)
全列查询
– 通常情况下不建议使用 * 进行全列查询
– 1. 查询的列越多,意味着需要传输的数据量越大;
– 2. 可能会影响到索引的使用。(索引待后面学了再写一篇)
SELECT * FROM 表名;
指定列查询
– 指定列的顺序不需要按定义表的顺序来
SELECT 字段1, 字段2, 字段3 FROM 表名;
查询字段为表达式
– 查询表达式字段
select 字段1+100,字段2+字段3 from 表
别名
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称
– 别名
select 字段1 别名1, 字段2 别名2 from 表
去重:distinct
使用DISTINCT关键字对某列数据进行去重:
– 去重DISTINCT
select distinct 字段 from 表
排序:order by
– ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 默认为 ASC
没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
可以使用表达式及别名排序
可以对多个字段进行排序,排序优先级随书写顺序
– 排序ORDER BY
select * from 表 order by 排序字段(asc/desc)
默认升序:
条件查询:where
注:
WHERE条件可以使用表达式,但不能使用别名。
AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
– 条件查询WHERE:
– (1)比较运算符 (2)BETWEEN … AND … (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件
如:查找获得三双的球员
分页查询:limit
语法:
– 起始下标为 0
– 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
– 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
– 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
修改(update)
update 表 set 字段1=value1, 字段2=value2... where 条件
修改 威少—>杜兰特
删除(delete)
delete from 表 where 条件
比如 删除 杜兰特 的数据
CRUD内容总结
新增(Create)
– 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
– 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
查询(Retrieve)
– 全列查询
select * from 表
– 指定列查询
select 字段1,字段2... from 表
– 查询表达式字段
select 字段1+100,字段2+字段3 from 表
– 别名
select 字段1 别名1, 字段2 别名2 from 表
– 去重DISTINCT
select distinct 字段 from 表
– 排序ORDER BY
select * from 表 order by 排序字段
– 条件查询WHERE:
– (1)比较运算符 (2)BETWEEN … AND … (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件
修改(Update)
update 表 set 字段1=value1, 字段2=value2... where 条件
删除(Delete)
delete from 表 where 条件