MySQL基础(二)
原创大约 3 分钟
MySQL基础(二)
MySQL基础笔记系列
主键约束
- 主键:表示数据唯一性的字段称为主键
- 约束: 创建表时给表字段添加的限制条件
- 主键约束: 限制值唯一且非空
# 格式: create table t1(id int primary key,name varchar(10));
insert into t1 values(1,'AAA');
insert into t1 values(1,'BBB'); # 报错 不能重复
insert into t1 values(null,'CCC'); # 报错 不能为null
主键约束+自增
- 从历史最大值基础上+1 , 自增数值只增不减
# 格式: create table t2(id int primary key auto_increment,name varchar(10));
insert into t2 values(null,'aaa'); # 1
insert into t2 values(2,'bbb'); # 2
insert into t2 values(10,'ccc'); # 10
insert into t2 values(null,'ddd'); # 11
delete from t2 where id>=10;
insert into t2 values(null,'eee'); # 12
注释 comment
- 为表或列添加注释
# 格式: create table t3(id int primary key auto_increment comment '这是id啊',name varchar(10) comment '名字');
# 查看
show create table t3;
`的作用
- 用于修饰表名和字段名 可以省略
create tablet4
(id
int,name
varchar(10));
SQL分类
DDL Data Definition Language 数据定义语言
- truncate:删除表并创建新表 自增数值清零
- truncate table 表名;
- 包括: create 、 alter 、 drop 、 truncate
不支持事务
DML Data Manipulation Language 数据操作语言
- 包括: insert 、 update 、 delete 、 select(DQL)
支持事务
DQL Data Query Language 数据查询语言
- 只包括select
TCL Transaction Control Language 事务控制语言
- 包括: begin 、 commit 、rollback、 savepoint xxx 、 rollback to xxx;
DCL Data Control Language 数据控制语言
- 分配用户权限相关的SQL
数据类型
整数
int(m) 和 bigint(m) ,m代表显示长度,不足m长度时补零,需要结合zerofill关键字使用
create table t_int(id int,age int(10) zerofill);
insert into t_int values(1,20);
select * from t_int;
浮点数
double(m,d) m代表总长度 d代表小数长度, 超高精度浮点数decimal(m,d) 当涉及超高精度运算时使用。
25.234 m=5 d=3
字符串:
- char(m) 固定长度,最大长度255 好处:执行效率高
- varchar(m) 可变长度, 好处:节省资源, 最大长度65535 但是超高255建议使用text
- text(m) 可变长度, 最大长度65535
日期
- date:只能保存年月日
- time:只能保存时分秒
- datetime:年月日时分秒 最大值:9999-12-31 ,默认值为null
- timestamp:时间戳 年月日时分秒 最大值:2038-1-19 ,默认值为当前系统时间
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values('2019-05-17',null,null,null);
insert into t_date values(null,'16:29:00','2019-05-17 16:30:00',null);
sql文件导入
- windows系统
# 把文件放到d盘根目录
source d:/tables.sql;
- linux系统
# 把文件放到桌面, 然后执行
source /home/tables.sql;
is null 和 is not null
- 查询没有领导的员工姓名和工资
select ename,sal from emp where mgr is null;
- 查询有奖金的员工姓名,工资,奖金
select ename,sal,comm from emp where comm is not null;
别名
select ename from emp;
select ename as '姓名' from emp;
select ename '姓名' from emp;
select ename 姓名 from emp;