一、SQL注意点:
1. 每条SQL必须使用;结束
2. 单行注释:-- 注释内容(--后面必须加空格)
3. 多行注释:/*注释内容*/
4. Ctrl+R:运行SQL语句
5. Ctrl+Shfit+R:运行当前选中的SQL语句
二、利用sql语句创建数据库
CREATE DATABASE db_name;
-- 创建数据库
-- 因为创建的只有一个数据库,所以database是单数
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SHOW DATABASES;
-- 显示所有数据库
-- 因为显示出的是所有数据库,所以database是复数
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DROP DATABASE db_name;
-- 删除数据库
-- delete只是清数据,表或者数据库还在
-- drop是直接删除表或者数据库
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
USE myschool;
-- 切换数据库
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#如果数据库已经存在的情况下,重复执行创建代码,会报错
-- 所以,在创建之前,一般需要做判断:
if exists(select *from sysobjects where name='#table_1')
drop table #table_1
create table #table_1(
id varchar(50),
oo int,
bb varchar(50)
);
--上面的语句意思:如果查询框里sysobjects这个系统表里存#table_1这个临时表的话
--就用第2行语句删除,然后再执行下面的创建表语句建表
三、创建表
1.建表
create table 表名
(
字段名1 数据类型1 约束1,
字段名2 数据类型2 约束2
);
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.删除表
drop table if exists 表名;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.查看表结构
desc 表名;
四、创建约束(没有检查约束)
1.主键:primary key
2.外键:foreign key(字段) references 主表(主键)
3.非空:not null、null
4.默认:default
5.标识列:auto_increment
6.唯一:unique
五、操作表
1.复制表结构
create table 表名
like 源表;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.复制表的结构和数据
create table 表名
select * from 源表;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.修改表名
alter table 旧表名 rename 新表名;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.删除表
drop table 表名;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.删除表字段
alter table 表名 drop 字段;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6.增加表字段
alter table 表名 add 字段 数据类型 约束;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7.修改字段
--修改字段名和数据类型
alter table 表名 change 旧字段名 新字段名 新数据类型;
--只修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
六、数据的增删改查
增加数据
1. 增加单行记录
insert into 表名 values(字段1,字段2);
注意:
如果需要使用自动增长列,用default关键字来表示
如果添加的数据中包含外键值,必须先确定关联的主键表的主键列已存在此值
2. 增加多行记录
insert into 表名 values
(字段1,字段2),
(字段1,字段2),
(字段1,字段2);
3. 从源表中插入数据
insert into 目标表名[(字段列表1)]
select (字段列表2) from 源表 where 条件表达式
注意:字段列表1与字段列表2的字段个数必须相同,且对应字段的数据类型尽量保持一致
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
修改数据
update 表名 set 字段1=修改的值,字段2=修改的值 where 条件
注意:where子句指定了表中的哪些记录需要修改。若省略了where子句,则表示修改表中的所有记录
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
删除数据
delete from 表名 where 条件
truncate 表名
注意:使用truncate table清空表记录,会重新设置自增型字段的计数器
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
select查询
1.查询语法
select 字段列表
from 表名
where 分组前条件
group by 分组字段
having 分组后条件
order by 排序字段 [ asc | desc ]
limit [开始下标,] 长度;
2.基本查询
select 列名 as 别名 from 表名
使用以下几种方式指定字段列表
* :全部字段
表名.* :多表查询时,指定某个表的全部字段
列名:指定所需要显示的列名
注意:mysql中,起别名的时候可以省略as
select 列名 别名 from 表名
3.谓词
3.1 distinct:去除重复数据(sqlserver也有这个关键字)
Select distinct 列名 from 表;
注意:
* 查询列中不能包含多个distinct语句,
* 查询时最好只查询一个列,否则distinct会没有效果
3.2 limit:查询指定的行
Select 列列表 from 表 limit [start,] length;
start表示从第几行记录开始检索,length表示检索多少行记录。表中第一行记录的start值为0。
比如:
-- 查询前3行数据
select * from customers limit 3;
-- 查询第4-6行数据
select * from customers limit 3,3;
注意:
* MySQL中没有TOP语句,而是使用limit谓词
* Limit语句作为查询的最后内容,是放在where和order by后面的
4. from关键字
4.1 查询一张表
select 列名 from 表名
4.2 内联
select * from AA表 [inner] join BB表 on 2表的连接条件
查询在两张表中都出现了的数据
4.3 外连接
select * from AA表 left join BB表 on 2表的连接条件
依托AA表进行查询,如果AA表中存在但是BB表中不存在,则AA表对应的BB表的数据为null,右联接则相反
5.where条件
5.1比较运算符
=(等于)
>(大于)
>=(大于等于)
<(小于)
<=(小于等于)
<>(不等于)
!=(不等于)
!<(不小于)
!>(不大于)
5.2 Null比较
is null 和 is not null
5.3 逻辑运算符
and 、or、between … and ….
[not] in (值,值,值)
5.4 模糊查询:like
6.order by排序
desc 降序
asc 升序
注意:可以对多个列进行排序,不是同时对多个列进行排序,在第一个排序列的数据相同的情况下,再使用第二个排序列进行排序
7.group by 分组
根据字段进行分组再合并每组的数据
Group_concat()
在分组时,使用group_concat(列名)函数,可以将此组中指定列的所有值使用逗号拼接并显示
8.Union:将多个结果集合并成一个
select 字段列表1 from 表1
Union
Select 字段列表2 from 表2
注意:
* 2个表查询的字段列表要求个数和数据类型都必须一致
* 合并结果时会去掉重复的数据