重点:
操作数据库时要细心, 更新数据库必须带条件
注释为 #
(1)创建数据库
基本语法:create database 数据库名字 [库选项];
create database test charset utf8;
库选项:用来约束数据库,分为两个
1.字符集设定:charset 具体字符集。常用字符集:utf8和GBK
2.校对集设定:collate 具体校对集(数据比较的规则)
如果数据库名字为中文,需要先 set names gbk;
(2)查看所有数据库
show databases;
(3)模糊查询数据库
查询以information开头的数据库
show databases like 'information_%';
(4)删除数据库
drop database 数据库名字;
注意:危险,不要随意删除,先进行备份
(5)使用数据库
use 数据库名字;
(6)新增数据表
creat table [if not exists] 表名(
字段名字 数据类型,
字段名字 数据类型
)[表选项];
表选项:用来约束数据库,分为两个
1.字符集设定:charset 具体字符集。常用字符集:utf8和GBK
2.校对集设定:collate 具体校对集(数据比较的规则)
(7)查看所有表
show tables;
(8)查看部分表
查看以s结尾的表
show tables like '%s’;
(9)查看表结构
desc 表名;
(10)重命名表名
rename table 旧表名 to 新表名;
rename table student to my_student;
(11)修改表选项
alter table 表名 表选项 = 值;
alter table my_student charset = gbk;
(12)新增字段
alter table 表名 add [column] 字段名 数据类型 [列属性][位置];
first:第一个位置
after:在哪个字段之后:after 字段名;默认的是在最后一个字段之后;
(13)修改表的某个列的数据类型(放到谁的后面)
alter table 表名 modify 列名 数据类型 [after 列名];
alter table my_student modify number varchar(10) [after id];
(14)重命名字段
alter table 表名 change 旧字段 新字段 数据类型 [属性][位置]
alter table my_student change gender sex varchar(5);
(15)删除number字段
alter table 表名 drop 字段名;
alter table my_student drop number;
删除时应小心;
(16)删除数据表
drop table 表名;
drop table class;
删除有危险,操作需谨慎
(17)新增数据
1. insert into 表名 values (值列表)[,(值列表)];
insert into my_student values (2,"shuang","female",20);
可以一次插入多条记录
2.insert into 表名 (字段列表) values (值列表)[,(值列表)];
insert into my_student (id,name,sex,age) values (4,"sen","male",21);
(18)查看所有数据
select * from 表名;
select * from my_student;
(19)查看符合条件的数据;
select 所有字段(或部分) from 表名 where 字段 = 某个值;
select id,name,sex from my_student where id = 2;
(20)更新数据
update 表名 set 字段 = '值' where 字段 = ‘值’;
update my_student set id = 3 where name = 'shuang';
(21)删除数据
delete from 表名 [where 条件];
delete from my_student where id = 3;
(22)查看数据库识别哪些字符集
show character set;
(23)查看数据库默认处理什么字符集
show variables like 'character_set%';
(24)修改数据库认为的客户端数据的字符集为utf8
set character_set_client = utf8;
当次连接有效,重连后失效
(25)修改数据库给定的数据字符集为utf8;
set character_set_results = utf8;
当次连接有效,重连后失效
(26)创建时间日期表
create table my_date(d1 datetime,d2 date,d3 time,d4 timestamp,d5 year) charset utf8;
(27)新增一列 语法 : alter table 表名 add column 字段名 数据类型;
(28)查看自增长变量
show variables like 'auto_increment';
自动增长 通常与主键搭配
1.任何一个字段要做自增长前提本身必须是一个索引(key一栏有值)
2.自增长字段必须是数字(整型)
3.一张表最多只能有一个自增长
4.每次从最大值加一
(29)主键:Primary key,用来唯一的约束该字段的数据,不能重复(一张表只有一个主键)
1. 增加主键:1.在字段后跟Primary key
2.当表已经创建好之后,额外追加主键
Alter table 表名 add primary key(字段列表);
2. 主键冲突时,修改或插入数据失败
主键冲突:替换
replace into 表名 values(值列表);
3. 主键必须先删除才能增加
alter table 表名 drop primary key;
(30)列描述:comment:
没有实际含义:专门用来描述字段,会根据表创建语句保存,来给数据库管理员来进行了解的
(31)唯一键(unique key):一张表中有很多字段需要唯一性,但主键只有一个
允许字段为空
1.增加唯一键:与主键相同
2.先删除在更新 alter table 表名 drop index 字段名;
(32)蠕虫复制:从已有的数据中去获取数据,然后将数据有进行新增操作:数据成倍增加
create table 新表名 like 旧表名; (只复制结构)
insert into 新表名 select * from 旧表名;
(33)更新数据:
update 表名 set 字段 = 值 [where] [limit = 值];(limit限制数量)
(34)删除数据:
delete from 表名 where 字段= 值 [limit = 值];
(35)清空表:重置自增长
Truncate 表名;
(36)查询数据:
select [select选项] 字段列表/ * from 数据源 [where条件字句][group by 字句][having 字句] [order by 字句] [limit 条件];
一. select选项
1.all 全部
2.distinct 去重
二.where 字句:判断数据,筛选数据
select * from 表名 where id = 1 || id = 3;
select * from 表名 where id in(1,3);
三 . 数据源:数据的来源,关系型数据库的来源都是数据表;
1.单表数据源 select * from 表名
2.多表数据源 select * from 表名1,表名2,表名3....(笛卡尔积,交叉连接)
四.group by 字句 :分组根据某个字段分组
1. 根据性别分组
Select * from 表名 group by sex [ asc | desc];
2.多字段分组:
先根据一个字段进行分组,然后对分组后的结果再次按照其他字段进行分组
五: 统计函数:
count()统计分组后的记录数:1.*:统计每一组有多少记录 2.字段名:统计对应字段
max():统计每组中最大的值
avg(): 统计平均值
sum(): 统计和
回溯统计:with rollup;
六:Having 字句:进行条件判断
对分组后的结果用 having 统计 几乎能用where 的所有
七:order by:根据某个字段进行升序或降序排序
order by 字段名 [asc | desc]; (可以多字段排序)
八:limit 字句:限制数量
1.指用来限制长度,数据量
2.限制起始位置,限制数量 select * from 表名 limit 2,2; 从第二个位置起,向后查两个
字段别名
字段名 [as] 别名;
索引
1.主键索引:primary key
2.唯一索引:unique key
3.全文索引:fulltext index 最大问题:如何确定关键字
4.普通索引:index