MySql学习-3.登录,创建,修改,约束,备份
一、数据定义语言DDL(Data Definition Language)——database:
1. 登录数据库:
mysql -uroot -p #(这个password是自己设定的,我这里的没密码) # 注意:(数据路径是:D:\MySql\install1\data 操作路径:D:\MySql\install1\bin)
2.登录成功查看效果:
select version(); # 版本 select now(); #显示时间
3.创建数据库:
create database 数据库名; #直接创建数据库,如果存在则报错 create database if not exists bigdata_db; #如果数据库不存在则创建 create database 数据库名 character set 字符集; #创建数据库时设置字符集 charset=utf8; # create database bigdata_db;
4. 删除数据库(不建议 违法):
drop database 数据库名;
5.切换数据库:
use 数据库名;
6.查看当前选择的数据库:
select database();
7.显示所有的数据库:
show databases;
二、数据定义语言DDL(Data Definition Language)——tables:
1.查看当前所有的表:
show tables;
2.创建表:
create table if not exists 表名( 字段名 类型(长度) [约束], 字段名 类型(长度) [约束], ... ); 类型: varchar(n)字符串 int 整形 double浮点 date 时间 timestamp时间戳 约束: primary key 主键,被主键修饰字段中的数据,不能重复、不能为null。 ###创建分类表 CREATE TABLE category ( cid varchar(20) primary key,#分类ID cname VARCHAR(100) #分类名称 );
3.查看表的结构(describe):
desc 表名;
4.修改表(尽量少做,开始多设些列)(只能修改列的类型):
# 修改表添加列.
alter table 表名 add 列名 类型(长度) [约束]; # add |change | drop #为分类表添加一个新的字段为分类描述 varchar(20) ALTER TABLE category ADD `desc` VARCHAR(20); # 修改表修改列名. alter table 表名 change 旧列名 新列名 类型(长度) 约束; #为分类表的分类描述字段更换为description varchar(30) ALTER TABLE category CHANGE `desc`description VARCHAR(30); # 修改表删除列. alter table 表名 drop 列名; #删除分类表中description这列 ALTER TABLE category DROP description; # 修改表名 rename table 表名 to 新表名; #为分类表category改名成 category2 RENAME TABLE `category` TO category2;
5.删除表(物理上删除):
drop table 表名;
6.查看表的创建语句:
show create table ‘表名’;
三、DML(Data Manipulation Language)数据操作语言:
1.数据操作——查询:
select * from 表名;
2.数据操作——增加
# 语法 #-- 向表中插入某些字段 insert into 表 (字段1,字段2,字段3..) values(值1,值2,值3..); #-- 向表中插入所有字段,字段的顺序为创建表时的顺序 insert into 表 values(值1,值2,值3..) #注意: #值与字段必须对应,个数相同,类型相同 #值的数据大小必须在字段的长度范围内 #除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号) #如果要插入空值,可以不写字段,或者插入 null。 INSERT INTO category(cid,cname) VALUES('c001','电器'); INSERT INTO category(cid,cname) VALUES('c002','服饰'); INSERT INTO category(cid,cname) VALUES('c003','化妆品'); INSERT INTO category(cid,cname) VALUES('c004','书籍'); INSERT INTO category(cid) VALUES('c005'); insert into category values('06','玩具'),('07','蔬菜');
3.数据操作——修改(针对满足条件的行进行修改):
# 用来修改指定条件的数据,将满足条件的记录指定列修改为指定值 # 语法 -- 更新所有记录的指定字段 update 表名 set 字段名=值,字段名=值,...; -- 更新符号条件记录的指定字段 update 表名 set 字段名=值,字段名=值,... where 条件; update category set cname = '家电'; #将所有行的cname改为'家电' update category set cname = '水果' where cid = 'c001'; #将cid为c001的cname修改为水果 #注意: #列名的类型与修改的值要一致. #修改值得时候不能超过最大长度. #除了数值类型外,其它的字段类型的值必须使用引号引起
4.数据操作——删除(物理删除)
# 物理删除与逻辑删除 # 逻辑删除就是设置isDelect列,然后显示时候显示不出来 update teachers set inDelect=1 where id=1; select * from 表明 where isDelect=1;
# 逻辑删除:相当于insert;
# 这块是没呈现出来。运用到实际就是将where isDelete=0设置为条件,删除的话把 isDelete设置为1,不呈现出来就行,实际没有删。
# 不能用delete from teachers where id=1; 这个虽然可以,但是这个是物理删除。
delete from 表名 [where 条件]; # 或者 truncate table 表名; delete from category where cid = '005'; #删除cid为005的纪录 truncate category; #清空表数据 # 注意: # delete 一条一条删除,不清空auto_increment记录数。 # truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
四、SQL约束
4.1 主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 # 方式一:创建表时,在字段描述处,声明指定字段为主键 CREATE TABLE Persons1 ( Id int PRIMARY KEY, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ) # 方式二:创建表时,在constraint约束区域,声明指定字段为主键: #格式:[constraint 名称] primary key (字段列表) #关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。 #字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,我们称为联合主键。 CREATE TABLE Persons2 ( FirstName varchar(255), LastName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (FirstName, LastName) ) # 或 CREATE TABLE Persons3 ( FirstName varchar(255) , LastName varchar(255), Address varchar(255), City varchar(255) )
4.2 删除主键约束
ALTER TABLE Persons DROP PRIMARY KEY;
4.3 自动增长列
CREATE TABLE Persons4 ( Id int PRIMARY KEY AUTO_INCREMENT, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
# 向persons添加数据时,可以不为Id字段设置值,也可以设置成null,数据库将自动维护主键值 INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates') INSERT INTO Persons (Id,FirstName,LastName) VALUES (NULL,'Bill','Gates') # 扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法: ALTER TABLE Persons AUTO_INCREMENT=100
4.4 非空约束
#NOT NULL 约束强制列不接受 NULL 值。 #NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。 CREATE TABLE Persons5 ( Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
4.5 唯一约束
#UNIQUE 约束唯一标识数据库表中的每条记录。 #UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 #PRIMARY KEY 拥有自动定义的 UNIQUE 约束。 #请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 # 创建表时,在字段描述处,声明唯一 CREATE TABLE Persons ( Id int UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
4.6 外键约束
# FOREIGN KEY # 多表
五、数据备份(数据库密码为空):
5.1某个数据库,首先在目录下的有个datacenter.sql文件(可以txt改为):
5.2某个数据库里的某个表:mysqldump -uroot -p 数据库名表名> 文件路径(必须有个接收的文件)
5.3 数据恢复:
5.3.1 连接数据库、创建数据库、显示数据库
5.3.2 退出数据库
5.3.3 恢复文件
5.3.4 进数据库、使用刚才所创数据库、显示该数据库的表