MySQL
服务启动
cmd->net start mysql 启动MySQL服务
cmd->net stop mysql 关闭MySQL服务
mysql -uroot -p登陆MySQL
mysql -h(需要登录的mysql ip地址) -uroot -p连接目标的密码
exit 退出登陆
SQL
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
通用语法
show databases 查询数据库名称
DDL 操作数据库、表
DQL 查询数据
DML 增删改数据
DCL
DDL
1.操作数据库:
create database 数据库名称;创建数据库
创建数据库,判断不存在,再创建:
create database if not exists 数据库名称;
创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
create database if not exists db4 character set gbk;
show databases;查询所有数据库的名称:
查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
修改数据库字符集:
alter database 数据库名称 character set 字符集名称
drop database 数据库名称 ;删除数据库
drop database if exists 数据库名称;判断数据库存在后再删除数据库
select database(); 查询正在使用的数据库名称
use 数据库名称; 使用数据库
2.操作表(table)
创建表:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);
注意:最后一列不加逗号(,)
复制表:create table 表名 like 被复制的表名
数据库类型:
int:整数类型
double: 小数类型
date: 日期 只包含年月日yyyy-MM-dd
datetime: 日期包含年月日时分秒 yyyy-MM-dd HH:mm:ss
varchar: 字符串
name varchar(20); 20为限制长度为20个字符
修改表名:
alter table 表名 rename to 新的表名;
修改表的字符集:
alter table 表名 character set 字符集名称
添加一列:
alter table 表名 add 列名 数据类型
修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型
alter table 表名 modify 列名 新数据类型
删除列
alter table 表名 drop 列名
drop table 表名;删除表
drop table if exists 表名; 表存在就删除表
show tables 查询数据库中所有表的名称
desc 表名; 查询表结构
DML:增删改表中的数据
添加数据
insert into 表名(列名1,列名2,...列名n) values(值1, 值2, ...值n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,...值n);
3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
分组查询
语法:group by 分组字段
where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
例子:按照性别分组。分别查询男、女同学的平均分
SELECT 列名 , AVG(math) FROM 表名 GROUP BY 列名;
按照性别分组。分别查询男、女同学的平均分,人数
要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM 表名 WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
约束:
对表中的数据进行限定,保证数据的正确性、有效性和完整性。
primary key; 主键约束,非空且唯一
not null; 非空约束
unique; 唯一约束
foreign key; 外键约束
添加非空约束:
列名 VARCHAR(20) NOT NULL
ALTER TABLE 表名 MODIFY 列名 VARCHAR(20) NOT NULL;
删除非空约束:
ALTER TABLE stu MODIFY 列名 VARCHAR(20);
添加唯一约束:
列名 VARCHAR(20) UNIQUE
ALTER TABLE 表名 MODIFY 列名 VARCHAR(20) UNIQUE;
删除唯一约束:
ALTER TABLE 表名 DROP INDEX 列名;
添加主键约束:
一张表只能有一个,一般加在ID值上
id int primary key,
ALTER TABLE 表名 MODIFY 列名 INT PRIMARY KEY;
删除主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY;
auto_increment; 自动增长,一般在主键约束后面配合使用
建表时和主键约束一起添加:
id int primary key auto_increment,
添加自动增长:
ALTER TABLE 表名 MODIFY 列名 INT AUTO_INCREMENT;
删除自动增长:
ALTER TABLE 表名 MODIFY id INT;
外键约束:
foreign key,让表于表产生关系,从而保证数据的正确性。