用DOS命令窗口操作数据库
启动数据库:mysql -u用户名 -p密码
当出现这个窗口意味着启动成功!
DDL语句
数据库操作语句
- 查询当前所有数据库名称:show databases;
- 创建数据库:create database 数据库名;
- 如果不存在创建一个新的数据库:create database if not exists 数据库名;
- 删除数据库:drop database 数据库名;
- 判断删除(如果存在就删除):drop database if exists 数据库名;
数据库表操作语句
创建表之前要先声明给哪个数据库创建:use 数据库名;
-
创建表:
create table 表明(列名1 字段类型,列名2 字段类型…); -
查看数据库中所有表:show tables;
-
查看当前表的结果:desc 表名:
-
修改中文乱码:alter database 数据库名 default character set 字符集;
-
添加一个新的列:名:alter table 表名 add 列名 字段类型;
-
修改表字段名称:alter table 表名 change 旧列名 新列名 字段类型;
-
修改表字段类型:alter table 表名 modify 列名 字段类型;
-
修改表名:alter table 当前表名 rename to 新的表名;
-
删除表中某个列:alter table 表名 drop 列名;
-
删除表:drop table 表名;/drop table if exists 表名;
-
复制表:create table 新表名 like 其他表名;
DML语句
操作表中记录
给表中插入数据:
方式一:默认全部插入数据
insert into 表名 values(值1,值2,值3…);
方式二:部分插入
insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);
带条件修改表中记录:
update 表名 set 字段名称=值 where 条件语句;
eg:update student set name=‘张三’ where id=1;(把id是1的学生名改为张三)
批量修改:update 表名 set字段名称;
删除表中记录:
删除表:delete from 表名;
带条件删除:delete from 表名 where 条件;
delete和truncate的区别?
delete from 表名:删除全表中记录,针对自增长主键的字段不受影响,1,2,3下一次从4开始增长;
truncate from 表名:删除一张表,在复制一张一模一样的表,针对自增长主键字段置空,下一次插入数据从1开始一直自增。
DQL语句
对表的查询语句
基本查询:select * from 表名;
指定查询:select 列名1,列名2 from 表名;
查询字段的时候去重:select distinct 字段 from 表名;
给字段起名字(as)也可以省略:
select name (as)‘姓名’,sex ‘性别’ from 表名;
条件查询:查询年龄大于20的姓名和年龄
select name,age from student where age>20;
范围查询:查询年龄在20到30的学生
select * from student where age between 20 and 30;
查询多个数据用in(类似于集合数据)
select * from student where age in(18,28,30)
模糊查询:关键字like
select * from 表名 where 字段名称 like ‘占位符号’;
%—>包含的字符,相当于一个字符
_ 代表单个字符
eg:’%张%’ 名字里有张的
'马_'姓马,名字里有两个字符
排序:
select * from 表名 order by 字段名称 默认升序排序;
ASC 升序 DESC 降序
分组查询:group by
select sex,count(id)from student group by sex;按性别分组
分页查询:limit
select * from 表名 limit 起始行数,每页显示条数
起始行数=(当前页码数-1)也就是索引值 * 每页显示条数
筛选:having
可跟聚合函数
select 分组字段,聚合函数
from 表名
where 条件 //1
group by 分组字段 //2
having 聚合函数 符合什么条件; //3
having和group by的区别
group by 之前先执行where条件语句,后面才是分组,having放在group by 之后(先后顺序问题);group by 后面跟的是分组得我字段,不能使用聚合函数;而having 后面可以使用聚合函数。