MySQL学习笔记
一、SQL语句
- DDL(数据定义语言):定义数据库,数据表的结构:create(创建)、drop(删除)、alter(修改)
- DML(数据操纵语言):主要是用来操作数据:insert(插入)、update(修改)、delete(删除 )
- DCL(数据控制语言):定义访问权限、取消访问权限、安全设置 grant
- DQL(数据查询语言):select(查询)from子句 where子句
二、数据库的CRUD操作
创建数据库
create database 数据库的名字
--创建数据库的时候指定字符集
create database 数据库的名字 character set 字符集
create database 数据库的名字 character set 字符集 collate 校对规则;
查看数据库
--查看数据库定义的语句
show create database 数据库的名字;
--查看所有数据库
show databases;
修改数据库的操作
--修改数据库的字符集
alter database 数据库的名字 character set 字符集
删除数据库
drop database 数据库名字
其他数据库操作命令
--切换数据库(选中数据库)
use 数据库
--查看当前正在使用的数据库
三、表的CRUD操作
创建表
create table 表名(
列名 列的类型(长度) 约束,
列名2 列的类型(长度) 约束,
);
列的类型
java sql
int int
char/String char/varchar
char:固定长度
varchar:可变长度
double double
float float
boolean boolean
date date:YYYY-MM-DD
time:hh:mm:ss
datetime:YYYY-MM-DD hh:mm:ss 默认值是null
timestamp:YYYY-MM-DD hh:mm:ss 默认使用当前时间
text:主要是用来存放文本你
blob:存放的是二进制
列的约束:
主键约束:primary key
唯一约束:unique
非空约束:not null
自动增加:auto_increment
查看表
--查看所有表
show tables;
--查看表的创建过程
show create table 表名;
--查看表结构
desc 表名;
修改表(alter)
添加列(add)修改列(modify)修改列名(change)删除列(drop)修改表名(rename)修改表的字符集
--添加列(add)
alter table 表名 add 列名 列的类型(长度) 列的约束;
--修改列
alter table 表名 modify 列名 列的类型(长度) 列的约束;
--修改列名
alter table 表名 change column 列名 修改的列名;
--删除列
alter table 表名 drop 列名
--修改表名
rename table 原表名 to 新表名
--修改字符集
alter table 表名 character set 字符集;
删除表
drop table 表名;
SQL完成对表中数据的CRUD操作
插入数据
insert into 表名(列名....) values(值.....)
--如果插入是全列名的数据,表名后面的列名可以省略
--如果是插入部份列的话,列名不可省略
命令行下中文我问题:insert into student values(11,"李四",1,24)
- 临时解决方案:set names gbk;相当于是告诉mysql服务器软件,我们当前在命令行下输入的内容是gbk编码,当命令窗口关闭之后,它再输入中文就会存在问题
- 永久解决办法:修改my.ini配置(在mysql软件安装路径里)
- 暂停mysql的服务
- 在mysql安装路径中找到my.ini配置文件
- 将57行编码改成gbk
- 保存文件退出
- 启动mysql服务
删除记录
delete from 表名 [where 条件];
--如果没有指定条件,会将表中数据一条一条全部删除
--面试题:请问delete删除数据和truncate删除数据有什么差别
delete:DML语句 一条一条删除表中的数据
truncate:DDL语句 先删除表在重建表
关于哪条执行效率高:具体要看表中的数据量
如果数据量比较少,delete效率比较高
如果数据量比较多,truncate效率比较高
更新表记录
update 表名 set 列名=列的值,列名2=列的值2 [where 条件]
查询记录
select [distinct]{ * } [列名...] from 表名 [where 条件]
distinct:去除重复的数据
--别名查询 as的关键字,as关键字是可以省略
--表别名:select p.name,p,price from product as p;(主要是用在多表查询);
--列别名:select pname as 商品名称,price as 商品加个 from product;
--去掉重复的值
--查询商品所有的价格
select price from product;
select distinct price from product;
--select运算查询:仅仅在查询结果上做了运算+-*/
select *,price*1.5 from product;
select *,price*1.5 as discount from product;
--条件查询[where关键字]
指定条件,确定要操作的记录
--关系运算符: > >= < <= = != <>
<>:不等于:标准SQL语法
!=:不等于:非标准SQL语法
--沙逊商品价格在10到100之间
select * from product where price>10 and price<100;
select * from product where between 10 and 100;
--逻辑运算符:and,or,not
--模糊查询 like
_:代表的是一个字符
%:代表的是多个字符
--in在某个范围中获得值
--排序查询:order by 关键字
asc:ascend 升序
desc:descend 降序
--聚合函数:
sum():求和
avg():求平均值
count():统计数量
max():最大值
min():最小值
--where后面不能使用聚合函数 可以使用子查询实现
--分组:group by
--having关键字可以接聚合函数,出现在分组之后
--编写顺序
-- S..F..W..G..H..O
select .. from .. where .. group by .. having .. order by
--执行顺序
F..W..G..H..S..O
from .. where .. group by .. having .. select .. order by
网友评论