一、常用的数据类型

1、int(N)

int(N)中的N不是限制字段取值范围的,int的取值范围是固定的(0至4294967295)或(-2147483648至2147483647)。N这个值是为了zerofill在字段中的值不够时补零的。

int默认是signed(有符号),取值范围(-2147483648至2147483647)。如果加了unsigned( 无符号)参数那么取值范围就为(0至4294967295)。

2、float(m,d)

设一个字段定义为float(6,3),表示6个有效长度数字,小数点后面有3位。如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。如果插入数12.123456,存储的是12.123,如果插入12.12,存储的是12.120。

整数部分最大是3位,如果插入1234.56,会插入失败。

3、char与varchar

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

二、查看数据库结构

mysql默认不区分大小写,表名和库名区分大小写。

在Linux系统中,命令结束后一定要加分号,结尾符。

1、查看当前服务中的数据库

show databases;    #查看数据库

在这里插入图片描述

2、查看数据库中存在的表

方法一:
use  数据库名;     #切换库
show  tables;     #查看库中的表
 
方法二:
 show tables from 数据库名;    #直接查看某个库中的表
 例:show tables from mysql;

在这里插入图片描述
在这里插入图片描述

3、查看表结构

 方法一:
 use 数据库名;     #切换库
 desc 表名;     #查看指定表的结构
 
 方法二:
 desc [数据库名.]表名;
 可缩写成:desc 数据库名.表名;
 例:desc mysql.user;

在这里插入图片描述
在这里插入图片描述

三、SQL语句

关系型数据,都是使用SQL语句来管理数据库中的数据。

SQL及结构化查询语言。

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

1、SQL语言规范

SQL语句可单行或多行书写,默认是以英文 " ; "结尾,关键字不能跨多行或简写。子句通常位于独立行,便于编辑,提高可读性。

命名规则:

必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)

不要使用MySQL的保留字,如table、select、show、databases。

数据库名、表名、用户名区分大小写

2、SQL语言分类

(1)DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。

如:CREATE,DROP,ALTER 等。

(2)DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。

如: SELECT、UPDATE、INSERT、DELETE 等。

(3)DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。

如: SELECT

(4)DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限。

如: GRANT,REVOKE

(5)TCL:事务控制语言(Transaction Control Language),用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。

四、创建、删除数据库和表

1、创建数据库

create database 库名;    #创建数据库

在这里插入图片描述

2、创建表

 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);
 
 #主键一般选择能代表唯一性的字段,不允许取空值(NULL),值也不允许重复,主键字段的值是唯一的。一个表只能有一个主键。
 
  USE school;                  #切换school库
 CREATE TABLE class (id int NOT NULL,name char(10) NOT NULL,score decimal (6,2),passwd char(48) DEFAULT '',PRIMARY KEY (id));        #新建表class
 
 #第一个字段名id,数据类型是int整数型,NOT NULL不许为空值。
 #第二个字段名name,数据类型是char固定长度的字符,长度是10个字节。
 #第三个字段名score,数据类型是decimal (6,2),表示5个有效数字、其中小数点后2位。
 #第四个字段名passwd,DEFAULT '' 表示默认值是无值(不是空值null)。
 #PRIMARY KEY (id),表示id字段是主键。
 
 DESC class;    #查看class表的结构

在这里插入图片描述

3、删除数据表

drop table [数据库名.]表名;
 
例:drop table class01;

在这里插入图片描述

4、删除数据库

drop database 数据库名;
 
例:drop database  school;

在这里插入图片描述

五、管理数据表中的记录(增删改查)

1、向表中插入新的信息(增)

 方法一:为所有字段插入值
 insert into 表名 values (所有字段的值);    #每个字段值用逗号相隔;
 
方法二:为指定字段插入值
 INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);    #注意字段的属性not null,则必须为该字段插入值

 #下面这条命令不生效,因为name字段设置了not null,不允许为空值。
 INSERT INTO student (id, score, age,gender) values (3, 88, 123123);
 
 SELECT * FROM student;    #查询表的数据记录

1.先创建个数据表student
 create table student(id int NOT NULL,name char(5) NOT NULL,age char(6),sex char(8));
2.向表中添加数据
insert into student values('01','李华','16','M');
Query OK, 1 row affected (0.00 sec)

insert into student values('03','小红','18','F');
Query OK, 1 row affected (0.00 sec)

insert into student values('02','小明','12','M');
Query OK, 1 row affected (0.00 sec)

insert into student values('04','张三','15','M');
Query OK, 1 row affected (0.00 sec)

insert into student values('05','李四','11','F');
Query OK, 1 row affected (0.00 sec)

在这里插入图片描述

2、查询表中记录(查)

 SELECT * FROM 表名;      #查询表中所有记录
 
 #按条件查找数据记录,且只显示指定字段的值
 SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 
 #表中的记录默认是横向展示的,当字段很多时显示很乱,可以将";"换成"\G",改成纵向展示每条记录。
 select * from 表名\G
 
 #mysql的分页语句:
 select * from 表名 limit 2; 
 select * from 表名 limit 2,3;       #显示第2行后的前3行(即显示第3~5行)
 select * from 表名 limit 19,11;     #查看第20行到第30行的记录

 select * from 表名 id>=10 and id<=20;    #查看id值在10到20之间的数据记录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、修改更新数据表中记录(改)

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
  
例: student set age=20 where id=1;
Query OK, 1 row affected (0.00 sec)
  #修改id=1的数据记录,将age字段值改为20。 建议使用唯一性比较好的字段作为指定条件,因为名称可能有重复,但id不会重复。

修改时加上条件,否则会把表中的所有行都修改
在这里插入图片描述

4、在数据表中删除指定的记录(删)

DELETE FROM 表名 [WHERE 条件表达式];     #删除一定要加条件,不然会删除整个表

例: from student where id=2;     #删除id字段值为2的数据记录

删除数据记录时,一定要加条件,否则会将整个表都删除!
在这里插入图片描述

六、修改表名和表结构

1、修改表名(rename)

ALTER TABLE 旧表名 RENAME 新表名
 
例:ALTER TABLE student RENAME zzt;   #将student的表名修改为zzt
   ALTER TABLE zzt RENAME student;   #将zzt的表名修改回student

在这里插入图片描述

2、扩展增加字段(add)

  ALTER TABLE 表名 ADD 字段名 数据类型;
 
 例:
 alter table student add address varchar(30) not null default '云计算学院';
 #增加“address"字段,不允许为空值,默认值为“云计算学院”。
 #default '云计算学院':表示此字段设置默认值为"云计算学院",可与NOT NULL配合使用。

在这里插入图片描述

七、常见的约束

主键约束(primary key) PK

自增长约束(auto_increment)

非空约束(not null)

唯一性约束(unique)

默认值约束(default)

零填充约束(zerofill)

外键约束(foreign key)FK

总结

查看数据库和表

show databases;

use 库名;

show tables;

desc 表名;

desc 表名\G

show create table 表名

创建删除数据库和表

insert into 表名 values (所有字段的值)。

insert into 表名 (指定字段名称) values(字段的值)。

delete from 表名 [where …]。

truncate table 表名; #删除表中所有数据。相当于格式化,速度很快。

update 表名 set 字段=值[, 字段2=…] [where …]。

select 字段1[,字段2…] from 表名 [where …]。

select * from 表名。
修改表名和表结构

alter table 表名 RENAME/ADD/CHANGE/DROP 字段名 数据类型 属性。

库和表

insert into 表名 values (所有字段的值)。

insert into 表名 (指定字段名称) values(字段的值)。

delete from 表名 [where …]。

truncate table 表名; #删除表中所有数据。相当于格式化,速度很快。

update 表名 set 字段=值[, 字段2=…] [where …]。

select 字段1[,字段2…] from 表名 [where …]。

select * from 表名。
修改表名和表结构

alter table 表名 RENAME/ADD/CHANGE/DROP 字段名 数据类型 属性。

alter table 表名 ADD 键名(字段); //给指定字段添加键约束。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐