几个英文解释:
Sql structed query language
DDL data definition language create drop alter truncate
DML data manipulation language insert update delete
DCL data control language grant(授权) revoke(取消授权)
DQL data query language select
mysql的数据类型:
int
float,doulbe
char(固定长度,不够就补上空格),varchar (可变长度,合法范围内数据多长,长度多长)
date,time,datetime,timestamp(时间戳,会自动设置当前时间为其值)
text,blob(二进制类型文件)
单表约束:
primary key
unique
not null
--查看所有数据库
show databases;
--查看当前正在使用的是哪个数据库
select database();
--创建一个名字为dyq的数据库
create database dyq;
--删除名为dyq的数据库
drop database dyq;
--显示dyq这个数据库创建的语句,以及编码是什么
show create database dyq;
--修改数据库:一般很少修改数据库 , 如果修改,只会修改数据库的编码,这一般也很少修改。
alter database dyq character set gbk;
alter database dyq character set utf8;
--创建表格前要指定是哪个数据库,也就是使用哪个数据库
use dyq;
--创建一个student表格,有id,name,age,sex
create table dyq(
id int(10) primary key auto_increment,--主键自动增长
name varchar(20) unique not null,--姓名唯一不为空
age int not null,
sex varchar(2) not null);
CREATE TABLE perple2(
id INT PRIMARY KEY,
username VARCHAR(32) UNIQUE,
age INT(11),
sex VARCHAR(32) NOT NULL,
thistime TIMESTAMP);--带时间戳
--创建表格时不知道要不要添加约束,也可以在创建表格时不添加约束,以后再添加约束,用关键字alter
--添加主键约束
alter dyq modify id int primary key;
--添加自动增长约束
alter dyq modify id int auto_increment;
--添加唯一性约束
alter dyq modify name varchar(20) unique;
--添加非空约束
alter dyq modify sex varchar(8) not null;
--修改表格的字符集
alter table 表名 character set 字符集
--往表格中添加数据,添加一条完整的数据
insert into dyq values(null,'dyq',19,'1');
--往表格中只添加部分数据,不想添加一条完整的数据,前提是未添加的数据可以为空
insert into dyq (id,name,age,sex) values (null,'dyq',19,'1');
--修改整个dyq表格的所有年龄都为18
update dyq set age=18;
--修改dyq表格中某个数据的值示例
update dyq set age=100 where id = 10;
--删除dyq表格中id为2的记录
delete from dyq where id=2;
--删除表格,彻底删除什么都不留
drop table dyq;
--删除表格,逐行删除,最后留一个空表格
delete from dyq;
--先彻底删除表格,然后复制一个空表格,结构和原来的表格一模一样
truncate table dyq;
--修改表格的名称
rename table dyq to duyuquan;
--使表格增加一列
alter table dyq add salary float(32) not null;
--删除表格中的一列
alter table dyq drop salary;
--修改表格中某一列的列名
alter table dyq change name username varchar(32) unique;
--展现数据库中所有的表
show tables;
--展现某个表格创建的语句
show create table dyq;
--查看某张表的结构
desc dyq;
--常用查询语句结构一般如下
select
distinct deptno,count(*),avg(salary)
from dyq
group by deptno having deptno>1 order by deptno limit 1,3;--1代表从第几条记录开始,3代表展示多少条
--利用别名查询,使用的关键字是as.as可以省略的.
--表别名:
select * from product as p;
--列别名:
select pname as pn from product;
--where后的条件写法:
>,<,=,>=,<=,<>
--逻辑运算符: and or not
--null值判断 : is null, is not null
--模糊查询:like
占位符_代表一个字符,而%代表任意个字符.
select * from product where pname like '%新%';
select * from product where pname like '_新_';
--in 在某个范围中获得值
select * from product where pid in (2,5,8);
--between 12 and 56
select * from product where pid between 12 and 56;
--分组查询
1.根据cno字段分组,分组后统计商品的个数.
select cno,count(*) from product group by cno;
2.根据cno分组,分组统计每组商品的平均价格,并且平均价格> 60;
select cno,avg(price) from product group by cno having avg(price)>60;
having 关键字可以让我们筛选成组后的各种数据,可以理解为对分组后的数据进行再次过滤
select cno,avg(price) from product group by cno having sum(price)>1500;