1:mysql数据库的安装和使用
1:安装mysql:找个教程安装。
注意里面选择的编码方式,是否可以远程mysql,这两个选项。
2:卸载mysql:
1:控制面板的程式中直接卸载,但是此时没卸载干净。
2:去mysql安装目录下找到my.ini文件
复制出:datadir=“C:/ProgramData/MySql...”。
这是个隐藏文件夹,在路径直接输入C:/ProgramData,删除下面的MySql,这个是数据文件,要删掉。
3:mysql服务启动
可以查看下当前服务:cmd->services.msc 打开服务窗口
net start mysql 启动mysql服务
net stop mysql 关闭mysql服务。
4:mysql登入登出
mysql -uroot -p
mysql -hip -uroot -p密码, 访问其他IP地址的mysql
exit/quit
5:通用语法
分号结尾,不分大小写。
注释:-- 单行注释,# 单行注释。/* */多行注释。
2:数据库的操作
DDL:操作数据库,表,列。create,drop,alter。
DML:增删改表中的数据。insert,delete,update。
DQL:查询。select。
DCL:授权。GRANT,REVOKE。
1:数据库:CRUD
- C:Create:创建
CREATE DATABASE IF NOT EXISTST 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8; - R:Retrieve:查询
1:查询数据库名称
SHOW DATABASES;
1:查询数据库使用的字符集
SHOW CREATE DATABASE 数据库名; - U:Update:修改
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称; - D:Delete:删除
DROP DATABASE IF EXISTS 数据库名称; - 使用数据库,使用后可以对表进行操作。
查询正在使用的数据库:SELECT DATABASE();
USE 数据库名称;
2:数据库表:CRUD
- C:Create:创建
CREATE TABLE 表名称(
列名1 数据类型,
列名2 数据类型,
列名n 数据类型//最后一列没有逗号
);
SQL中的数据类型
INT:整数,
DOUBLE:小数,
DATA:年月日,YYYY-MM-DD,
datatime:年月日时分秒,YYYY-MM-DD HH-mm-ss,
TIMESTAMP:年月日时分秒,YYYY-MM-DD HH-mm-ss,如果没赋值,自动使用系统时间。
VARCHAR:字符串
小栗子:
CREATE TABLE IF NOT EXISTS student(
id int,
name VARCHAR(20),
age int,
score double(4,1),
birthday date,
insert_time timestamp
); - R:Retrieve:查询
1:查询数据库中所有表名称,USE 数据库名称,使用了数据库后。
SHOW TABLES;
2:查询表结构
DESC 表名称; - U:Update:修改
1:修改表名:alter table 表名 rename to 新的表名;
2:修改表的字符集:
show create table 表名;
alter table 表名 character set 字符集名;
3:添加一列:alter table 表名 add 列名 数据类型;
4:修改列名称 类型:alter table 表名 change 老的列名 新的列名 新类型;
5:删除列:alter table 表名 drop 列名; - D:Delete:删除
DROP TABLE IF EXISTS 表名称;
3:表中的记录操作
-
添加数据:
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3);
栗子:INSERT into stu(id,name,age) value (1,‘张无忌’,18);
注意:
- 如果不给列名,默认所有列都添加值。
- 除了数字,其他类型都要添加引号。 -
删除数据:
delete from 表名[where 条件];
栗子:delete from stu where id=1;
注意:
- 如果不添加条件,表中所有记录都被删掉。
- 删除表中所有内容:
1:delete from 表名;
2:推荐使用truncate table 表名;速度更快,删除整个表,并创建一个空表。 -
修改数据:
update 表名 set 列名1=值,列名2=值 [where 条件];
栗子:update stu set name = ‘赵敏’,age=17 where id=1;
update stu set age = 18;如果不添加条件所有的默认都修改。
4:数据库的查询操作
数据库的基础查询
select 字段 from 表名 where 条件 group by 分组字段 having 分组之后的条件 ORDER BY 排序 limit 分页限定。
栗子:
select name,age from stu;
去除重复的结果集:
select DISTINCT name from stu;
完成值得计算
select name,Math,English,Math+English from stu;
如果有null的值,ifnumm(列名,默认值),给一列中如果为空的话。
select name,Math,English,Math+IFNULL(English,0) As total from stu;
使用As起别名,As可以省略。
select name,Math 数学,English 英语,Math+IFNULL(English,0) As 总分 from stu;
数据库的条件查询
运算符:
- >,<,>=,<=,=,<>
- BETWEEN AND
- IN(集合)
- LIKE 模糊查询
,单个任意字符。
%,多个任意字符。
- IS NULL
- AND,&&
- OR,||
- NOT,!
栗子:
SELECT name,age from stu where age !=18; <>也表示不等于
SELECT name,age from stu where age BETWEEN 18 AND 20;
SELECT * from stu where English IS NULL;
模糊查询:
select * from stu where name LIKE ‘张%’;查询张姓的
select * from stu where name LIKE '无%’;查询第二个字是无的
select * from stu where name LIKE '__’; 查询姓名是四个字
select * from stu where name LIKE ‘%张%’;查询姓名中包含张字的
查询高级
- 排序查询:
ORDER BY 排序字段,排序方式。
ASC:升序,默认的。
DESC:降序。
栗子:
先按照math排序,math相同的话按照English排序。
select * from stu ORDER BY math,English DESC;
- 聚合函数:
将一列数据作为一个整体,进行纵向计算。
1:count 计算个数,注意&