文章目录
MySQL基础
- 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
- DML(Data Manipulation Language)数据操纵语言,如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete
- DDL(Data Definition Language)数据库定义语言,如:create table之类
- DCL(Data Control Language)数据库控制语言,如:grant、deny、revoke等,只有管理员才有相应的权限
- 数据查询语言(DQL:Data Query Language):注意:SQL不区分大小写
数据库常用操作
- 建库
create database cbg2011 DEFAULT CHARACTER SET utf8;
- 删库
drop database cbg2011;
- 查看所有数据库
show databases;
表的常用操作
- 使用数据库:use cbg2011;
- 创建表
create table tb_door(
id int primary key auto_increment,
door_name varchar(100),
tel varchar(50)
);
- 修改表:添加列
alter table tb_door add column see NUMERIC(7,2)
- 删除表
drop table tb_door;
- 查看所有表
show tables;
- 查看表结构/设计表
desc tb_door;
表记录的常用操作
- 插入记录
insert into tb_door values(null,’永和大王1店’,666);
insert into tb_door values(null,’ 永和大王2店’,888);
- 查询记录
SELECT * FROM tb_door;
- 修改记录
update tb_door set tel=555 where id=1;
- 删除记录
Delete from tb_door where id=2;
- 排序
Select * from tb_door order by tel desc;
- 记录总数
Select count(*) from tb_door;
数据类型
命名规则
l 字段名必须以字母开头,尽量不要使用拼音
l 长度不能超过30个字符(不同数据库,不同版本会有不同)
l 不能使用SQL的保留字,如where,order,group
l 只能使用如下字符az、AZ、0~9、$ 等
l Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
l 多个单词用下划线隔开,而非java语言的驼峰规则
字符
l char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间
l varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2
l 大文本: 大量文字(不推荐使用,尽量使用varchar替代)
以utf8编码计算的话,一个汉字在u8下占3个字节
注:不同数据库版本长度限制可能会有不同
数字
l tinyint,int整数类型
l float,double小数类型
l numberic(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
l decimal和numeric表示精确的整数数字
日期
l date 包含年月日
l time时分秒
l datetime包含年月日和时分秒
l timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数
字段约束
主键约束
- 主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。
- 主键自增策略:当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1. AUTO_INCREMENT=1
create table abc(
id int primary key auto_increment
);
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;
非空约束
- 非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
create table user(
id int primary key auto_increment,
password varchar(50) not null
);
show tables;
insert into user values(null,null);//不符合非空约束
insert into user values(nu