当前位置: 首页>后端>正文

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记

Dos相关命令

# 需要进入MYSQL的bin目录下执行
# 连接到MYSQL服务,注意-P为大写
mysql -h 主机IP -P 端口 -u 用户名 -p密码 

# 主机IP为本地localhost,端口3306,用户名root,密码admin
mysql -h localhost -P 3306 -u root -padmin


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_自增长,第1张

1. 创建数据库

# 可以往“数据库名”后面空格添加其他一些设置属性
create database 数据库名;
  • character set 字符集:设置数据库编码字符集,默认为utf8
  • collate utf8 字符集校对规则:设置字符集校对规则,常用的有utf8 bin【区分大小写】,utf8 general ci【不区分大小写,默认为此】

2. 查看、删除数据库

# 查看当前使用的数据库
select database();	
# 查看数据库
show databases;  
# 查看创建这个数据库时使用的语句
show create database 数据库名称;  
# 删除一个数据库
drop database 数据库名;

3. 数据库备份

同样需要在管理员身份运行DOS并进入bin目录才能执行语句

# 备份数据库到指定文件夹
mysqldump -u 用户名 -p密码 -B 数据库1 数据库2 数据库n  > D:\文件名.sql
# 备份具体数据库中的某些表
mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > D:\文件名.sql
# 在mysql服务下使用,可以将sql文件的内容全部执行即恢复数据
source sql文件路径;

4. 创建表

# 如果变量中有关键字需要用''将关键字圈起来
create table 表名(
变量名 类型, 
# 若要添自增(auto_increment)等附加功能可以添加在同一行
……
)[character set 字符集 collate 校对规则 engine 存储引擎];

建表关键字

用法都是在建表时,加在变量类型后边,顺序没啥要求

  • default xxx:设置默认值,当插入数据无此列值时,会自动用默认值xx填充
  • not null:标注了此关键字的列插入数据时列值不允许为NULL【其可以的default配合,不传数据时就用default填充】
  • auto_increment自增长
  • 一般来说自增长是和primary key配合使用的
  • 自增长也可以单独使用【但是需要配合unique
  • 自增长修饰的字段为整数型的
  • 自增长默认从1开始,也可以通过如下命令修改起始值
alter table 表名 auto increment = 新的开始值;
  • 如果添加数据时,给自增长字段【列】指定的有值,则以指定的值为准。不过一般来说如果指定了自增长就按照自增长的规则来添加数据

5. 数据类型

5.1 数值型

在能满足需求的情况下,尽量选择存储空间小的,intdouble可以满足现实绝大多数要求

数据类型

含义

对应范围

tinyint

极小整数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

smallint

小整数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

mediumint

中等整数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

int

大整数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

bigint

超大整数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

float

单精度浮点数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

double

双精度浮点数

韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

decimal

精确小数

小数点前可以指定不大于65的位数,小数点后可以指定不大于30的位数,不产生误差

5.2 字符型

数据类型

含义

对应范围

char

固定长度字符串

长度 韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

varchar

可变长度字符串

1-65532字节,字符数取决于编码

text

长文本字符串

长度 韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

longtext

极长的文本字符串

长度 韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,第2张

字符型使用细节

  • char(4)里的4表示字符数【最大255】,而不是字节数,不管是中文还是字母都是放4个,按字符计算
    varchar是按照字节编码的,不同的字符集对应的字节数量不同,因此size最大不一定为65532
  • char(4)是定长的,即使只插入aa,也会占用分配的4个字符的空间.
    varchar(4)是变长的,就是说,如果你插入了aa,实际占用空间大小并不是4个字符,而是按照实际占用空间来分配。同时varchar本身还需要占用1-3个字节来记录存放内容长度,所以实际大小会多上1-3字节
  • 查询速度 char > varchar如果数据是定长,推荐使用char,比如md5的密码,身份证号码等
    如果一个字段的长度是不确定,我们使用varchar,比如留言,文章
  • 在存放文本时,也可以使用Text数据类型。可以将Text列视为varchar列,注意Text不能有默认值【即不需要在定义时加小括号填数值】,如果希望存放更多字符,可以选择longtext

5.3 日期型

日期常用类型数据有三种:

  1. date:形如2023-03-29
  2. datetime:形如2023-03-29 11:55:33
  3. timestamp:形如形如2023-03-29 11:55:33【形式与datetime一样,目前不清楚使用上二者有何差别】
CREATE TABLE t(
birthday DATE, #生日
job_time DATETIME, #年月日时分秒
#时间戳,默认为当前时间,表每次insert和update后时间戳也更新
login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO t(birthday,job_time) VALUES('2020-01-01','2022-01-01 10:10:10');
SELECT * from t;


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_自增长_12,第12张

6. 操作表

# 查看当前表结构
desc 表名;

6.1 修改表结构

# 表改名
Rename table 原名 to 新名;  
# 改表字符集
alter table 表名 character set 字符集; 
# 删除表
drop table 表名; 
# 修改表编码
alter table 表名 convert to character set utf8;
# 查询数据库的所有表名
select table_name from information_schema.`TABLES` where TABLE_SCHEMA = '数据库名';

6.1.1 增列结构

# 默认新列加在最后一列位置
alter table 表名 add 列名 列类型 列参数;
# 新列加在指定列后
alter table 表名 add 列名 列类型 列参数 after 指定列名; 
# 新列加在第一列位置
alter table 表名 add 列名 列类型 列参数 first;

6.1.2 修改列类型

# 修改列类型
Alter table 表名 modify 列名 新类型 新参数;		
# 修改列名及列类型
Alter table 表名 change 旧列名 新列名 新类型 新参数;

6.1.3 删除列结构

alter table 表名 drop 列名;

6.1.4 修改列位置

# 将列位置修改到指定列之后
alter table 表名 add 列名 列类型 列参数 after 指定列名; 
# 将列位置修改到第一列
alter table 表名 add 列名 列类型 列参数 first;

6.2 增删改查

6.2.1 增insert

# 若不声明列名,则默认插入所有列
insert into 表名 (列名) values (对应列名数据,可一次加多行数据);


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_表名_13,第13张

6.2.2 删delete

# 删除满足条件的【整行】数据,若无表达式则删除所有记录
delete from 表名 where 表达式;

6.2.3 改update

# 若没有where语句则会修改所有列内容
update 表名 set 列名1=新值1,列名2=新值2 where 表达式(限定范围);

6.2.4 查select

# 列名为*则选择所有列,在列名前加distinct可以去重【完全一样才去重】
select 列名 from 表名 where 表达式;
# select中的列名可看作变量,因此可以进行运算,运算后的结果加as可以产生新列名
# 将stu表中的 score列值与score2列值相加,为其命名为temp并和name一起显示
select name,(score+score2) as temp from stu;

6.3 where过滤

where可以根据条件过滤掉不符合条件的内容


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_数据库_14,第14张

6.4 like模糊查询

like是模糊查询,%表示0到多个任意字符,_表示单个任意字符

# 查看stu表中姓 张 的所有同学
select * from stu where name like '张%';

6.5 order by结果排序

order by指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。

order by可以按照多列排序,用逗号隔开

# 将stu表按照score列逆序排序【默认为asc,即顺序】
select * from stu order by score desc;

6.6 group by分组统计

group by 列名会把同样列值的分为一组,同时我们应该想到,分组后其余非分组条件的列会被压缩,因此需要用聚合函数【比如sum求和】对这些列值进行处理

group by同样可以按照多列分组,用逗号隔开

# 查看stu表中生日相同的学生中的得分平均值
select avg(score) from stu group by birthday;

6.7 having二次过滤

having是对过滤结果的补充过滤,通常放在group by后面


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_数据库_15,第15张

# 查看stu表中生日相同的学生中的得分平均值超过60的分数
select avg(score) as mean_score from stu
group by birthday
having mean_score>60;


韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记,韓順平 创建表EMP雇员 CREATETABLEemp 韩顺平mysql笔记_数据库_16,第16张

6.8 limit分页显示

limit length:从头开始取length条数据

limt startIndex,length:从startIndex【开头为0】开始取length条数据

limit length offset startIndex:含义同上


https://www.xamrdz.com/backend/3d21938781.html

相关文章: