目录
一、数据库基本概念
数据库–>数据表–>行(记录):用来描述一个对象的信息
列(字段):用来描述对象的一个属性
常用数据类型
- int :整型
- float :单精度浮点 4字节32位
- double :双精度浮点 8字节64位
- char :固定长度的字符类型
- varchar :可变长度的字符类型
- text :文本
- image :图片
- decimal(5,2) :5个有效长度数字,小数点后面有2位
二、数据库结构
1.查看数据库信息
[root@zrk201 bin]# mysql -u root -p #进入数据库中(需要输入密码)
mysql> show databases; #查看数据库内信息
2.查看数据库中的表信息
use 数据库名 #切换到此数据库中
show tables #查看当前数据库下所有表
show tables in sys #查看sys数据库下所有表
3.显示数据表的结构
相对路径
describe user; #显示数表的结构(字段)
describe user \G #查看user结构,加\G则列标识,每个字段都会一一显示,方便查看
Field:字段名称
type:数据类型
Null:是否允许为空
key:主键
Type:数据类型
Null:是否允许为空key:主键
Default:默认值
Extra:扩展属性,例如:标识符列(标识了种子,增量/步长)1 2
id 1 3 5 7
绝对路径
mysql> describe.user; #绝对路径查看
4.查看mysql版本
#在mysql内查看mysql版本
select version();
#在linux系统中查看mysql版本
mysql -V
三、SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语句分类
语句 | 含义 |
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等(create ) |
DML | 数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据(insert drop delete update ) |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录(select ) |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)(grant) |
1.DDL数据定义语言
创建新的数据库
CREATE DATABASE 数据库名;
创建新的表
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例子
mysql> create table info(id int(4) not null,name char(10),age int(3),hobby char(20),primary key(id));
mysql> desc info;
删除指定数据表
DROP TABLE [数据库名.]表名; #如不用USE进入库中,则需加上数据库名
删除指定数据库
DROP DATABASE 数据库名;
例:CREATE DATABASE zzz;
use zzz;
CREATE TABLE rrr (id int NOT NULL,name char(8),PRIMARY KEY (id));
show databases;
drop table zzz.rrr;(可以不进入数据库删除表格)
use zzz;
show tables;
drop database zzz;
show databases;
2.DML 管理表中的数据记录
向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
例:create database zhu;
use zhu;
create table rui (id int NOT NULL,name char(10) NOT NULL, score decimal(5,2), passwd char(48) DEFAULT'',PRIMARY KEY (id));
insert into rui (id,name,score,passwd) values(1,'cs',90,PASSWORD('123456'));
insert into rui (id,name,score,passwd) values(2,'zrk',96,123456);
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
例:select * from rui;
select name,score from rui where id=1;
修改、更新数据表中的数据记录
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
例:
update rui set name='sc',score=80 where id=1;
#在表rui中,id=1的内容中name改为sc,score改为80
select * from rui;
#查看表rui下内容
在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式];
例:delete from CLASS where id=2;
select * from rui;
3.DQL 查询数据记录
select name from CLASS\G #以列表方式竖向显示
select * from CLASS limit 2; #只显示头2行
select * from CLASS limit 2,3; #显示第2行后的前3行
4.DCL 修改表名和表结构
修改表名
ALTER TABLE 旧表名 RENAME 新表名;
例:alter table rui rename kai;
show tables;
select * from kai;
扩展表结构(增加字段)
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
例:alter table kai add address varchar(50) default '地址不详';
修改字段(列)名,添加唯一键
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)
primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(null),一个表只能有一个主键。)
例:alter table kai change name student varchar(20) unique key;
select * from kai;
desc rui;
每个表中只能由一个主键 ,但是许多内容都需要唯一性,这就是唯一键的作用
删除字段
ALTER TABLE 表名 DROP 字段名;
例:alter table kai drop score;
5.拓展
mysql> use zrk
Database changed
mysql> create table if not exists king (id int(3) zerofill primary key auto_increment,address varchar(20) not null,name varchar(20) not null unique key);
mysql> desc king;
if not exists | 表示检测要创建的表是否已存在,如果不存在就继续创建 |
int(3) zerofill | 表示若数值不满3位数,则前面用“0”填充,例001 |
auto_increment | 表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
unique key | 表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键 |
not null | 表示此字段不允许为NULL |