数据库操作:
- 查看所有的数据库
show databases - 创建数据库
create database <数据库名称> 例如:create database test - 创建数据库,判断是否存在,不存在再创建:
create database if not exists <数据库名称> - 创建数据库,并指定字符集:
create database if not exists <数据库名称> character set gbk - 删除数据库
drop database <数据库名称> - 判断存在再删除:
drop database if exists <数据库名称> - 修改数据库名称及字符集
alter database <数据库名称> character set gbk - 使用数据库
use <数据库名称> - 查询正在使用的数据库:
select database() - 清屏
system clear
数据表操作:
基本语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
……
列名n 数据类型n
)
注意点:最后一个不需要英文逗号
数据类型有:
Int :整数型 例子: age int(3)
Double: 双精度小数 例如:score double(5,2)
Float: 浮点小数
Data: 只包含年月日,yyyy-MM-dd
Datatime:包含年月日时分秒 ,yyyy-MM-dd HH:mm:ss
Timestamp: 包含年月日时分秒 ,yyyy-MM-dd HH:mm:ss 不赋值或赋值为空将自动用系统当前时间赋值
Varchar:字符类型 例如:name varchar(45)
- 创建表:
create table test(
id int,
name varchar(45),
score double(5,2)
)
- 创建表并设置主键:
方法一:
create table test(
id int primary key,
name varchar(45),
score double(5,2)
)
方法二:
create table test(
id int,
name varchar(45),
score double(5,2),
primary key(id)
)
多字段联合主键
create table test(
id int,
name varchar(45),
score double(5,2),
primary key(id,name)
)
外键约束:
语法:
constraint <外键名> foreign key (<字段名1>,<字段名2…>) references <表名>(主键1,主键2…)
(1)先创建一个带有主键的表test:
create table test(
id int,
name varchar(45),
score double(5,2),
primary key(id)
)
(2)创建表test2并把它的deptId作为外键关键到t表test的主键上:
create table test2(
id int primary key,
deptId int(11),
name varchar(45),
score double(5,2),
constraint fk_test2_test1 foreign key(deptId) references test1(id)
)
设置属性:
not null—非空
unique---唯一性,不能重复
default <默认值>----默认值
auto_increment---属性自动增加
- 复制表
create table <表名> like <被复制的表名> - 查看表
查看全部表名称:show tables
查看表的结构:desc<表名>、describle<表名> - 修改表名:
基本语法:alter table<旧表名> rename <新表名>
例如:alter table test rename test2
- 修改表的字段类型
基本语法:alter table<表名> modify <字段名><数据类型>
拓张语法:
将字段修改为第一个字段:alter table <表名> modify <新字段名> <数据类型> first
将字段修改到某字段后面:alter table <表名> modify <新字段名> <数据类型> after <某字段名>
- 修改字段名称和类型
基本语法:alert table<表名> change <旧字段名> <新字段名> <数据类型> - 添加字段
基本语法:alter table <表名> add <新字段名> <数据类型>
拓张语法:
将新字段添加到第一个字段:alter table <表名> add <新字段名> <数据类型> first
将新字段添加到某个字段后面:alter table <表名> add <新字段名> <数据类型> after<某字段名>
- 删除字段
基本语法:alter table<表名> drop <字段名> - 删除表的外键:
基本语法:alter table<表名> drop foreign key <外键名>
增删改表中的数据:
- 增加
基本语法:insert into <表名>(列名1,,列名2…列名n) values(值1,值2…值n)
注意:- .列名和值要一一对应
- 如果表名后不定义列名,则默认给所有的列添加值
insert into <表名> values(值1,值2…值n) - 除了数字类型,其他类型都需要用引号(单双都可以)
- 删除
基本语法:delete from<表名> where<条件>
注意:- 不加条件,则删除表中所有数据
- 如果要删除所有记录
- Delete from表名 ---不推荐使用
- Truncate table <表名> ---推按使用
- 修改
基本语法:update <表名> set 列名1=值1,列名2=值2… where 条件
注意:- 如果不加条件,则表中所有记录都会表修改
查询记录:
基本语法:
Select
字段列表
From
表名列表
Where
条件列表
Group by
分组字段 (desc[高到底]、asc[低到高])
Having
分组之后的条件
Order by
排序
Limit
分页限定
- 基础查询
- 多字段查询
select 字段1,字段2… from 表名
注意:*查询所有字段 - 去重
distinct - 起别名
as 也可以省略 - 一帮可以使用四则运算计算一些值
if null(表达式1,表达式2)
- 多字段查询
- 条件查询
- Where 后跟条件
- 运算符
> < >= <= = <>
between …end…
in(集合)
like:模糊查询
占位符:
_:单个任意字符
%:多个任意字符
is null 、is not null
max()、min()、count(*)、sum() 、avg() 、regexp ‘ 正则表达式’
and 或 &&
or 或||
not 或 !
- 运算符
- Where 后跟条件
- 连接查询
- 内连接
基本语法:select * from 表名1 inner join 表名2 on 表名.1字段=表名2.字段 (显式)
select * from 表名1 表名2 where 表名.1字段=表名2.字段(隐式)
注意:- 表名太长可用别名: select * from 表名1 as a inner join 表名2 as b on a.1字段=b.字段
- 内连接可以用where 代替on ,但是没有on的效率高
- 外连接
- 左外连接:
基本语法:select * from 表名1 left join 表名2 on 表名.1字段=表名2.字段 - 右外连接
基本语法:select * from 表名1 right join 表名2 on 表名.1字段=表名2.字段
- 左外连接:
- 内连接
注意:左连接以左表为主,右连接以右表连接
-
- 子查询:将第一次查询的结果作为第二次查询的结果范围
概念:查询中嵌套的查询为子查询
查询最高工作的员工信息
1.查询最高工资是多少 9000
select Max(salary) from emp;
2.查询工资等于9000的员工信息
select * from emp where salary=9000
子查询
select * from emp where salary=( select Max(salary) from emp)
- 子查询:将第一次查询的结果作为第二次查询的结果范围
数据类型:
- 整数型:tinyint(0-255[无符号]、-128-127[有符号])、smallint、mediumint、int、bigint
- 浮点小数和定点小数
单精度浮点小数:float
双精度浮点小数:double
定点小数:decimal
注意:都可以用(M,N)来表示,M为精度,表示总位数,N为标度,表示小数位数 - 日期类型
主要类型有:datetime、date、timestamp、time、year
数据:current_date() 、now()