MYSQL学习
一、MYSQL的SQL语句
-
SQL:Structure Query Language 结构化查询语言
-
DDL:数据定义语言:数据库的定义,与数据库/表结构相关:create(创建) drop(删除) alter(修改)
-
DML:数据操纵语言:操作表数据 insert(插入) update(修改) delete(删除)
-
DCL:数据控制语言:设置用户的访问权限 ,安全设置 grant,
-
DQL:数据查询语言:主要是select(查询) from子句 where子句
二、数据库的CRUD的操作
1.创建数据库
create database 数据库的名字
create database day01;
create database 数据库的名字 character set 字符集;(字符集是一套符号和编码,默认为utf8)
create database day01_1 character set utf8;
create database 数据库的名字 character set 字符集 collate 校对规则;(校对规则是在字符集内用于比较字符的一套规则)
(主要了解utf8:mysql中的查看命令:show collation like "utf8%";)
create database day01_2 character set utf8 collate utf8_bin;
2.查看数据库
show create database 数据库名字;
show create database day01;
show database;
information_schema(约束)
performance_schema
mysql
3.修改数据库的操作
alter database 数据库的名字 character set 字符集;
alter database day01 character set gbk;
4.删除数据库
drop database 数据库的名字;
drop database day01;
5.其他数据操作命令
use 数据库名字;
use day01;
select database();
三、表的CRUD操作
1.创建表
create table 表名字(
列名 列的类型(长度) 约束,
列名 列的类型(长度) 约束
);
列的类型:
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 |
2.查看表
show tables;
show create table 表名;
desc 表名;
3.修改表
添加列(add)
alter table 表名 add 列名 列的类型 列的约束;
alter table student add gold int not null;
修改列(modify)
alter table 表名 modify 列名 列的类型;
alter table student modify sex varchar(2);
修改列名(change)
alter table 表名 change 旧列名 新列名 列的类型
alter table student change sex gender varchar(2);
删除列(drop)
alter table 表名 drop 列名;
alter table student drop gold;
修改表名(rename)
rename table 旧表名 to 新表名;
rename table student to teacher;
修改表的字符集(character set)
alter table 表名 character set 字符集;
alter table teacher character set gbk;
4.删除表
drop table 表名;
drop table teacher;
四、SQL完成对表中数据的CRUD的操作
1.插入数据
insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);
insert into student(sid,name,age) values(1,'zhangsang',23);
insert into student values(2,'lisi',32);
insert into student values
(3,'wangwu',20),
(4,'chenliu',21),
(5,'liuqi',22);
select * from student;
2.删除记录
delete from 表名 [where 条件];
delete from student where sid=1;
delete from 表名;
delete from student;
(truncate table 表名;)
delete:DML 一条一条删除表中数据
truncate:DDL 先删除表再重建表
如果数据比较少,delete比较高效
如果数据比较多,truncate比较高效
3.更新表记录
update 表名 set 列名=列的值,列名2=列的值 [where 条件];
update student set name='lisi' where id=1;
4.查询记录
from...后面的语句最先执行
select...后的语句最后执行
select [distinct] [*] [列名,列名2] from 表名 [where 条件];
distinct : 去除重复数据
select * from product;
select pname,price from product;
select p.name,p.price from product as p;
select pname as 商品名称,price as 商品价格 from product;
(as关键字可省略)
select distinct price from product;
select *,price*0.5 as 折后价 from product;
指定条件,确定要操作的记录
select * from product where price > 60;
<>:不等于 :标准SQL语句
!=:不等于 :非标准SQL语句
select * from product where price > 10 and price < 100;
等价于
select * from product where price between 10 and 100;
_ :代表的是一个字符
% :代表的是多个字符
select * from product where pname like '%小%';
select * from product where cno in (1,3,5);
asc:ascend 升序(默认的排序方式)
desc:descend 降序
select * from product order by price;
select * from product order by price asc;
select * from product order by price desc;
sum():求和
avg():求平均值
max():最大值
min():最小值
count():统计数量
select sum(price) from product;
select avg(price) from product;
select count(*) from product;
select... from...where...group...having...order by;
from ...where...group...having...select...order by;
select cno,count(*) from product group by cno;
select cno,avg(price) from product group by con having avg(price) > 60;