MySQL介绍
MySQL特点
SQL语句
数据库操作
1、登录数据库
mysql -u root -p
2、显示当前时间
select now();
3、登出(退出)数据库
exit/quit/ctr+d
4、查看所有数据库
show databases;
5、创建数据库
create database python charset=utf8;
6、使用数据库
use python;
7、查看当前使用的数据库
select database();
8、删除数据库
drop database python;
表结构操作
1、查看当前数据库中的所有表
show tables;
2、创建表
create table students(id int unsigned primary key auto_increment not null, name varchar(10) not null, age tinyint default 0, gender enum("男","女")default "男");
说明:
create table 表名(
字段名称 数据类型 可选的约束条件,
column1 datatype contrai,
...
);
3、修改表-添加字段
alter table students add birthday datetime not null;
4、修改表-修改字段类型
alter table students modify birthday date;
说明:
modify:只能修改字段类型或者约束,不能修改字段名
5、修改表-修改字段名和字段类型
alter table students change birthday birth datetime not null;
说明:
change:既能对字段重命名又能修改字段类型还能修改约束
6、修改表-删除字段
alter table students drop birth;
7、查看创表SQL语句
show create table students;
8、查看创库SQL语句
show create database python;
9、删除表
drop table students;
表数据操作
查询数据-查
所有列
select * from students;
指定列
select name,age from students;
添加数据-增
主键列插入数据的时候可以指定:0/default/null
全列插入
insert into students values(0, "梁来福", 1.1, default);
insert into students values(default, "刘来福", 1.1, default);
部分列插入
insert into students(name, age) values("健康", 99);
全列多行插入
insert into students values(0, "发财", 99, "女"),(0, "努力", 88, default);
部分列多行插入
insert into students(name, age) values("幸运", 99),("开心", 99);
修改数据-改
单列
update students set age = 88 where id = 3;
多列
update students set age = 66,gender = "女" where id = 8;
删除数据-删
delete from students where id = 99999;
逻辑删除数据
添加一个标识字段
alter table students add is_del tinyint default 0;
update students set is_del = 1 where id = 6;
关键字
as
as关键字,用户给表的字段和表设置别名
select name as 姓名,age as 年龄 from students as 学生表;
提示
as关键字可以省略
select name 姓名,age 年龄 from students 学生表;
distinct
distinct关键字,用于去除重复的数据行
select distinct age, gender from students;
select distinct gender from students;
where条件查询
支持的运算符
- 比较运算符
- 逻辑运算符
- 模糊查询
- 范围查询
- 空判断
格式
select * from 表名 where 条件;
比较运算符
- 等于:=
- 大于:>
- 大于等于:>=
- 小于:<
- 小于等于:<=
- 不等于:!=或<>
1、id大于3的
select * from students where id > 3;
2、id小于8的
select * from students where id <=8;
3、姓名不是“梁来福”的
select * from students where name != "梁来福";
逻辑运算符
- and
- or
- not
1、is_del等于0的
select * from students where is_del = 0;
2、id大于3并且性别是女的
select * from students where id > 3 and gender = "女";
3、id小于4或者id_del等于0的
select * from students where id > 4 or is_del = 0;
4、年龄大于1并且小于90的
select * from students where age >=1 and age <= 90;
5、取反“年龄大于1并且小于90的”
select * from students where not(age >=1 and age <= 90);
范围查询
between ... and ...
表示在一个连续的范围内查询
1、编号是3至8的
select * from students where id >= 3 and id <= 8;
select * from students where id between 3 and 8;
2、编号不是3至8的
select * from students where not(id between 3 and 8);
in
表示在一个非连续的范围内查询
1、编号是1,3的
select * from students where id in (1, 3);
2、编号不是1,3的
select * from students where id not in (1, 3);
模糊查询
- like是模糊查询关键字
- %表示任意多个任意字符
- _表示一个任意字符
1、查询姓梁的
select * from students where name like "梁%";
2、查询姓梁并且名字是一个字符的
select * from students where name like "梁_";
3、查询姓梁并且名字是两个字符的
select * from students where name like "梁__";
4、查询姓梁的或者名字叫来福的
select * from students where name like "梁%" or name like "%来福";
空判断查询
1、查询没有年龄的数据
select * from students where age is null;
2、查询有年龄的数据
select * from students where age is not null;
注意
- 不能使用where age = null 判断为空
- null不等于“空字符串”