MySQL数据库和表管理
- 一、常用的数据类型
- 1、int(N)
- 2、float(m,d)
- 3、char与varchar
- 二、查看数据库结构
- 1、查看当前服务中的数据库
- 2、查看数据库中存在的表
- 3、查看表结构
- 三、SQL语句
- 1、SQL语言规范
- 2、SQL语言分类
- 四、创建、删除数据库和表
- 1、创建数据库
- 2、创建表
- 3、删除数据表
- 4、删除数据库
- 五、管理数据表中的记录(增删改查)
- 1、向表中插入新的信息(增)
- 2、查询表中记录(查)
- 3、修改更新数据表中记录(改)
- 4、在数据表中删除指定的记录(删)
- 六、修改表名和表结构
- 1、修改表名(rename)
- 2、扩展增加字段(add)
- 七、常见的约束
- 总结
一、常用的数据类型
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 键名(字段); //给指定字段添加键约束。