数据库结构相关SQL语句
- 创建数据库
create database my_demo_db;
- 查看当前数据库编码集
show create database my_demo_db;
- 查看全局编码
show variables like 'character%';
- 快速的设置client端编码集(临时设置,窗口关闭后失效)
set names gbk;
set names utf8;
- 删除数据库
drop database my_demo_db;
- 修改数据编码
alter database my_demo_db character set utf8;
- 查看当前使用数据库
select database();
表结构相关的SQL语句
- 创建表
create table tablename(
列名 类型(长度),
列名 类型(长度),
列名 类型(长度),
列名 类型(长度)
) character set utf8;
- 查看表结构
desc tablename;
- 主键约束
primary key auto_increment
- 唯一约束
unique
- 非空约束
not null
- 向已有的数据表添加一列
alter table tablename add 列名 类型(长度) 约束;
- 改变已有数据表一列的类型 长度
alter table tablename modify 列名 类型(长度) 约束;
- 改变已有数据表的列名
alter table tablename chage 旧列名 新列名 类型(长度) 约束;
- 删除已有的一列
alter table tablename drop 列名;
- 修改表名
rename table 旧表名 to 新表名;
- 删除数据表
drop table tablename;
- 查看当前数据库中所有表
show tables;
表数据操作
- 插入数据
insert into tablename (列名1,列名2,....) values('值1','值2',....);//数字不要加 '
insert into tablename values(所有值);//自动增长的列写null
- 更新数据
update tablename set 列名=值,列名=值 where binary 条件;
- 删除数据
delete from tablename where 条件;
delete from tablename;//原理是一行一行的删
- 事务回滚
start transaction;//开启事物
rollback;//回滚
- 删除一个表中所有数据
//原理是.先删除表结构,再创建表结构,删除后不可回滚,性能高于delete from tablename;
truncate tablename;
select数据查询操作
- 查询所有数据
select * from tablename;
select 列名,列名 from tablename;
- distinct指定一个列名查询排重
select 列名,distinct列名 from tablename;
- 查询时进行运算
select 列名运算表达式 from 表名;
- 列取别名
select 列名 as 别名 from 表名;//as可以省略
- where条件查询
select * from where 条件;
- 等于 <>
select * from tablename where 列名 <> 100;//列名不等于100
- 之间 between - and -
select * from tablename where 列名 between 80 and 100;//列名>80 and 列名<100
- in
select * from tablename where 列名 in(70,80,90);//列名值是70或80或90的条目
- like
select * from tablename where 列名 like 'a%';//a开始,后面多位任意
select * from tablename where 列名 like 'a_b';//a _一位任意
- is null
select * from tablename where 列名 is null;
//查询列名是null的所有数据;null取值1/2 位于1(true)和0(false)之间
//任何表达式在与null进行逻辑运算就是null
- and or not
//and先执行
- order by 排序
select * from tabelname order by 列名 asc|desc;//默认asc升序
- count 统计查询结果的条数
select count(*) from tablename;
select count(*) from tablename where 条件;
- 计算 列 和
select sum(列名) from tablename;//sum在进行求和时 null不进行运算
- avg 求 一列数据的平均值
select avg(列) from tablename;//null也是不参与运算
- max/min 求一列数据的最大值/最小值
select max(列) from tablename;
- ground by
select 列名 from tabelname group by 列名;
- having
where having
where 是在分组之前执行
having 是在分组之后执行
having可以替换where
数据库的备份和恢复
- 备份
cmd>mysqldump -u root -p 数据库名字 > c:\mydatabase.bak
- 恢复
//1.首先创建一个空数据库
mysql>create database mydb;
//方法一
mysql>source 备份文件;
//方法二
cmd>mysql -u root -p 数据库名 < 数据库备份文件
多表设计
外键约束,一张表一个字段引用另一张表的主键
- 给表添加外键
alter table tablename add foreign key (字段) references 另一张表(id);