1.开启和关闭服务
1)在命令窗口运行
net start MySql —开启服务,MySql为服务名
net stop MySql —关闭服务,MySql为服务名
2)通过服务进行开启
win+r,再输入cmd ,然后输入services.msc
2.登录退出MySQL
mysql -uroot -p*******
mysql -h localhost -P 3306 -uroot -p****** (数据库登录)localhost:IP 3306:数据库端口 root:用户名 *****:数据库密码
exit quit (数据库退出)
3.显示有哪些数据库
show databases;
4.注释
单行注释:-- 注释内容 或者 #注释内容(MySQL特有的注释方式)
多行注释:/* 注释内容 */
DDL:操作数据库和表
1.操作数据库(CRUD)
1.C(Create):增加创建
create database bktest;–bktest:数据库名称
create database if not exists bktest;–如果不存在就创建
create database if not exists bktest character set gbk; — gbk:字符集名称,创建指定字符集的数据库
2.R(Retrieve):查询
*查询所有数据库名称
show databases;
*查看某个数据库的字符集
show create database mysql;–mysql数据库名
3.U(Update):修改
*修改数据库字符集
alter database bktest2 character set utf8;
alter database
4.D(Delete):删除
*删除数据库
drop database bktest2;-- bktest2:数据库名称
drop database if exists bktest2; – 判断bktest2存在就删除
5.使用数据库
*查询当前正在使用的数据库
show database(); –
*切换数据库
use bktest; – bktest:数据库名称
2.操作表
1.C(Create):增加创建
1.语法
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
…
列名n 数据类型n
); – ()里面写的是字段名,字段类型,最后一列不要写 ‘,’
create table if not esists stuinfo(id int,name varchar(20),age int);
字段类型 整数int
小数double(5,2)
日期date(只包含年月日yyyy-MM-dd)
datetime(年月日时分秒 yyyy-MM-dd HH:mm:ss)
timestemp (年月日时分秒 yyyy-MM-dd HH:mm:ss 如果值为空或者NULL则默认使用本地系统时间)
字符串 varchar(20):最大20个字符,可设置
*复制表
create table 表名 like 表名;
2.R(Retrieve):查询
*查询一个数据库中所有的表名称
show tables;
3.U(Update):修改
1.修改表名
alter table 表名 rename to 新的表名;
2.修改字符集
alter table 表名 character set 字符集名称;
3.添加一列
alter table 表名 add 列名 数据类型;
4.修改列名称,类型
alter table 表名 change 列名 修改后新列名 数据类型;
alter table 表名 modify 列名 新的数据类型;
5,删除列
alter table 表名 drop 列名;
4.D(Delete):删除
*删除表
drop table 表名称;
drop table if exists 表名称;
DML:
1.添加数据
insert into 表名(列名1,列名2,…,列名n) values(值1,值2,…,值n);
2.删除数据
delete from 表名 [where 条件]
*如果不写条件,删除整张表内容
不建议这么使用,使用truncate table 表名; – 删除表,然后创建一张一样的表
3.修改数据
update 表名 set 列名=值,列名=值 [where 条件]
DQL:查询表中的数据
1.语法
select
字段列表
from
表名列表
where
条件列表
groud by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2.基础查询
1.多个字段的查询
*select name,age from student;
*select 列名,列名 from 表名;
2.去除重复
select distinct 列名 from 表名;
3.计算列
*select 列名+列名 from 表名
SELECT NAME,math,english,math+english FROM student3;
SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0) FROM student3;
4.起别名
SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0) as 总分 FROM student3;
3.条件查询
语法:
1.where子句后面加条件
2.运算符
* < , > , <= , >= , = , <>
查询年龄大于20岁的
select * from student3 where age>20;
* between and
查询年龄在20-30之间的
select * from student3 where age between 20 and 30;
* in(集合)
select * from student3 where age = 22 or age = 19 or age=25;
select * from student3 where age in (22,19,25); -- 等同于上一行的
* LIKE -- 模糊查询
select * from student3 where name like '马%'; -- 所有姓马的
SELECT * FROM student3 WHERE NAME LIKE '马_'; --%代表所有 _代表后面只有一个字符
* IS NULL
* AND 或 &&
* or 或 ||
* not 或 !
4.排序查询
语法:order by 子句
*order by 排序方式1,排序方式2...
*asc 升序排列 desc 降序排列
SELECT * FROM student3 ORDER BY math DESC,english ASC
5.聚合查询:将一列函数作为一个整体,进行纵向的计算
1.count:计算数量
SELECT COUNT(NAME) FROM student3;
2.max:计算最大值
SELECT MAX(math) FROM student3;
3.min:计算最小值
SELECT MIN(math) FROM student3;
4.sum:求和
SELECT SUM(math) FROM student3;
5.avg:平均值
SELECT AVG(math) FROM student3;
6.分组查询
1.语法
group by
*SELECT sex,AVG(math) FROM student3 GROUP BY sex;
注意:这里使用聚合函数,分组字段,其他的没有意义
SELECT sex,AVG(math) FROM student3 WHERE math >70 GROUP BY sex;
SELECT sex,AVG(math) FROM student3 WHERE math >70 GROUP BY sex HAVING COUNT(id) > 2;
where后面不可以跟聚合函数,having后可以跟聚合函数
7.分页查询
语法:limit 开始的索引 每页查询的条数
*每页显示3条
SELECT * FROM student3 LIMIT 0,3;
SELECT * FROM student3 LIMIT 3,3;
约束:对表中的数据进行限定,保证数据的正确性、有效性以及完整性。
分类:
1)主键约束 primary key
注意:
含义:非空且唯一
一张表只能有一个字段作为主键
主键就是表中的唯一标识
创建表时添加主键约束
CREATE TABLE IF NOT EXISTS stu(
id INT PRIMARY KEY,
phone_number VARCHAR(20)
);
删除主键
ALTER TABLE stu DROP PRIMARY KEY;
表创建后添加主键
ALTER TABLE STU MODIFY id INT PRIMARY KEY;
自动增长
概念:如果某一列是数值类型,使用Auto_increment 可以来完成值的自动增长
在创建表时添加
CREATE TABLE IF NOT EXISTS stu(
id INT PRIMARY KEY AUTO_INCREMENT,
phone_number VARCHAR(20)
);
删除自动增长
ALTER TABLE stu MODIFY id INT;
添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
2)非空约束 not null
1.创建表时添加约束
CREATE TABLE stu(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL
);
---删除NAME的约束
alter table stu modify NAME VARCHAR(20);
2.创建表完之后,添加约束
alter table stu modify NAME VARCHAR(20) NOT NULL;
3)唯一约束 unique
唯一约束可以有NULL,但是只能有一列一条记录为NULL
CREATE TABLE IF NOT EXISTS stu(
id INT,
phone_number VARCHAR(20) UNIQUE
);
删除唯一约束
alter table stu DROP INDEX phone_number;
ALTER TABLE 表名 DROP INDEX 列名;
表创建完添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
4)外键约束 foreign key
在创建表时可以添加外键P55