MySQL学习笔记(一)
一、简介及基本SQL语句
1. 简介
MySQL是关系型数据库(RDBMS),建立在关系模型的基础上,由多张连接的二维表组成。
2.Sql
sql是操作MySQL数据库的语言,可以在Mysql的command line终端或 Windows cmd或可视化图形ide中使用,在cmd中使用时使用mysql -u root -p
命令,-u指用户名,-p指使用密码登录,这里root为用户名。
在cmd中使用时,注意MySQL的版本,如果有些语句比如:SELECT DATABASES;
语句,在某些版本中使用时需要大写,不要忘记加;号,因为sql语句是以;为结尾。
- 数据库操作:
/**创建**/
create database name;
create database if exist name; --如果存在即不创建,name为数据库的名字
/**查询**/
-- 查询所有数据库:
show databases;
-- 查询当前数据库
select database(); -- 注意有 ()
/**删除**/
drop database name;
/**使用**/
use name; --name为数据库名
- 表操作:
/**创建**/
create table name(
id int,
name varchar(10)
);
表的创建至少需要包含一个字段
/**查询**/
-- 查询所有表:
show tables;
-- 查询表结构
desc name; --name为表名
-- 查询建表时详细信息:
show create table name;
-- 查询当前数据库
select database(); -- 注意有 ()
/**删除**/
drop table name;
/**修改**/
-- 表的修改是在同一个语法的基础上使用不同的关键字对表进行操作
-- 添加字段
alter table name add id int;
-- 删除字段
alter table name drop id int;
-- 修改字段类型
alter table name modify id tinyint;
-- 修改字段名和字段类型
alter table name change name_old name_new varchar(10); -- name_old是原名,name_new varchar(10)是新名及其类型
/**表的重命名**/
alter table name rename to name_new;
可以看到表操作中修改时的语法需要关键字alter table
+表名再加上不同的关键字即可,所以需要记住不同关键字带来的不同效果。
-
DML:数据操作语言,对表中的数据进行操作
上面的DDL语言是对数据库或表的结构进行操作,而不是对内部的数据操作,DML才是对表内数据操作的sql语句- 添加数据
第一种是给表种所有字段添加一条数据,-- 创建一个table create table user( id int, name varchar(10) ); -- 添加数据 insert into user values (1,'小明'); --第一种 insert into user(id,name) values(2,'小红'); -- 第二种 insert into user values (3,'小白') , (4,'小黑'); --第三种
value()
中的数据需要根据表中字段的顺序键入。
第二种是给表中指定字段添加数据。
第三种是一次添加多条数据,以,分隔。 - 修改数据
update user set id = 0; --改变表中所有id的值 update user set id = 0 where name = '小黑' -- 只改变小黑的id
where
关键字涉及到条件判断,相当于c++中的if语句。
当然修改数据也可以一次操作多个字段,同样用,分隔。 - 删除数据
delete from user; -- 删除所有数据,清空 truncate table user; -- 这个sql语句可以实现上述一样的效果,但是实际过程是先将表drop掉,然后再重新创建一个空的user表
- 添加数据
-
DQL:数据查询语言,查询表中的数据
- 基本查询
查询的关键字为select
-- 创建一个table并insert数据 create table user(id int,name varchar(10)); insert into user values (1,'小明') , (2,'小红') , (3,'小白') , (4,'小黑'); -- 查询 select * from user; -- 查询表中所有数据并显示 select id from user; -- 查询id字段的数据 select distinct id from user; -- 去重查询,查询结果会过滤重复的数据,上述user表中id并没有重复的数据,所以查询结果相同
*
在sql语句中可以理解为一个对象的所有内容,第一条语句中的*
也可以使用user.*
表示,这样更容易理解,表示为user表的所有内容。当然因为select ... from user
已经说明需要查询的数据是用user中来的,所以直接使用*
即可。 - 条件查询
条件查询即在查询语句的后面加上关键字where
,与上面修改数据时是一个道理。select * from user where id = 4;```
- 分组查询
分组查询即在查询语句后加上关键字group by
,分组查询还有一个关键字having
。
原表:-- 为user table添加一个gender字段 alter table user add gender char; select gender from user group by gender; -- 以gender为组查询,查询的结果会显示表中所有gender包含的数据
group by 关键字查询的表:
搭配聚合函数count()
使用,可以统计出被分组的字段在表中的个数
查询结果:select gender , count(*) from user group by gender ;
- 排序查询
排序查询的关键字是order by
这样查询结果就是按照age排序,对varchar以及char类型的字段也可以排序,比如对于英文字母根据其ASCII排序。-- 增加age字段 alter table user add age int; select * from user order by age; -- 查询顺序 select * from user order by age asc; -- 正序,asc可省略 select * from user order by age desc -- 倒序 -- 添加第二字段,当第一字段相等时,,根据第二字段排序,使用,分隔 select * from user order by age , gender;
- 分页查询
分页查询的关键字是limit
当表中数据很多时,可以限制每次查询出现的条目。select * from user limit 10;
- 基本查询
-
DCL:数据控制语言:创建DB用户,控制DB的权限
因为对数据库的用户和权限操作比较少,所以不多赘述。 -
总结
sql语句灵活多变,另外还有注释comment
和别名as
的用法,包括在建表时可以给字段加上key使其有特殊的功能或意义,条件查询中也有些sql语句特有的语法比如between ... and ...
,in(...)
,like
等,还有一些聚合函数可以用在表查询语句中得到一些类似数据统计的结果。
总的来说sql语句的语法语义明确,记住一些操作的框架再将框架中填入相应的内容完成对数据库、表和数据的操作。
二、函数
源自黑马程序员的MySQL教程,多用才能记住。