mysql学习笔记-基础篇
in 数据库 with 0 comment

mysql学习笔记-基础篇

in 数据库 with 0 comment

主流数据库介绍

MySQL开源、免费,多操作系统支持。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。09年Oracle收购了Sun和MySQL。MySQL体积小、速度快、占用资源少,但是安全性、功能性一般。

Oracle开发,收费较高。性能、功能性、安全性较强,多操作系统支持。官方提供技术维护。操作难度较高。

易用性较强,性价比较高。开放性、安全性一般。


MySQL入门

安装教程


基础术语

0921.jpg


登录:


SQL 语句分类


DDL库/表结构操作

创建数据库

查看数据库

 SHOW DATABASES;
show create database 数据库名;

修改数据库

ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;

删除数据库

DROP DATABASE 数据库名;

使用数据库

SELECT DATABASE();  (单数,接括号)
USE 数据库名;

创建表

CREATE TABLE 表名(
	字段名1 字段类型1,
	字段名2 字段类型2
);
注意:
每行结尾为逗号,最后一个字段类型不加逗号,最后一行是); 字符串类型要加(指定字节数)
int整型
float, double浮点型
char, varchar字符串型,
date日期类型, 格式为年月日: yyyy-MM-dd
create table 新表 like 旧表;

查看表

USE 数据库名;
SHOW TABLES;
DESC  表名;
show create table 表名;

删除表

drop table 表名;
drop table if exists 表名;

修改表

alter table 表名 add 字段名 字段类型;
alter table 表名 modify 列名 新类型;
alter table 表名 change 旧列名 新列名 新列类型;
alter table 表名 drop 列名;
rename table 表名 to 新表名;
alter table 表名 character set 字符集;

DML表数据增删改操作

添加记录

insert into 表名 (字段名1,字段名2...字段名n) values (值1,值2...值n);
或者:
insert into 表名 values (值1,值2...值n);
insert into 表名 (字段名1,字段名2) values (值1,值2);
未说明的记录会自动以null代替

注意:

值的类型, 大小范围应该符合要求, 字符和日期型数据应包含在单引号中。MySQL
中也可以使用双引号做为分隔符。

DOS乱码

蠕虫复制

将一张表中的数据复制到另一张表中

insert into 表1 select * from 表1;
insert into 表1 select 列名1,列名2... from 表1;

更新记录

update 表名 set 字段名=值;
update 表名 set 字段名=值 where 字段名=值;

删除记录

delete from 表名;
delete from 表名 where 字段名=值;
truncate table 表名;

truncate 和delete区别:

从效果上来看:truncate是删除整个表,然后重构整个表。delete只是删除逐条删除没一条数据。

从空间上来看:delete会产生碎片,并不会释放空间,而truncate不会产生碎片。

从事务的角度:truncate不可以回滚,delete可以回滚。

DQL查询表数据

简单查询

select * from 表名;
select 列名1,列名2...列名n from 表名;

指定别名进行查询

以自己想要的别名显示,不会对真实的列名造成影响

select 字段名1 as 别名1,字段名2 as 别名2... from 表名;
select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名;

别名字符不用加引号.

清除重复值

select distinct 字段名 from 表名;

查询结果参与运算

SELECT 列名1 + 固定值 FROM 表名;
SELECT 列名1 + 列名2 FROM 表名;

注意: 参与运算的必须是数值类型.

条件查询

select 字段名 from 表名 where 条件;
>、<、<=、>=、=、<><>在SQL 中表示不等于,在mysql 中也可以使用!=, 没有==
BETWEEN...AND在一个范围之内,如:between 100 and 200 相当于条件在100到200之间,包头又包尾
IN(集合)集合表示多个值,使用逗号分隔
LIKE '张%'模糊查询
IS NULL查询某一列为NULL 的值,注:不能写=NULL
and 或 &&与,前者使用较多
or 或 ||
not 或 !

例如:

select * from student where math >120 and English > 110;

select 字段名 from 表名 where 某字段 in(值1,值2...值n);

例如:

select * from student3 where id not in(1,3,5,7);

where后是查询指定字段的条件

select 字段名 from 表名 where 某字段 between 值1 and 值2;
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

例如:
查询姓名中包含'钟'字的学生
select * from student where name like '%钟%';
查询姓王,且姓名有两个字的学生
select * from student where name like '王_';