1.MySQL数据库是关系型数据库:
主要是用来描述实体与实体之间关系。
E-R关系图:
实体:方框
属性:椭圆
关系:菱形
2.MySQL的SQL语句
SQL: Structure Query Language结构化查询语言
DDL:数据定义语言:定义数据库,数据表它们的结构: create(创建) drop(删除) alter(修改)
DML:数据操纵语言:主要是用来操作数据insert插入) update(修改) delete(删除)
DCL:数据控制语言:定义访问权限, 取消访问权限,安全设置 grant
DQL:数据查询语言: selec(查询) from子句where子句
3.Mysql启动失败的解决办法
mysql的这个报错的原因是mysql服务没有正确启动就是mysqld这个程序。
mysql要想运行需要mysql和mysqld两个都启动才行。
启动成功:
4.数据库的CRUD操作
1.CMD命令行的操作:
登陆Mysql: mysql -uroot -proot(要首先启动了mysql服务,见3的错误)
2.数据库的创建
语法1:create database 数据库名称;
create database stu;
语法2:create database 数据库名称 character set 字符集;
create database stu character set utf-8;
语法3:create database 数据库名称 character set 字符集
collate 校对规则;
create database stu character set utf-8 collate utf-8bin;
3.数据库的查看:
show databases;
information_schema
performance_schema
mysql
这三个数据库包含了安装数据的一些信息,是自带的,不要对这些数据进行操作;
show create database 数据库的名称;
查看数据库创建的语句;
4.修改数据库的操作
语法:alter database 数据的名称 character set 字符集;
alter database stu character set gbk;
字符编码方式已经修改:
5.数据库的删除
语法:drop database 数据库的名称;
drop database test;
6.查看当前使用的数据库
select database();
7.切换数据库
语法:use 数据库的名称;
use student;
5.表的CRUD操作
1.创建表
创建表的时候列不能为空,至少要有一列;
语法:
create table 表名{
列名1 列的类型(长度) 约束,
列名2 列的类型(长度) 约束
};
列的类型与java进行比较有区别的地方:
java sql
char/string char/varchar
char:固定长度
varchar:可变长度
char(3): 你 你空格空格
varchar(3):你 你
长度代表的是字符的个数
data data:YYYY-MM-DD
time:hh:mm:ss
datatime:YYYY-MM-DD hh:mm:ss 默认是null
timestamp:YYYY-MM-DD hh:mm:ss 默认使用当前时间
text:存放文本
blob:存放二进制数
**约束:**
主键约束:primary key
唯一约束:unipue
非空约束:not null
创建学生表 t_stu
1.分析实体:学生
2.学号:sid
3.姓名:sname
4.性别:sex
5.年龄:sage
create table t_stu(
sid int primary key,
sname varchar(20),
sex varchar(10),
sage int
);
使用常见错误:
cmd中创建过程使用的是括号,不要使用{}<>这些。
2.查看表
(1)查看所有的表
show tables;
(2).查看表的创建过程:
show create table 表名;
show create table t_stu;
(3).查看表的结构
desc 表名;
desc t_stu;
3.修改表
添加列(add),修改列(modify),修改列名(change),删除列(drop),修改表名(rename),修改表的字符集
(1)添加列add
alter table 表名 add 新增列名 列的类型 约束;
alter table t_stu add sex varchar;
(2)修改列modify
修改类型:
alter table 表名 modify 列名 类型();
alter table t_stu modify sex varchar(2) not null;
(3)修改列名change
alter table 表名 change 要修改的列名 新的列名 列的类型;
alter table t_stu change sex gender varchar(2) ;
(4)删除列drop
语法:
alter table 表名 drop 列名;
alter table t_stu drop gender;
(5)修改表名rename
语法:
rename table 要修改的表名 to 新的表名;
rename table t_stu to tstu1;
(6)修改表的字符集
alter table 表名 character set 字符集;
alter table t_stu1 character set utf-8;
3.删除表
语法:
drop table 表名;
drop table t_stu;
6.SQL对表中数据的CRUD操作
1.插入数据
语法1:
insert into 表名 (列名1,列名2,列名3) values(值1,值2,值3);
insert into t_stu1(sid,age) values(1,23);
语法2:
insert into 表名 values(值1,值2,值3);
insert into t_stu1 values(1,23);
语法3:
批量插入:
insert into 表名 values(2,24),(3,25),(4,26);
批量插入:
2.查看表中的数据
select * from 表名;
select *from t_stu1;
查看t_stu1表中的所有的数据;
3.删除表中的数据
语法 :
delete from 表名 where 条件;
delete from 表名;删除表中的所有数据
delete from t_stu1 where sid=1;
delete 删除数据和truncate 删除数据有什么差别
delete: DML 一条一条删除表中的数据,
truncate: DDL 先删除表再重建表,
关于哪条执行效率高:具体要看表中的数据量
如果数据比较少,delete比较高效
如果是数据比较多, truncate比较高效
4.更新表中的数据
语法:
update 表名 set 列名=值,列名=值 where 条件;
update t_stu1 set age =66 where sid=2;
5.查询表中的数据
select [distinct] [*] [列名1,列名2] from 表名 [where 条件]
distinct:去除重复的数据
别名查询:as可以省略
表别名:select s.age,s.sid from t_stu1 as s;(主要用在多表查询中)
列别名:select age as 年龄,sid 编号 from t_stu1;(主要用在多表查询中)
distinct:去掉重复的值进行查询:
select的运算查询:
select ,age1.5 from t_stu1;
条件查询:
select age from t_stu1 where age>60;
like:模糊查询
-:代表的是一个字符
%:代表的是多个字符
select * from t_stu1 where age like ‘%6%’;
in:在某个范围内获取值
查询sid的(2,4)的项
select * from t_stu1 where sid in(2,4);
排序查询: order by关键字
asc: ascend 升序(默认的排序方式)
desc : descend 降序
select * from t_stu1 order by age asc;
聚合函数:
sum() :求和
avg() :求平均值
count() :统计数量
max() :最大值
min() :最小值
where条件后面不能接聚合函数:
子查询:进行where后面聚合函数的使用
分组查询:group by
having关键字可以接聚合函数,出现在分组之后
7命令行下插入中文乱码问题
●临时解决方案: set names gbk;,我们当前在命令行下输入的内容是GBK编码.当命令窗口关闭之后,它再输入中文就会存在问题
●永久解决办法:修改my.ini配置(在mysql|软件安装路径里)
。暂停mysq|的服务
。在mysq|安装路径中找到my.in配置文件,将编码改成gbk