一、数据库
1.1 数据库的概念
存储数据的仓库
1.2 黑窗口登录mysql
cmd–>mysql -uroot -p密码
1.3 启动,停止mysql服务(系统后台进程)
- 启动服务: net start mysql
- 停止服务: net stop mysql
1.4 黑窗口修改mysql密码步骤
- 停止mysql服务,运行输入services.msc停止mysql服务
- 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
- 新打开cmd 输入mysql -u root -p 不需要密码 use mysql;
update user set password=password(‘abc’) WHERE User=‘root’; - 关闭两个cmd窗口 在任务管理器结束mysqld 进程
- 在服务管理页面 重启mysql 服务
二、sql语言
2.1 概念
通过sql语言可以操作所有的关系型数据库每种数据库之间存在差异,称为”方言"。
2.2 sql分类
- DDL(Data Definition Language)
数据定义语言,用来定义数据库对象:库、表、列等; - DML(Data Manipulation Language)
数据操作语言,用来定义数据库记录(增、删、改); - DCL(Data Control Language)
数据控制语言,用来定义访问权限和安全级别; - DQL(Data Query Language)
数据查询语言,用来查询记录(数据);
三、DDL语句
3.1 操作数据库
3.1.1 创建数据库
create database 数据库名;
3.1.2 删除数据库
drop database 数据库名;
3.1.3 修改数据库
Alter database 数据库名 character set 要修改的字符集名称
3.1.4 查询所有的数据库
show databases;
3.1.5 查询创建数据库语句
show create database 数据库名称;
SHOW CREATE DATABASE apple;
结果:
3.2 操作数据表
3.2.1 列的数据类型
- int : 整型
- double 浮点型
- char 固定长度字符串
- varchar 可变长度字符串
- text 字符串类型:存大格式的文本 如:小说
- blob 字节类型
- :存字节类型的数据
- date 日期类型,格式为:yyyy-mm-dd
- time 时间类型 格式为:hh:mm:ss
- datetime 日期时间类型 yyyy-mm-dd hh:mm:ss
- timestamp 时间戳类型 yyyy-mm-dd hh:mm:ss( 如果该类型的字段不给赋值,则默认当前时间
3.2.2 创建数据表的格式
create table 表名(
列名1 类型1,
列名2 类型2,
…
列名n 类型n
);
3.2.3 删除数据表
drop table 表名
3.3.4 修改数据表
- 添加列
Alter table 表名 ADD(列名 列类型),
ALTER TABLE works_on ADD(age INT);
- 修改列类型
Alter table 表名 modify 列名 新的列类型
ALTER TABLE works_on MODIFY age CHAR(4);
- 修改列名
Alter table 表名 change 旧列名 新列名 新的列类型
ALTER TABLE works_on CHANGE age age2 CHAR(3);
- 删除列
Alter table 表名 drop 列名
ALTER TABLE works_on DROP age2;
- 需改表名称
Alter table 旧表名 rename to 新表明
ALTER TABLE works_on RENAME TO works_off;
四、DML语句
4.1.1 DML语句的功能
对表中的数据进行操作
4.1.2 增加表中数据
insert into 表名(列名1,列名2…)values(值1,值2…)
insert into works_off values(12,'a','as','2013-02-21 12:21:21');
4.1.3 注意
如果对标准的一列的所有值都增加,则可以忽略列名
4.1.4 删除表中数据
delete from 表名(where 条件)
truncate table 表名 (删除所有记录)(先删除表,再
delete from works_off where emp_no = 12;
创建表)
TRUNCATE TABLE works_off;
4.1.5 修改表中数据
update 表名 set 列名1 = 值1, 列名2 = 值 2…[where条件]
UPDATE works_on SET emp_no = 23 WHERE emp_no = 9031;
五、DQL查询语句
5.1 语法
- select 列名 from 表名 where 条件
SELECT * FROM works_on;
- group by
对结果进行分组
SELECT * FROM works_on GROUP BY job;
- having
分组后进行筛选
SELECT * FROM works_on GROUP BY job HAVING job = 'clerk';
- order by
对结果进行排序
ASC默认升序
DESC降序
SELECT * FROM works_on GROUP BY job ORDER BY emp_no;
结果:
- limit
对结果进行限定,比如限制输出数据的行数
SELECT * FROM works_on GROUP BY job ORDER BY emp_no LIMIT 0,2;
5.2 条件查询
-
between…and
结果在xx与xx之间 -
in(Set)
结果在某个值的集合中 -
is null
用来判断结果是否为空 -
is Not null
不为空 -
and
并且 -
or
或者 -
not
取反
5.3 模糊查寻 like
-
“%”
匹配多个任意字符 -
“_”
匹配单个任意字符
5.4 字段控制
5.4.1 修改字段的别名 AS
- 给字段起别名
如 select name as 姓名…
SELECT job AS 工作 FROM works_on;
-
给运算字段起别名
如 select (工资+奖金)as 总收入… -
给表起别名
如:select stu.name, stu.age from student as stu;
SELECT job AS 工作 FROM works_on;
5.4.2 字段运算
- null 参与的运算,结果都为null
- ifnull(字段名称,替换值)
如果字段值为null,则用替换值替换。
SELECT (emp_no + IFNULL(comm,0)) AS 总数据 FROM works_on;
5.4.3 去除重复记录
distinct
SELECT DISTINCT job FROM works_on;
5.5 聚合函数
- count
统计某一列符合条件要求的值的个数
SELECT COUNT(job) AS 职员数量 FROM works_on WHERE job = 'clerk';
- MAX
计算指定列的最大值
SELECT MAX(emp_no) FROM works_on;
- MIN
计算指定列的最小值
SELECT MIN(emp_no) FROM works_on;
- AVG
计算指定列的平均值
select avg(emp_no) from works_on;
5.6 分页查询 limit
-
limit n,m
-
n是开始记录的索引
-
m是每一页要显示的信息条数
-
n = (页码-1)*m
-
oracle: rownum 分页方言
-
sqlserver :top 分页方言