MySQL数据库(操作命令)
MySQL数据库(操作命令)
一、常用的数据类型:
int | 整型(无符号【0,2^32-1】,有符号【-2 ^31-1】) |
---|---|
float | 单精度浮点(4字节32位) |
double | 双精度浮点(8字节64位) |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面2位 |
二、查看数据库结构
2.1 查看当前服务器中的数据库
show databases; #大小写不区分,分号“;”表示结束
2.2 查看数据库中包含的表
use 数据库;
show tables;
2.3 查看表的结构(字段)
use 数据库名;
describe 表名; #describe可缩写为desc
三、SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
- DML:数据操纵语言,用于对表的数据进行管理
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
四、创建及删除数据库和表
4.1 创建新的数据库
create database 数据库名;
4.2 创建新的表
create table 表名 (字段1 数据类型,字段2 数据类型,primary key (主键名));
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:
create database ysj;
use ysj;
create table yy (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT '',primary key (id));
desc yy;
4.3 删除指定的数据表
drop table [数据库名.]表名;
例:drop tabel yy;
4.4 删除指定的数据库
drop database 数据库名;
例:
drop database ysj;
五、管理表中是数据记录
5.1 向数据表中插入新的数据记录
#为所有字段插入值
insert into 表名 values (所有字段的值); #每个字段值用逗号相隔
#为指定字段插入值
inster into 表名(字段1,字段2,[,...]) values (字段1的值,字段2的值,...);
//字段的属性notnull,必须为该字段插入值
例:
1、为表中所有字段插入值,此种方式密码会以明文显示。
insert into yy values (1,'张三', 95, 123456);
2、为指定字段插入值
insert into yy (id,name,passwd) values (2,'李四', password('654321'));
#password ('654321'):查询数据记录时,密码以加密形式显示(不使用,则以明文显示)。
select * from yy; #查询表的数据记录
5.2 查询数据记录
格式:
1、查询表中所有记录
select * from 表名;
2、按条件查找数据记录,切值显示指定字段的值
select 字段名1,字段名2,[...] from 表名 [where 条件表达式];
3、表中的记录时横向展示的,当字段很多时会显示混乱,可以将“;”换成“\G”,改为纵向显示每条记录。
select * from 表名\G
4、mysql的分页语句:
select * from 表名 limit 2;
5、显示第2行后的前3行(即3~5行)
select * from 表名 limit 2,3;
6、显示第20~30行的记录
select * from 表名 limit 19,11;
7、查看id值在10~20之间的数据记录
select * from 表名 id>=10 and id<=20;
示例:
select * from yy; //查看表中所有数据记录
select id,name,score from yy where id=2; //查看id为2的数据记录,显示id、name、score三个字段
select id,name,score from yy where id=1 or id=2; //查看id为1或id为2 的数据记录
select id,name,score from yy where name='张三' and score=95.50; //查看name为张三,且分数为95.50的数据记录
select * from yy\G //以列表方式竖向显示每个字段
select * from yy limit 2; //只显示前2行
select * from yy limit 2,3; //显示第2行之后的前3行(3~5行)
5.3 修改数据表中的数据记录
格式:
update 表名 set 字段名1=字段值1 [where 条件表达式];
示例:
1、修改name为王五的数据记录,将密码修改为密文显示
update yy set passwd=password(' ') where name='王五';
2、修改id为3的数据记录,将score字段值改为86,passwd字段改为无值
update yy set score=86,passwd='' where id=3;
注意:修改时使用唯一性的字段作为指定条件
5.4 删除数据表中指定的数据记录
#删除一定要加条件,不然会删除整个表
delete from 表名 [where 条件表达式];
#删除id字段值为2的数据记录
delete from yy where id=2;
六、修改表名和表结构
6.1 修改表名(rename)
alter table 旧表名 rename 新表名;
#将表名修改为ww
alter table yy rename ww;
#将表名修改回yy
alter table ww rename yy;
6.2 扩展表结构(add)
alter table 表名 add 字段名 数据类型;
#增加address字段,不允许为空值,默认为“地址不详”。
alter table yy ADD address varchar(50) not null default '地址不详';
//default '地址不详':表示此字段设置为“地址不详”,可与NOT NULL配合使用。(ADD必须大写)
6.3 修改字段名,添加唯一键change
change:可修改字段名、数据类型、约束等所有项。
alter table 表名 change 旧字段名 新字段名 [数据类型] [约束];
alter table yy change score phone int unique key;
//将score字段名修改为phone,数据类型修改为int整数型,添加唯一键约束
6.4 删除字段drop
alter table 表名 drop 字段名;
例:
alter table yy drop passwd; //删除passwd字段
6.5 添加主键约束(add primary key)
方法一:创建表时设置主键
create table 表名(字段1 数据类型,字段2 数据类型,....,primary key(字段));
或
create table 表名(字段1 数据类型 primary key,.....); //设置字段1位主键属性
方法二:在现有表中添加主键
alter table 表名 add primary key(字段名);
例:
alter table yy add primary key(id);
//将id字段添加为主键
主键和唯一键:
- 相同点:字段的值都唯一,不允许有重复。
- 不同点:
1、自定义表中只能有一个主键,但是可以有多个唯一键;
2、主键字段中不允许有NULL值,唯一键允许有NULL值。
3、系统的表中可以多个唯一键
七、MySQL常见的约束
- 主键约束:primary key
- 自增长约束:auto_increment
- 非空约束:not null
- 唯一性约束:unique
- 默认值约束:default
- 零填充约束:zerofill
- 外键约束:foreign key
示例:
use ysj;
create table if not exists ss ( //创建ss表
id int(4) zerofill primary key auto_increment, //对id字段设置零填充约束、主键约束、自增长约束
name varchar(10) NOT NULL default '匿名', // 对name字段设置非空约束、默认值约束
cardid int(18) NOT NULL unique key, //对cardid字段设置非空约束、唯一约束
hobby varchar(50));
- if not exists:表示检测要创建的表是否存在,如果不存在就继续创建,反之不创建;
- int(4) zerofill:零填充约束,表示若数值不满4位数,则前面用“0”填充到4位
- primary key:表示此字段有主见约束,此字段数据不可以重复且不允许为NULL;
- auto_increment:
1、表示此字段为自增长字段,即每条记录自动递增1。
2、一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以避免序号重复。
3、如果不指定则默认从1开始递增;
4、 自增长字段数据不可以重复;
5、 自增长字段必须是主键;
6、如果添加的记录数据没有指定此字段的值,那么添加失败也会自动递增一次。
7、 auto_increment约束的字段只能是整数型。
- unique key:表示字段有唯一键约束,此字段数据不可以重复;
- not null:表示此字段不允许为NULL;
- default ‘匿名’:表示该字段的默认值为“匿名”。
插入数据记录:
- 因为id字段设置了自增长,如果不指定id字段值,则默认从1开始递增;
insert into ss(name,cardid,hobby) values('大黄',1001,'跑步');
- 再次插入数据记录,不指定id字段值,则id值会自增1,此时为0002。
insert into ss(name,cardid,hobby) values('大白',1002,'paobu');
注意:
如果添加失败也会自动增长一次,数值会被占用;
若指定id值,则之后的数据会从该id值或开始增长;