连接mysql的语法
mysql -u用户名 -p密码 [-h主机名] [-P端口号]
在一个mysql服务器中, 可以有多个mysql数据库(本质是一个文件夹)
在一个mysql数据库中, 可以有多个数据库表(本质是一个二进制文件)
在一个mysql表中, 可以有多条记录(数据)
SQL语法
1. 分号结尾
2. 不区分大小写
3. 注释:
-- ,#,/* */
语句分类
DDL 数据定义语言:定义数据库结构, 表结构
DML 数据操作语言:增删改
DQL 数据查询语言:查询
DCL 数据控制语言:用户维护, 权限管理, 安全操作. 一般由DBA完成
数据库操作 CRUD :
create增:
-- 直接创建数据库 db1
CREATE DATABASE db1;
-- 判断是否存在,如果不存在则创建数据库 db2并指定字符集为 gbk
CREATE DATABASE IF NOT EXISTS DB2 DEFAULT CHARACTER SET GBK;
drop删:
-- 删除数据库db1的语法
DROP DATABASE db1;
alter改:
-- 将 db2数据库的字符集改成 utf8
ALTER DATABASE db2 CHARACTER SET utf8;
SELECT查:
-- 查看正在使用的数据库
SELECT DATABASE();
show看:
-- 查看数据库db2的定义信息
SHOW CREATE DATABASE db2;
use换:
-- 改变要使用的数据库
USE db4;
表相关操作:
建表语句:
create table 表名
(列的列表);
数据类型
日期类型
date 日期
time 时间
datetime和timestamp的区别
格式一样的. timestamp不允许为null, 即使指定为null ,也会设置一个默认值, 就是当前系统时间.
字符串类型(必须指定长度)
varchar和char的区别
varchar(20) char(20)
varchar是可变长度字符串, 指定的长度是该字符串的最大长度.
char是定长的字符串, 指定的长度就是字符串最终的长度, 如果指定的字符串长度不足, 用空格补齐.
插入语句*****
insert into 表名 (列的列表) values(值的列表);
删除语句*****
delete from 表名 where 条件
delete 和 truncate的区别?
1. delete是DML, 而truncate是DDL. DML可以通过事务管理进行回滚, DDL不能被事务管理.
2. delete 效率低, 是逐行删除. truncate效率非常高.
修改语句*****
update 表名 set 列名1 = 值1, 列名2 = 值2... where 条件
查询语句*****
select distinct ... from ... where ... group by... having ... order by ... limit ...
distinct:
去重, 只是把结果集中的重复记录去除.
ifnull()函数
替换null值为指定值.
条件查询
<> 不等于
and or not
in(范围)
null值判断
is null 或 is not null
模糊查询
like
%: 任意(0个或者多个)多个任意字符
_: 一个任意字符, 有且只有一个.