--数据定义语言(DDL)
create alter drop
--数据查询语言(DQL)
select
--数据操作语言(DML)
insert update delete
--数据控制语言(DCL)
revoke grant
--创建数据库
create database 数据库名称;
--查询指定的数据库
show create database mydb;
--查询所有数据库
show databases;
--数据库名称的相关规则:
1、数据库名称不能相同(唯一)
2、数据库名称不能超过65个字符,数据库名称的别名不能超过255个字符。
3、数据库名称由阿拉伯数字、字母、下划线(_)美元符号($)组成,但是不能以数字开头。
4、数据库在windows中不区分大小写,但是在linux中区分大小写。所以推荐全部小写(方便后期移植到linux中)。
--删除数据库
drop database 数据库名称;
drop database if exists mydb; --判断数据库是否存在,如果存在就删除,不存在就算了。
--修改数据库的编码集
alter database 数据库名称 default character set 编码集; -- 了解
例如:
alter database gxa default character set gb2312;
--指定使用具体的数据库
use 数据库名称;
--创建数据表
create table 表名(表字段1 表字段的类型1(字段的大小),表字段2 表字段的类型2(字段的大小));
create table t_user(uId int(3),uName varchar(10));
--查询当前数据库中有那些表
show tables;
--查询指定表创建的信息
show create table t_user;
--查询表结构
desc t_user;
describe t_user;
--删除表
drop table 表名;
--整型
tinyint 极小整型
smallint 小整型
mediumint 中整型
int 整型 -- 最常用
bigint 大整型
--浮点型
float 单精度浮点型
double 双精度浮点型
-- 金钱常用、对精度要求比较高的 100.25 -- 最常用
decimal(M,D) 总共有M位,保留小数点D位 -- 最常用
--字符串型
char(3) 固定长度字符型
varchar(3) 可变长度字符型 -- 最常用
--日期时间型
date 日期 yyyy-MM-dd -- 最常用的
datetime 日期时间型 yyyy-MM-dd hh:mm:ss 2019-07-01 15:34:34
timestamp (支持国际化)日期时间型 yyyy-MM-dd hh:mm:ss 2019-07-01 23:34:34 --最常用
--文本型
text 文本类型
blob 它支持存储视频、音频等二进制的数据 -- 很少用
--特殊类型 -- 了解
set 存储多列数据 set('篮球','足球')
enum 存储单列数据 enum('男','女')
create table t_student(
stuNo int(10) primary key auto_increment,
stuName varchar(20) not null,
stuSex char(2) default '男',
stuIdCard varchar(18) unique not null,
stuLifeMoney double(10,2),
stuStartDay date,
stuUrl text,
stuHobby varchar(50)
);
--主键约束 -- 主键默认不能为null,而且唯一。一张表一个主键
primary key
--自动增涨 -- 一般配合主键使用,默认从1开始
auto_increment
--唯一约束 -- 可以设置值为null,也可以一个表中多列设置唯一约束
unique
--非空约束
not null
--唯一非空约束
unique not null
--默认约束
default
--外键约束
foreign key
学生班级表sql代码示例
create table t_student(
stuNo int(10) primary key auto_increment,
stuName varchar(20) not null,
stuSex char(2) default '男',
stuIdCard varchar(18) unique not null,
stuLifeMoney double(10,2),
stuStartDay date,
stuUrl text,
stuHobby varchar(50),
classId int(10),
constraint for_class foreign key (classId) references t_class(classId)
);
create table t_class(
classId int(10) primary key auto_increment,
className varchar(20)
);
--删除外键
alter table t_student drop foreign key for_class;
--MySQL命令窗口编码格式和mysql数据库中不一致,修改一下编码方法-------了解
--查看当前数据库的编码格式
show variables like '%char%';
set character_set_client=gb2312;
set character_set_server=gb2312;
--添加一个字段
alter table t_user add money decimal(5,2);
--修改字段
alter table t_user change money price decimal(7,2);
--删除字段
alter table t_user drop price;
--语法
insert into 表名(字段名1,字段名2......) values(字段1的值,字段2的值);
insert into t_class(classId,className) values(1,'XXX部');
注意:into后的表不指定任何字段,那么values中就必须填写所有字段的值并且按照顺序来
insert into t_class(classId,className) values(5,'xxx01班'),(6,'xxx02班'),(7,'xxx03班');
-- 实际开发中不常用
update 表名 set 字段名=更新的值 where 条件
例子:
update t_class set className = 'xxx班' where classId = 5;
update t_class set classId=10,className = 'xxxxxx班' where classId = 7;
update t_class set classMoney=classMoney+100 --修改全部
--将xxx01班的班费+100
update t_class set classMoney=classMoney+100 where className = 'xxx01班';
delete from 表名 where 条件
例子:
delete from t_class where classId = 200;
delete from t_class --删除全部数据
--备份表
create table newt_class select * from t_class; --结构和数据都有
create table newt_class select * from t_class where 1 = 2; --只有结构,没有数据。
--从另一个表中恢复数据
insert into t_class select * from newt_class;
truncate table t_class;
1、执行效率truncate比delete更高
2、delete可以添加where条件,但是truncate不行。
3、当表中出现自动增涨auto_increment的字段时,delete删除所有数据后,再添加数据。自动增涨的值=最后一次+1,但是truncate就从新开始。
4、delete它有日志记录,truncate没有。所以delete删除的数据可以恢复,truncate不能。
5、delete它支持事务处理,truncate不支持事务处理。
mysql中默认事务是自动提交的autocommit = 1
set autocommit = 0; --设置手动提交
commit; --提交