1、数据库表操作
1.1 数据库操作
# 1.创建数据库
create database test01;
# 2.删除数据库
drop database test01;
# 3.查询数据库
select databases; # 查询所有数据库
show create database stu; # 查询单个数据库
# 4.查看数据库编码
show variables like 'char%';
或者
show create database stu; # 表同理,把database 修改为table
或者
mysql> status
# 5.修改数据库编码
alter database stu charset='utf8';
1.2 数据表操作
表结构查询
desc 表名;
表创建
create table table_name(
filed_name data_type filed_attr,
字段名 数据类型 字段属性
)
字段名:可以理解为变量,定义了一个名字,取值时用字段名来获取数据表中的值
数据类型:是对字段名的类型进行定义,常见的数据类型如下
-
整形
int
-
浮点型
float 、double、decimal(数的最大长度,小数点后位数)
-
字符类型
-
char
char的长度是不可变的,最多存255个字节,若超过char定义了字符长度,则对存的字符进行截取,只保留char定义的长度内容,后面的内容会丢弃。
-
varchar
varchar长度可变,有多少存多少,不会自动填补空格
varchar对加一个字节的标识,存取速度比char慢。
char 和 varchar 对比
-
char
缺点:浪费空间
优点:存取都很简单,直接按照固定的字符存取数据
-
varchar
优点:节省空间
缺点:存取较为麻烦
1bytes+RION 1bytes+mark。。。
存的时候需要添加报头,取的时候也需要先读报头 之后才能读取真实数据
建议使用varchar类型
-
-
-
时间类型
-
date
年月日
-
datetime
年月日时分秒
-
time
时分秒
-
year
年
-
# 1.创建一个简单的数据表 注意最后一个字段结尾不能加 ","
create table student(
name varchar(20) not null,
age varchar(20) not null,
tel int,
address varchar(20)
);
# 2.使用like 关键字创建表,会将student表结构(包括字段属性)进行复制
mysql> create table student01 like student;
mysql> desc student01; # 展示表结构
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | NO | | NULL | |
| age | varchar(20) | NO | | NULL | |
| tel | int | YES | | NULL | |
| address | varchar(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
# 3.结合 select 复制表 #
# (1)复制表,不能复制 主键、外键、自增等
create table 新表名 select * from 旧表名;
# (2)对数据范围进行取值并复制
create table 新表名 select * from 旧表名 were id > 10;
表名称删除
# 1.表删除
drop table 表名
drop table stu;
表名称修改
alter table 旧表名 rename to 新表名
mysql> alter table job rename to jobs;
或者
rename table 旧表名 to 新表名
mysql> rename table jobs to job01;
表查询
# 表查询
use 数据库名 # 先进入数据库才可以查数据库中所有的表
show tables;
或者
show columns from job; # 结果与上面一样
# 表结构查询
mysql> desc job;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| position | varchar(64) | NO | | NULL | |
| company | varchar(64) | NO | | NULL | |
| address | varchar(128) | NO | | NULL | |
| salary | varchar(32) | YES | | NULL | |
| education | varchar(12) | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+
1.3 数据导入导出
sql文件导出
# 注意是在cmd下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
C:\Users\RION>mysqldump -u root -p bbs > bbs.sql
Enter password: ****
sql文件导入
# 1.先创建数据库
create database bbs01;
# 2.导入文件
source 数据库文件.sql;
# 注意文件路径的斜杆,与window文件斜杆相反的
source C:/Users/RION/bbs01.sql;
Excel文件导入数据库
需要把Excel文件导出为csv文件,然后用记事本打开另存为utf-8格式。
# 1.创建表job 与Excel中的栏一一对应
create table job(
id int,
position varchar(64) not null,
company varchar(64) not null,
address varchar(128) not null,
salary varchar(32),
education varchar(12)
);
# 2.导入数据
load data infile 'Z:/job.csv'
into table job
fields terminated by ',' # 指定以逗号作为分隔','
lines terminated by '\n' # 指定记录行之间的分隔符为换行符'\n'
ignore 1 rows; # 忽略csv中的第一行的表头
# 查询数据
mysql> select * from job;
如果出现报错情况
!如果出现如下报错,因为mysql默认限制导入与导出的目录权限,
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
- 打开 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 注意ProgramData可能需要手动调出来,系统默认是隐藏的。
- 修改配置文件my.ini 中修改为secure-file-priv=‘’
- 重启mysql服务,cmd 中输入service.msc 找到mysql服务右键重启
- 重启后会可能会出现连接失败,这时把my.ini另存为ANSI格式,记得另存为之前备份。
- 以管理员进入powershell,输入net start mysql80(这里的mysql是你的服务名称,我的是mysql80、有的是mysql57等),等待即可成功
2、数据的增删改查
2.1 数据增加
# 表名后面不加字段则默认表中所有字段插入值,注意值与字段类型一一对应
# 1.我们先创建一个数据表
create table stuinfo(
id int not null ,
name varchar(24) not null,
age int not null,
birthday date not null,
gender enum('man','female'), # 枚举,多个选一个
hobby set('book','run','music','basketball','study') default 'study' # 集合,多选多
);
mysql> desc stuinfo; 选多
+----------+------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------------------------------------+------+-----+---------+-------+
| id | int | NO | | NULL | |
| name | varchar(24) | NO | | NULL | |
| age | int | NO | | NULL | |
| birthday | date | NO | | NULL | |
| gender | enum('man','female') | YES | | NULL | |
| hobby | set('book','run','music','basketball','study') | YES | | study | |
+----------+------------------------------------------------+------+-----+---------+-------+
# 2.插入数据,可以括号后加‘,’继续加入数据,这样可以在批量插入时会快很多
insert into stuinfo values(
1,
'tom',
28,
'1992-01-01',
'man',
'study,music'
);
mysql> select * from stuinfo;
+----+-------+-----+------------+--------+----------------------+
| id | name | age | birthday | gender | hobby |
+----+-------+-----+------------+--------+----------------------+
| 1 | jack | 18 | 1999-01-01 | man | book,run,study |
| 2 | rion | 20 | 2000-01-01 | man | book,run,music,study |
| 3 | alice | 19 | 2001-01-01 | female | music,study |
+----+-------+-----+------------+--------+----------------------+
2.2 数据删除
# 删除一条数据
mysql> delete from stuinfo where id=2;
# 表数据清空 -- 方式1
mysql> delete from stuinfo;
# 表数据清空 -- 方式2
truncate stuinfo;
### -- truncate与delete的去区别 -- ###
# delete
1.会清空表中的数据,但是自增变量的记忆不会清楚
2.若数据再次插入时,则不会从新开始,而是从上次的自增位置开始加入
# truncate
1.会清空表中的数据,自增变量的记忆也会清空
2.原理是truncate会删除这张表,同时新建一张新的表。
2.3 数据修改
# 数据修改
# where 是条件语句,该语句表示把id为1的age字段修改为25
mysql> update stuinfo set age = 25 where id =1;
# 注意 #
mysql> update stuinfo set age = 45; # 该sql语句会把表中所有的age字段都会修改为45
2.4 数据查询
# 数据查询
mysql> select * from stuinfo;
# 指定字段数据查询
mysql> select name,age,gender from stuinfo;
+------+-----+--------+
| name | age | gender |
+------+-----+--------+
| tom | 25 | man |
| jim | 45 | man |
+------+-----+--------+
2 rows in set (0.00 sec)
3、字段的增删改查
表字段增加
# 在表后面添加tel字段
mysql> alter table stuinfo add tel int;
# 在表中age之后添加address字段
mysql> alter table stuinfo add address varchar(120) after age;
# 在表中age之后添加address字段并设置默认值为60.00
mysql> alter table stuinfo add grade float default 60.00 after age;
表字段修改
# 修改tel字段为phone -- 使用change关键字
alter table stuinfo change tel phone int;
# 修改address字段类型 -- 使用 modify
alter table stuinfo modify address char(120);
表字段删除
mysql> alter table stuinfo drop phone;
表字段查询
desc stuinfo;
show col
内容可能存在错误,欢迎大家指出错误。谢谢^_^