一、查看数据库结构
1.查看当前服务器中的数据库
SHOW DATABASES; #大小写不区分,分号“;”表示结束
2.查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
3.查看表的结构(字段)
USE 数据库名;
DESCRIBE [数据库名.]表名;
可缩写成:DESC 表名;
字段解释:
- field:字段
- type:数据类型
- Null是否可以为空(`NOT NULL` 不允许为空值)
- Key:主键
- 如果Null的字段无值的时候,填入default的值 (`DEFAULT''`:默认空值)
- extra:附加规则,如添加自增长
二、SQL基本命令
1.SQL语言
是结构化查询语言,在关系型数据库中充当标准语言
用于维护管理数据库,如数据的增删查改
2.SQL分类:
DDL:数据定义语言;用于创建数据库对象,如库、表、索引等
DML:数据操纵语言;用于对表中的数据进行管理
DQL:数据查询语言;用于从数据表中查找符合条件的数据记录
DCL:数据控制语言;用于设置或者更改数据库用户或角色权限
二、DDL,数据定义语言
(一)创建数据库
create database 数据库名;
(二)创建数据表
1.格式
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
//主键一般选择能代表唯一性的字段可以由多个字段构成,不允许取空值(NULL),一个表只能有一个主键。
例:create database ky20;
use school;
create table ky20 (id int(10) not null,name char(10) not null,age char(1),primary key (id));
或:create table ky20 (id int(10) not null primary key,name char(10) not null,age char(1));
//如果添加多个字段为主键,以分号分隔
primary key (id,name,...)
2.常用的数据类型
int | 整型(用于定义整数类型的数据) |
---|---|
float | 单精度浮点 4字节32位(准确表示到小数点后六位) |
double | 双精度浮点 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本(主要用于备注,描述信息) |
image | 图片 |
decimal (5,2) | 5个有效长度数字,小数点后面有2位 |
对char来说,最多能存放字符个数255个,char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度 低版本会被截取 高版本会报错
char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了
主键是唯一的,但主键可以由多个字段组成
varchar存储规则:
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
3.删除表和库:
3.1删除表
mysql>drop table 表名;
mysql>drop table [数据库].表名 //不进入数据库删除表
3.2删除库
mysql>drop database school;
三、DML管理表中的数据记录
- INSERT:插入新数据
- UPDATE:更新原有数据
- DELETE:删除不需要的数据
(一)向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
例:create database school;
use school;
create table ky20 (id int(10) not null primary key,name char(10) not null,age char(1));
insert into ky20 (id,name,age) values(1,'张三',20);
例二:
use school;
create table ky20 (id int(10) not null primary key,name char(10) not null,age char(1),PASSWORD char(200));
insert into ky20 (id,name,age) values(1,'张三',20,PASSWORD('123456'));
//passwd('12346'):查询数据记录是,密码字串以加密形式显示;若不使用PASSWORD(),查询以明文显示
加密
(二)使用update ,替换,修改原有数据记录
update [数据库名.]表名 set 字段1=字段值1[,字段2=字段值2] [where 条件表达式]
//可以多字段修改
修改单个字段
多字段更改
(三)在数据表中删除指定的数据记录
DELETE FROM [数据库名.]表名 [WHERE 条件表达式];
例:delete from ky20 where id=2;
select * from ky20;
四、DQL数据查询语言
select语句,用于从指定的表中查询符合条件的数据记录
select 字段1,字段2,… from 表名 where 条件表达式
mysql> select id,name from info where name='stu02';查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
例:select * from ky20; //查看ky20表的所有数据
select name,score from ky20 where id=1; //查看表中id为1的姓名和年纪
select name from ky20\G
select * from 表名 limit 2; //查看表头两行数据
select * from 表名 limit 2,2; //查看从第二行开始的后两行数据
select * from 表名 limit 2,1; //查看第三行的数据
五、修改表名和表的结构
(一)修改表名
alter table 旧表名 rename 新表名;
例子:
alter table ky20 rename ky20_bak;
(二)扩展表结构(增加字段)
alter table 表名 add address varchar(50) default '地址不详';
#dafault '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
删除后添加,重复的话会报错
(三)修改字段(列)名,添加唯一键
唯一键:唯一,但可以为空(空值只能出现一次)
主键包含唯一键的部分属性而唯一键不能完全作为主键
alter table 表名 change 旧列名 新列名 数据类型 [unqie key];
#change可以修改字段名,数据类型,约束等所有项 unqiue key:唯一键
alter table test change id id_new int(2);
id_new只能使用“_”下划线不能使用“ - “
(四)删除字段/主键和再添加
alter table 表名 drop 字段名/主键;
六、拓展内容
create table if not exists test (id int(4) zerofill primary key auto_increment,
name varchar(20) not null,
cardid varchar(18) not null unique key,
hobby varchar(50));
字段解释
-if not exists :表示检测要创建的表是否已存在,如果不存在就继续创建
-int(4) zerofill :表示若数值不满4位数,则前面用“0”填充,例0001
-auto_increment :表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
-unique key :表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
-not null :表示此字段不允许为NULL