目录
1.MySQL数据库管理
1.1 常用的数据类型
1.2 char和varchar区别
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同,在存储或检索过程中不进行大小写转换。
下表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
字节大小
char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。
优劣比较
varchar比char节省磁盘空间。
但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,·而varchar在多次增删改查中会产生一些磁盘空间碎片。
2. 增删改查命令操作
mysql -u root -pabc123 #登录数据库
2.1 查看数据库结构
(1)查看当前的 MySQL 版本信息及连接用户名
SELECT VERSION();
SELECT USER();
(2) 查看数据库中包含的表
SHOW DATABASES; #大小写不区分,分号“;”表示结束
(3) 查看数据库中包含的表
use 数据库名; #切换库
show tables; #查看库中的表
show tables from 数据库; #不登录数据库,直接查看数据库中的表信息
(4)查看表的结构(字段)
use 数据库名; #切换数据库
describe 表名 #查看数据库中的表结构信息
describe 数据库名.表名; #不登录数据库,查看数据库中的表结构信息
可缩写成:desc 表名;
2.2 SQL语言
SQL语句用于维护管理数据库,包括数据查询、数据更新、访向控制、对象管理等功能.
SQL语言分类:
DDL: 数据定义语言,用于创建数据库对象,如库、表、索引等.
DML:数据操纵语言,用于对表中数据进行管理(增、删、改).
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录.
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限.
2.3 创建及删除数据库和表
(1)创建新的数据库
create database 数据库名;
(2)创建新的表
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型,.....,[primary key(设为主键的字段名)]); #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
(3)删除指定的数据表
use 数据库名;
drop table [数据库名].表名; #如不用use进入库中,则需加上数据库名
drop table
(4)删除指定的数据库
drop database 数据库名;
2.4 管理表中的数据记录
(1)向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
(2)查询数据记录
use xy101 #进入数据库
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from xy102;
select name,age from xy102 where sex='男';
select * from xy102 where id>=2 and id<=3;
select * from xy102 where id=1 or id=3;
select * from xy102 limit 2; #只显示头2行
select * from xy102 limit 1,2; #显示第1行后的前2行(不包括第1行,也就是第2、3行)
select * from xy102\G #以列表方式竖向显示,结尾没有分号,在Xshell中可以看到效果,在Navicat中无法实现
(3)修改、更新数据表中的数据记录
update 表名 set 字段名1=字段值1, [字段名2=字段值2] [WHERE条件表达式1];
update xy102 set id=4 where age=24;
(3)在数据表中删除指定的数据记录
delete from 表名 [where条件表达式];
delete from xy102 where id=4;
2.5 修改表名和表结构
(1)修改表名
alter table 旧的表名 rename 新的表名
alter table clr1 rename clr;
(2)扩展表结构(增加字段)
alter table 表名 add 字段 数据类型 default ' 默认值' ;
alter table xy110 add hobby varchar(40) default '和平';
#default '和平':表示此字段设置默认值,爱好不明,可与NOT NULL配合使用
(3)修改字段(列)名,唯一键
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
alter table xy110 change age aage int(11) unique key;
#unique key代表唯一键,不可以添加相同值,一张表可以有多个唯一值。
(4)删除字段
alter table 表名 drop 字段名;
alter table xy110 drop hobby;
(5)添加、删除约束属性
alter table xy110 drop primary key;
alter table xy110 add primary key(name);
3.MySQL的6大约束属性
not null:非空约束
auto_increment:自增约束
案例扩展:
use mybl;
create table if not exists info ( #表示检测要创建的表是否已存在,如果不存在就继续创建。
id int(4) zerofill primary key auto_increment, #指定主键的第二种方式。其中int(4) zerofill表示若数值不满4位数,则前面用"0"填充,例如0001。
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));
注意:
int(N) 需要和zerofill primary配合使用,否则N的值没有意义