MySQL基础学习一

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

内容可能存在错误,欢迎大家指出错误。谢谢^_^

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值