常用数据类型
double(5,2) 表示最多5位,其中必须有两位小数,即最大值999.99
int(10) 若不够10位就在数字前面用0来填充 0000000099
char 固定长度字符串类型: char(10) ‘abc七个空格’
varchar 可变长度字符串类型 varchar(10) ‘abc’
text 字符串类型
blob 二进制类型 经常用于把视频音频转化为二进制储存
date 日期类型 格式为:yyyy-MM-dd
time 时间类型 格式为:hh:mm:ss
datetime 日期和时间类型 yyyy-MM-dd hh:mm:ss
在mysql中 字符串类型 和 日期类型 都要用单引号括起来。
DDL——对表的结构进行操作
- 进入mysql
mysql -u root -p
密码
- 创建数据库
create database 数据库名 character set utf8;
PS:不要写成utf-8 一定要加分号
- 查看我所拥有的所有数据库
show databases;
PS:database要加s
- 使用数据库:
use 数据库名;
- 创建表table:1.先进入某一个数据库database(use 数据库名)
2.输入创建表的命令:
create table 表名(列名 列的类型 [约束]);
create table students(id int, name varchar(25), age int, email varchar(255));
- 给表添加一列:
alter table 表名 add 列名 数据类型;
alter table students add score int;
- 删除一列
alter table 表名 drop 列名;
alter table students drop score;
- 查看表的样式(查看表的字段信息)
desc 表名;
desc students;
- 修改一个表的字段类型
alter table 表名 modify 字段名 数据类型;
alter table students modify id bigint;
- 修改表名
rename table 原始表名 to 要修改的表名;
rename table emplyee to employee;
- 查看表的创建细节
show create table 表名;
show create table students;
- 修改表的字符集为gbk
alter table 表名 character set 字符集名称;
alter table students character set bgk;
- 修改表的列名
alter table 表名 change 原始列名 新列名 数据类型;
alter table students change id newid int;
- 删除表
drop table 表名;
drop table students;
- 修改数据库
alter database 数据库名 charactor set gbk;
DML——对表中数据进行增删改查
- 查询表的内容
select * from 表名;
select * from students;
- 增
insert into 表名(列名1,列名2) values(列值1,列值2)
insert into students(id, name, age, email, score) value(2, 'zs', 18, 'abc', 20)
, (4, 'ww', 20, '123 @qq.com', 90);
- 改
update students set score=90;把所有写生的分数改为90
update students set score=60 where name='zs';把张三的分数改为六十;
update students set age=30,score=60 where name='ls';
update students set age=age+1 where name='ww';把王五的年龄在原来基础上加一岁;
修改数据库密码为123456
function 1:要先进入mysql
update mysql.user set authentication_string=password('123456') whrer user='root' and Host = 'localhost';
flush privileges; 刷新mysql的系统权限相关表
function 2:要在cmd里面
mysqladmin -u root -p password 123456
- 删
//delete删除表中的数据 表结构还在 删除后的数据可以找回
delete from students where name='ww';
delete from students; 删除所有数据
//truncate删除是把表直接drop掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比delete快
truncate table students;
DQL——负责查询
- 查询所有数据
select * from students;
通过查询语句查询出来的数据以表的形式展示,我们称这个表为虚拟结果集 存放在内存中 查询返回的结果集是一张虚拟表
- 查询指定的列
select name,age from students;
- 条件查询where
条件查询就是在查询时给出where子句 在where中可以使用一些运算符及关键字
=(等于
) !=(不等于
) <>(不等于
) <(小于
) <=(小于等于) >(大于) >=(大于等于)
between...and; 值在什么范围
in(set); 固定的范围值
is null; (为空
) is not null(不为空
)
and; 与
or; 或
not; 非
for emamples
查询性别为男,并且年龄为20的学生记录
select * from students where gender='男' and age=20;
查询学号为1001 或者 名字为zs的记录
select * from students where id=1001 or name='zs';
查询学号为1001 1002 1003的记录
select * from students where id=1001 or id=1002 or id=1003;
select * from students where id=in(1001,1002,1003);
查询年龄为null的记录
select * from students where age is null;
查询年龄在18到20之间的学生记录
select * from students where age>=18 and age<=20;
select * from students where age between 18 and 20;
查询性别非男的学生记录
select * from students where gender !='男';
查询姓名不为null的学生记录
select * from students where name is not null;
- 模糊查询
根据指定关键字进行查询
使用like关键字后跟通配符
通配符
_ : 任意一个字母
%: 任意0~n个字母
for example:
查询姓名由5哥字母构成
select * from students where name like '_____';
//五个下划线
select name from students where name like '_____';
//写*的话会把满足条件的所有信息都打印出来 name就只打印满足条件的name
//汉字的话 一个汉字一个下划线
查询姓名由5哥字母构成 并且第五个字母为s的学生记录
select * from students where name like '____s';
//四个下划线一个m
查询姓名以m开头的学生记录
select * from students where name like 'm%';
//%代表0到多个字符 就是m后面有多少个字符都可以
查询姓名中第二个字母为u的学生记录
select * from students where name like '_u%';
查询姓名中包含s字母的学生记录
select * from students where name like '%s%';
- 字段查询控制
去除重复记录 distinct
select distinct name from students;
把查询字段的结果进行运算 必须都要是数字型
select *,age+score from students;
//会多出来一列 列名是age+score
select *,ifnull(age,0)+ifnull(score,0) from students;
//如果age为null的话当作0处理
//新列名太难看 修改列名
As 记作total
select *,age+score as total from students;