MySQL基础-1 数据库基础操作、创建和删除表、对表进行增删改查、alter操作

数据库操作

1 创建和删除数据库

创建数据库:create database database_name charset=utf8;
show databases;查询所有数据库;
select database();查询正在使用的数据库;
use database_name;切换数据库;
quit和exit都可以用来退出数据库;
删除数据库:drop database database_name;


2 创建和删除表

创建表:
create table 表名 (
字段1 字段类型[列级别约束条件][默认值],
字段2 字段类型[列级别约束条件][默认值],
….
字段n 字段类型[列级别约束条件][默认值]
[表级别约束条件]
);
演示:创建students表
create table students(
id int primary key auto_increment,
name varchar(20),
age int
);
删除表:
drop table table_name;
show tables; 查询当前数据库下的所有表

注意:如要再次使用数据库,则需要重新登录


3 sql数据类型

常用数据类型

1.数字数据类型

int:
正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。如果是无符号,允许的范围是从0到4294967295。 可以指定多达11位的宽度。
tinyint:
一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。如果是无符号,允许的范围是从0到255,可以指定多达4位数的宽度。
smallint:
一个小的整数,可以带符号。如果有符号,允许范围为-32768至32767。如果无符号,允许的范围是从0到65535,可以指定最多5位的宽度。
mediumint:
一个中等大小的整数,可以带符号。如果有符号,允许范围为-8388608至8388607。 如果无符号,允许的范围是从0到16777215,可以指定最多9位的宽度。
bigint:
一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615. 可以指定最多20位的宽度。
float(M,D):
不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。小数精度可以到24个浮点。
double(M,D):
不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的,默认为16,4,其中4是小数的位数。小数精度可以达到53位的DOUBLE。 REAL是DOUBLE同义词。
decimal(M,D):
非压缩浮点数不能是无符号的。在解包小数,每个小数对应于一个字节。定义显示长度(M)和小数(D)的数量是必需的。 NUMERIC是DECIMAL的同义词。[decimal]


2.日期和时间类型

date:
以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。
datetime:
日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。
timestamp:
1970年1月1日午夜之间的时间戳,到1973的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为19731230153000(YYYYMMDDHHMMSS)。
time:
存储时间在HH:MM:SS格式。
year(M):
以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。


3.字符串类型

虽然数字和日期类型比较有意思,但存储大多数数据都可能是字符串格式。 下面列出了在MySQL中常见的字符串数据类型。
char(length):
固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。
varchar(length):
可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。 [varchar]
blob or text:
字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据; 两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。
tinyblob 或 tinytext:
BLOB或TEXT列用255个字符的最大长度。不指定TINYBLOB或TINYTEXT的长度。
mediumblob or mediumtext:
BLOB或TEXT列具有16777215字符的最大长度。不指定MEDIUMBLOB或MEDIUMTEXT的长度。
longblob 或 longtext:
BLOB或TEXT列具有4294967295字符的最大长度。不指定LONGBLOB或LONGTEXT的长度。
enum:
枚举,这是一个奇特的术语列表。当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为 ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。
注意:主要了解 char 和 varchar 的区别
char(M)是固定长度的字符串, 在定义时指定字符串列长。当保存数据时如果长度不够在右侧填充空格以达到指定的长度。M 表示列的长度,M 的取值范围是0-255个字符 name char(20)
varchar(M)是长度可变的字符串,M 表示最大的列长度。M 的取值范围是0-65535。varchar的最大实际长度是由最长的行的大小和使用的字符集确定的,而实际占用的空间为字符串的实际长度+1


4 select 查询

详解请点击
查找全部数据:
select * from table_name;
查找部分字段的数据:
select 字段1,字段2… from table_name;
查找不重复的字段的那一列数据:
select distinct 字段名 from table_name;
按某一字段升序或降序查询数据(desc是降序,asc是升序,默认是升序,也就是说asc可以省略不写)
select * from table_name order by 字段名 方法;
select * from table_name order by 字段1 方法1,字段2 方法2;
select 也可以配合where子句一起使用


5 insert 插入

语法:
单行插入
insert into table_name (field1, field2,…fieldN) values(value1, value2,…valueN);
多行插入[批量插入]
insert into table_name (field1, field2,…fieldN)
values
(value1, value2,…valueN),
(value12, value22,…valueNN)…;

注意:
a.列名和列值的类型、个数以及顺序一一对应
b.可以把列名当做Python中的形参,把列值当做实参
c.值不能超出列定义的长度
d.如果插入的是空值,写Null/null
e.插入的是日期,和字符串一样,使用引号括起来 “1988-11-22 10:11:12”


6 update更新

语法:
update table_name set field1=new-value1, field2=new-value2 where语句
注意:
a.完全可以更新一个字段或者多个字段
b.where相当于Python中的if语句
c.可以指定任何条件到where子句中
d.如果没有where子句,则默认所有的行都被同时更新为指定的操作[慎用!一般要结合where使用]


7 delete删除

语法:

delete from table_name where语句
注意:
a.如果where子句没有指定,则默认将表中的数据全部删除【慎用!】
b.可以指定任何条件在where子句中
删除表中的数据的方法有delete,truncate, 其中truncate table用于删除表中的所有行,而不记录单个行删除操作。truncate table与没有 where 子句的 delete 语句类似;但是,truncate table 速度更快,使用的系统资源和事务日志资源更少
truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。
注意:
delete:删除表中的指定数据,表结构还在,删除之后的数据可以找回,对自动增加的字段无影响
truncate:清空表中的数据,删除的数据是不能找回的,执行速度比delete快,自动增加的字段会重新计数
drop: 删除表,数据和表结构都删除


8 where子句

语法:
注意:where子句其实就是一个操作符,类似于Python中的if语句,可以做数据的筛选

操作符 说明
= 相等
<> / != 不相等
< 小于
<= 小于等于
> 大于
>= 大于等于
in (A,B,…) 括号里中间的一个
between A and B 位于两值之间(包含A和B)
AND 连接多个表达式 并且的关系

9 alter操作

1.修改表名
语法规则:alter table old_table_name rename new_table_name;

2.修改字段的数据类型
语法规则:alter table table_name modify 需要修改的字段名 新的数据类型;
修改完成之后可以查看desc table_name检验结果

3.修改字段名
语法规则:alter table table_name change 旧字段名 新字段名 新的数据类型;
想修改就写新的数据类型,不想改就写原来的数据类型,必须写上数据类型,不写会报错

4.添加字段
语法规则:alter table table_name add 新字段名 数据类型 [约束条件] (first|after 已经存在的字段名);
书写的时候不用写[]
first: 设置成第一个
after 字段2: 在指定字段2的后面
不设置约束条件就是默认添加在最后

5.删除字段
语法规则:alter table table_name drop 字段名;

6.修改字段的排列位置
语法规则:alter table table_name modify 字段1 数据类型 [约束条件] (first|after 字段2);
first: 设置成第一个
after 字段2: 在指定字段2的后面

7.删除表的外键约束
语法规则:alter table table_name drop foreign key 外键约束名(不是字段名)

8.删除数据表
删除没有被关联的表
语法规则:drop table [if exists] 表1,表2…
删除被其他表关联的的表
直接删除会出现错误的
操作: 先解除关联 再进行删除

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/112171225