MySql数据库笔记
1.卸载:
1.停止mysql服务
2.进入控制面板->卸载
3.进入program files目录删除->mysql子目录(安装的参与文件)
4.进入programData目录(默认隐藏)删除mysql子目录->(数据文件所在目录)
2.Mysql基本命令:
从控制台进入数据库,并对其进行操作在安装(在安装数据库时设置的账号:root
密码:123456)
登录到mysql命令行客户端(cmd) :mysql -h localhost -uroot -p123456
修改密码(cmd) :mysqladmin -uroot -p123456 password root
在系统命令行中创建数据库实例 :mysqladmin -uroot -proot create mydb
在系统命令行中删除数据库实例 :mysqladmin -uroot -proot drop mydb
显示mysql数据库的实例 :show databases;
创建新的数据库实例:create database mydb;
使用实例:use mydb;
显示实例中的所有表:show tables;
查看指定表结构:desc user;
从mysql命令行客户端退出:exit/quit
放弃正在输入的命令,进入下一次输入:\c[lear]
打开命令列表:\h[elp]
3.SQL语句入门:
DDL语句(数据定义语句)
创建表,删除表,修改表结构都称之为DDL;一般包含这些命令:create、drop、alter、change、modify、add等。
创建一张表:
create table student( sno int, sname varchar(10), age int, sex char(2) );
向表中新增列(向表student中新增一个birth列,类型为date):alter table student add birth date;
删除列(删除表student中的age列):alter table student drop age;
修改表名称:rename table student to tb_stu;
修改列名称:alter table stu change birth birthday date;
修改列类型:alter table product modify price decimal(7,2);
向表中的指定字段添加约束:alter table stu add constraint primary key(sno);
删除表:drop table stu;
DML语句(数据操作语句)
新增数据,删除数据,修改数据,查询数据;包含的命令有: insert、delete、update、select等。
添加数据到表中:insert into 表名称(列名...) values(值...)
向所有列插入值:insert into emp values(1001,'易大师',3500.06,'2018-10-01');
向指定列插入值:insert into emp(ename,sal,hiredate) values('马尔咋哈',8500.09,now());
向表中一次性插入多行记录
insert into emp(ename,sal,hiredate) values('波比',4398.67,'2018-12-12'), ('艾希',9566.8,'2017-11-11'), ('墨菲特',4300,'2019-01-22');
查询所有数据:select 列名 from 表名称 [附加条件],例:select * from emp;
修改表数据:update 表名称 set 列名1=新值1,列名2,=新值2... where 条件,例:update emp set sal=3501.06 where eno=1001;
删除记录:delete from 表名称 where 条件,例:delete from emp where eno=1003;
DCL语句(数据控制语句)
数据控制语句,一般由数据库管理员(DBA),使用这些命令,操作数据库相关的权限,比如授权,解除权限,常见命令有: grant、revoke等
4.Mysql数据类型:
数值类型
类型名称 | 长度 |
---|---|
bit | 1bit |
tinyint | 1字节 |
smallint | 2字节 |
mediumint | 3字节 |
int | 4字节 |
bigint | 8字节 |
float | 4字节 |
double | 8字节 |
decimal(m,n) | m个字节,小数点有n位 |
auto_increment
设置列自动递增,一般只能对标识列(主键列)设置,并且必须是整数型类型。
unsigned
设置列为无符号列,即列值不允许为负数
zerofill
设置前导填充,当数值长度未达到定义长度时,前面补零填充宽度
字符串类型
类型名 | 描述 |
---|---|
char(m) | 定长字符串 |
varchar(m) | 可变长度字符串 |
tinyblob | 二进制大对象 |
smallblob | 二进制大对象 |
mediumblob | 二进制大对象 |
longblob | 二进制大对象(2G) |
tinytext | 大文本对象 |
smalltext | 大文本对象 |
mediumtext | 大文本对象 |
longtext | 大文本对象(2G) |
enum | 枚举(只能从枚举中选择一个作为值) |
set | 集合(功能同上,只能包含64个元素) |
char和varchar的区别:
char:是一个定长字符串,取值范围是0~255之间(根据数据库的编码来决定),一旦使用char类型定义列,则在添加数据时无论数据的实际大小是多大,始终会见申请的空间占满,不够使用空格填充。因此char类型一般用于长度确定的数据列(比如:手机号,性别,身份证号等)。
varchar:是一个可变长度的字符串,取值范围是0~65535之间(根据数据库的编码来决定),在定义字符串列时,如果使用varchar,则在添加数据到列中时,系统会自动根据添加的数据长度申请空间,因此从存储角度来说varchar更节省空间,效率实际低于char;因此varchar一般用于长度不确定的字符串列
字符串类型占据的空间跟编码有关。UTF-8占据3个字节,GBK占据2字节
日期类型
类型名 | 描述 |
---|---|
time | 表示时间(3字节) |
date | 表示日期(3字节) |
datetime | 表示日期时间(8字节) |
timestamp | 时间戳(精确时间)(4字节) |
year | 表示年(1字节) |
使用timestamp类型时,可以指定默认值为CURRENT_TIMESTAMP,但是一张表中只允许一个timestamp列的默认值为CURRENT_TIMESTAMP.
5.mysql之SQL查询:
单表查询:select * from ...
范围:> 、 < 、>=、<= ; between x and y ; and :并且 ;or:或者
指定字段名查询:select * from ... *:表示所有字段 若要显示指定的字段,则可将*用字段名代替,多个字段名用逗号隔开
别名
as:用于查询时给字段或者表起别名,别名只在当前这次查询有效(as可以省略不写) select name as 姓名,salary as 工资 from emp;
排序:order by默认为升序排序(asc表示升序,可以不写) ;select * from emp order by salary; desc(表示降序排序 );select * from emp order by salary desc;
分组:group by;每一组只会显示其中一条记录 select * from emp group by dept_id;
having:与group by结合使用,用于将分组后的结果进一步过滤;having后面可以使用聚合函数
limit(可用于分页)
limit[m,n]:limit可以限制查询后的返回记录数目
limit m : 表示查询的结果从第一条开始,返回m条记录:select * from emp where id <15 limit 5;
limit m,n : 表示查询的结果从偏移量(偏移量从0开始)为m的开始,往后偏移n条记录:select * from emp where id <15 limit 3,5;
like 模糊查询
%:是一个通配符,表示匹配人意长度的字符串
_:通配符,匹配长度为1的任意字符
'a%':以a开头,后面任意字符;
'%a':任意长度字符开头,以a结尾;
'%a%':任意长度字符开头和结尾,中间为a.
聚合函数:聚合函数是mysql中内置的一些函数,可以对结果进行相应的处理
count(*) : 可以获取查询的结果记录条数
max() : 获取最大值
min() : 获取最小值
avg():获取平均值
sum() : 指定字段求和